openwrt是一个插件式的路由器系统,现在市面上很多路由器都是基于此系统来封装的。对于喜欢研究或者学习的同学,本文介绍了常见windows系统下怎么搭建一个学习的环境。
环境信息
先说下我的环境信息
- AMD R7 低功耗处理器
- win 11 操作系统
- 虚拟化平台:window 自带的hyper-v
如果环境不是以上的,没有参考意义,可以忽略了。
说点题外话,简单说下为啥选择hyper-v,
- 相比起来VMware workstation,或者virtualbox之类的平台,hyper-v是windows自家软件,虽然性能可能有一定折损,但是也基本够用。
- 安装了第三方的虚拟化软件,windows自带的WSL功能受限,极其不方便。
- hyper-v的虚拟化管理功能已经非常完善了,而且动态内存分配,还有存储共享本地磁盘,磁盘精简置备等都能够方便的管理
- hyper-v的磁盘可以直接挂在到windows的磁盘管理器上,方便进行固件刷新,或者文件查看等。
镜像下载
官方地址:https://downloads.openwrt.org/ 不过这个比较慢。推荐国内的镜像站,比如阿里的https://mirrors.aliyun.com/openwrt(这里腾讯的镜像站很多是403)。
根据当前最新的release的版本,选择「23.5.4」, 另外根据处理器的架构,我这里因为是在windows电脑上测试,所以我选择x86架构64位的。
这里说下各种格式的说明
?
combined-ext4.img.gz(rootfs工作区存储格式为ext4。
combined-squashfs.img.gz(squashfs相当于可以恢复出厂设置的固件,如果使用中配置错误,可直接恢复默认设置。)
generic-rootfs.tar.gz(rootfs的镜像,不带引导,可自行定义用grub或者syslinux来引导。)
rootfs-ext4.img.gz(rootfs的镜像,不带引导,可自行定义用grub或者syslinux来引导,需要存储区是ext4。)
rootfs-squashfs.img.gz(rootfs的镜像,不带引导,可自行定义用grub或者syslinux来引导,如果使用中配置错误,可直接恢复默认设置。)
?
如果对linux的内核加载不熟悉,担心麻烦,可以直接选择「squashfs」格式的。
另外还有一个带「EFI」和不带的,主要看你自己的选择,是否选择走EFI启动,不过需要bios相关设置, 在虚拟化场景下,有些可以设置(pve),而我这里用的hyper-v两种都支持,随便选吧。
安装过程
创建虚拟机
- 登录hyper-v的管理页面,右侧选择创建虚拟机
- 选择名称和保存位置这里注意下,默认是保存到c盘,如果自己电脑分区不合理,建议改下。另外根据你本地盘的性能情况,可以选择具体的分区
- 下一步,这里就是一些特性支持了,如果用efi的镜像,选择第二代
- 下一步内存,如果只是学习,直接「512」吧,很多地段商用路由器还达不到。
- 下一步配置网络,这里如果要模拟路由器的Lan口和WAN口,配置创建两个hyper-v下的虚拟机交换机,默认的Defaut Switch是跟随你电脑的网卡自己的,是一个NAT的网络交换机。可以创建一个存内网的交换机,可以叫LAN口,一个桥接的交换机,可以叫wan,默认的可以不用,比如我这里:
然后我虚拟机选择的网络的时候,可以先选择Lan交换机(因为默认安装镜像完成会配置路由器的lan口,完成之后,在手动添加wan口)
- 下一步磁盘信息,名称是签名虚拟机的名称,位置是选择虚拟机的位置带过来的,大小可以自己设置,在op下磁盘空间如果不用很多,可以直接选择2G或者4G都可以,或者不改也行,反正是精简置备的。
- 下一步,系统选择不安装,然后完成创建
至此一个虚拟机就创建完成了。
系统安装
这些需要使用「rufs」这个工具,从这里下载吧,不用安装,下载了直接可以用。
1. 打开磁盘管理 在使用工具之前, 需要先将虚拟机的磁盘挂到你自己的这台windows电脑上。打开windows自带的磁盘管理器:
方法一:按下键盘 win(alt旁边那个窗口) 键,弹出的框里面输入disk man,会看到一个「创建并格式化磁盘分区」
方法二:按下键盘 win(alt旁边那个窗口) 键,点所有应用,往下找到「windows工具」,然后选择「计算机管理」,找到下面的「磁盘管理」
2. 附加vhd文件 然后我们将刚刚创建的虚拟机的磁盘文件附加到这里来进行管理 选择「磁盘管理」,然后「更多操作」,选择「附加vhd」
弹出的对话框选择刚刚创建虚拟机的路径,下面有一个「Virtual Hard Disks」,点进去,然后选择后缀为vhdx的磁盘文件完成之后如下:
这个时候,就可以用rufs写入固件了。
4. 写入固件 打开rufs自动就看到设备,是刚刚我们附加的这个磁盘,下面进行选择刚刚我们下载下来的镜像(下载下来的是tar.gz格式,需要里面的img文件),具体如下
然后选择开始,就等待结束安装就完成了。
4 分离vhd 写入完成之后,会到磁盘管理页面,选择分离vhd,将磁盘从windows下踢出来。
配置openwrt
- 启动openwrt 回到hyper-v管理页面,找到我们创建的虚拟机,然后选中,右键选择「连接」,在打开的页面,选择启动。然后等待openwrt启动成功。
- 配置lan口地址 启动完成,看到lan口地址已经配置完成默认的192.168.1.1 .
这里需要改成你hyper-v的虚拟化交换机的一个段的地址。修改/etc/config/network文件,将其中lan部分的地址,修改成你hyper-v环境的地址。比如我这里10.20.30.6, 修改完成如下:
修改完成,重启network
/etc/init.d/network restart
3.登录openwrtweb页面 浏览器输入管理地址,输入密码password即可登录
登录之后,我们就是我们熟悉的页面了
后续工作
后续就是页面上的操作了。对着提示应该都能操作,主要包括
- 添加wan口
- 修改密码
- 配置opkg的源
- 安装配置使用其他插件。
这里解释下,为什么不先添加wan口,这个固件默认eth0是lan口,eth1是wan口。在虚拟化环境下, 同时添加,不一定能控制网卡顺序,所以我们手动添加。当然你要是熟悉配置,可以一次性把lan和wan都添加上,然后发现不对,再回来改network的配置。
总结
- 采用windows hyper-v, 可以非常方便的模拟各种网络环境,也不用额外的安装虚拟化软件
- 以上方法,「适用所有img格式的系统安装」,比如iStoreOS,或者一些NAS的固件等。
- 对openwrt固件的选择,建议选择官方纯净版,需要什么固件自己去安装。这个过程虽然麻烦,但是都用op了,我觉得应该都是不怕麻烦的。要是确实觉得麻烦,那就用iStoreOS一类的臃肿的固件吧。