起因: 完全是因为想折腾,但没有合适的可刷固件的路由器。所以考虑在虚拟机上安装x86版的OpenWrt,来实验各种功能。这里是2022-11-08新补充的方法,个人认为比较合适,主要是可以用到全部的安装介质空间,可操作的余地较大。
一、准备工作
宿主机可以是 Windows系统安装了VirtualBox,或者是安装了KVM的Linux系统PC。
Puppy Linux的镜像。目前是基于ubuntu22.04构建的9.5版。只有409MB。
二、用VirtualBox或者virt-manager 创建虚拟机。
内存配置2G或以上,虚拟硬盘空间根据自己需要,一般2G差不多了。如果要实验在OpenWrt上装docker或者套娃其他KVM虚拟机,则内存和虚拟硬盘尽量大一些。
三、在虚拟机的光驱上挂载Puppy Linux镜像并启动。
这是一个非常易用的LiveCD,基本的parted分区工具之类都有,后面扩展OpenWrt空间要用到。
进入Puppy Linux系统,使用里面的浏览器,搜索OpenWrt并下载镜像。 下载的默认存储位置在 /root/Download/中。
打开Puppy Linux系统中的命令行终端,进行操作。
# 如果是用Puppy Linu的浏览器下载的,请进入/root/Download/ 从下面第2条命令开始执行
wget https://downloads.openwrt.org/releases/22.03.2/targets/x86/64/openwrt-22.03.2-x86-64-generic-ext4-combined.img.gz
gunzip openwrt-22.03.2-x86-64-generic-ext4-combined.img.gz
fdisk -l
dd if=openwrt-22.03.2-x86-64-generic-ext4-combined.img of=/dev/sda bs=4M; sync;
parted /dev/sda print
parted /dev/sda resizepart 2 17.2GB #根据上一条命令所显示的sda的总体大小填写
parted /dev/sda print #看一下大小是否调整成功
resize2fs /dev/sda2
四、操作过程截图
五、优点和缺点
相较于这篇文章之前的内容所示方法,该安装过程更为直接,也可以使用VirtualBox挂载实体U盘,对USB存储介质进行直接操作,用到全部的U盘空间。
注意!U盘不要在虚拟机上启动,制作完,直接拔掉,插到要作为OpenWRT服务器的PC上进行首次启动。
比较麻烦的是,在使用虚拟机套娃安装KVM虚拟机时,有可能会出现 virt-manager鼠标发飘的问题。需要用到右键打开Puppy的Menu,箭头和Tab键来操作浏览器和命令行终端。
#############以下为旧办法,仅作参考################
一、将openwrt x86_64下载的img镜像转换为vdi硬盘镜像
进入 VirtualBox 安装路径,一般是 C:\Program Files\Oracle\VirtualBox,里面应该有一个 VBoxManage.exe 应用程序。
运行 CMD 命令提示符执行命令把 img 镜像文件转换为 vdi 文件。
将下载和解压后的img文档放到C:\Program Files\Oracle\VirtualBox文件夹中,以管理员身份运行powershell,进入该文件夹,运行转换命令
PS C:\Users\Tina-D> cd "C:\Program Files\Oracle\VirtualBox"
PS C:\Program Files\Oracle\VirtualBox> .\VBoxManage.exe convertfromraw -format VDI openwrt-21.02.1.img openwrt-21.02.1.vdi
Converting from raw image file="openwrt-21.02.1.img" to file="openwrt-21.02.1.vdi"...
Creating dynamic image with size 126385664 bytes (121MB)...
PS C:\Program Files\Oracle\VirtualBox> .\VBoxManage.exe convertfromraw -format VDI openwrt-21.02.1.img openwrt-21.02.1.vdi
其他格式的转换
# 例如要用于适合kvm的虚拟机
.\VBoxManage.exe convertfromraw -format VMDK openwrt-21.02.1.img openwrt-21.02.1.vmdk
# 其他VHD格式
.\VBoxManage.exe convertfromraw -format VHD openwrt-21.02.1.img openwrt-21.02.1.vhd
二、新建virtualbox 虚拟机,导入该vdi硬盘镜像,设置两个桥接网卡,开机
三、配置 Openwrt的 network:
vi /etc/config/network
# 修改下列部分
config interface 'lan'
option ifname 'br-lan'
option proto 'static'
option ipaddr '192.168.0.1' #主要是这里,默认是192.168.1.1,因为和主路由冲突,所以修改
option netmask '255.255.255.0'
option ip6assign '60'
重启网络服务:
/etc/init.d/network restart
将要用于登录OpenWRT的电脑的网卡,增加一任意一个 192.168.0.x 的 ip ,使之生效,然后 浏览器打开192.168.0.1 ,账户root,密码root,即可登录。
四、Debian KVM 安装OpenWRT X86
3.1 基本环境介绍
宿主机为Debian11 最小化安装,要使用KVM还需要安装下列软件包
apt install qemu-kvm bridge-utils libvirt-bin virtinst
qemu-kvm 是QEMU 和 KVM 的附加组件
bridge-utils 用于管理网桥
libvirt-bin 是额外的虚拟机所需的包virtualization packages
virtinst 用于进行手动虚拟化管理
3.2 如果你不想增加其他用户,而是只用root来进行管理,则需要进行下列配置:
将 /etc/libvirt/qemu.conf 文件的拥有者和用户组都更改为root
重新启动 /etc/init.d/libvirt* 条目
3.3 然后就是配置KVMhost的网络了。修改 /etc/network/interfaces ,主要是配置和使用网桥,请根据你的具体情况进行调整。
auto br0 br1 br2 br3
iface br0 inet dhcp
bridge_ports eth0
iface br1 inet dhcp
bridge_ports eth1
iface br2 inet dhcp
bridge_ports eth2
iface br3 inet dhcp
bridge_ports eth3
注: 有关debian系统的桥接网卡配置,请参考:https://wiki.debian.org/BridgeNetworkConnections
3.4 Openwrt虚拟机的创建,用1个网桥接口模拟了两个网卡
virt-install --name=openwrt --vcpus=2 --ram=512 --os-type=linux --disk path=/home/iso/openwrt.img,bus=ide --autostart --network bridge=br0,model=e1000 --network bridge=br0,model=e1000 --import --noautoconsole
#注:network 的 model=e1000可以让openwrt更好的认出网卡接口,并且有两个network,这是设置了2个网卡.
在主机上有多个网卡的情况下,设置多个网络端口的虚拟机的配置
virt-install --name=openwrt --ram=256 --vcpus=1 --os-type=linux --disk path=/home/isos/openwrt-x86-generic-combined-ext4.img,bus=ide --network bridge=br0,model=e1000 --network bridge=br3,model=e1000 --import --noautoconsole
3.5 安装完成后的配置。
通常安装完后,要通过浏览器以 http://192.168.1.1 登录到luci管理界面,如果你的网络上有另外的路由器,可能会产生冲突,可以先临时关闭路由器,更改 openwrt虚拟机的lan口ip为 192.168.X.1,
3.6 如果命令行安装不能成功的解决方法。
只能通过virt-manager 这个图形化管理工具,进行安装
3.6.1 关键步骤是,选择使用已有的硬盘镜像
从解压后的openwrt.img 所在的文件夹选中,一步一步完成虚拟机的新建
3.6.2 用virt-manager 新建的虚拟机,只有1个网卡,需要新添加一个,方法如下图
3.6.3 启动虚拟机,以浏览器进入 http://192.168.1.1 在luci图形界面下进行配置,或者以virt-manager 在命令行下进行配置。 这里主要介绍在命令行下如何配置,适用于主路由器不好临时关闭的情况,手动修改。
vim /etc/config/network
修改为如下图所示即可,eth0 作为lan口,ip配置为和主路由不同的网段,方便我们以浏览器登录luci;eth1 就是我们新增加的网卡,是wan口,这里设置为了dhcp获得IP,通过这里从主路由器获得ip和以此接口上网。
重启一下网络 ./etc/init.d/network restart
然后就可以配置openwrt虚拟机了。