虚拟机运行 OpenWrt 的方法 (VMware Workstation)

有时候为了折腾,在PC的虚拟机上跑 OpenWrt 有着很多优势。这里介绍一下使用 Vmware 运行 OpenWrt 的方法。

1. 准备一个Linux发行版的虚拟机系统,这里使用Ubuntu 18.04
2. 进入Ubuntu系统,打开终端,下载系统镜像并转换为vmdk:

然后把转好的vmdk文件拷贝到宿主机上,记得备份一份以免后续重新分区时候操作失误是还得重新下。
3. 扩展磁盘大小,首先将vmdk挂载到vmware,在Ubuntu虚拟机的设置里,点击添加硬盘(需要先把虚拟机关机)

调整最大磁盘大小,酌情设置。

4. 调整分区

开机,进终端,sudo -s提权为root,并确定新挂上去的磁盘文件对应的设备名是什么,可以用fdisk -l 查看所有设备,找到挂载的磁盘名字,一般来说是/dev/sda,接着:
fdisk /dev/sda
然后输入p,回车

记住第二个分区的起点数字(33792),然后按:
d[Enter] 2[Enter] 删除第二个分区

然后重新分区,并应用
n [enter] p [enter] 2 [enter] 33792 [enter] [enter] w [enter]

然后先卸载/dev/sda2分区(也可以使用umount /dev/sda2)

然后在终端依次执行(如果提示确认执行时候按y),

resize2fs /dev/sda2
e2fsck -f /dev/sda2

PS:下面这张图是我后截的,里面的信息可能和上面的截图不一致

完成!
然后将Ubuntu关机,移除openwrt的磁盘。

5. 创建openwrt虚拟机,需要注意的截屏了,其他的按需设置:

创建好以后可以把USB的支持改成3.0

6. 设置网络

OpenWrt至少需要两张网卡,一个作为WAN口一个作为LAN口,WAN口使用NAT方式连接宿主机网络用于访问互联网,LAN口要模拟一个交换机出来,所以这里使用“仅主机”模式。设置步骤如下。

点击VMware软件菜单的“编辑”-“虚拟网络编辑器”,弹出的虚拟网络编辑器窗口,UAC打开时,默认没有管理员权限,各个项目是灰色无法更改,此时点击右下角的“更改设置”即可。

然后点击“添加网络”,添加一个VMnet2网络,并按照下图设置。

设置完毕后,点击确定。然后打开OpenWrt虚拟机的设置,为虚拟机添加第二张网卡(点击添加,然后选择网络适配器,确定)。

然后将两张虚拟网卡的连接方式按下图配置,网卡1连接到刚才建立的VMnet2,网卡2直接选NAT模式。

这里要提一下,VMware的网卡到了OpenWrt里头,网卡1对应eth0,网卡2对应eth1,而默认OpenWrt将eth0连到LAN口,因此这里将网卡一配置为VMnet2,方便接下来从宿主机连接到OpenWrt。

接下来开机,等待大概二十秒就启动起来了,不过大概到一分钟左右,出现random字样的log后算是完全启动完毕,此时按一下回车,命令行就出来了。不过一般也不在VMware这里操作,因为不太方便,通常还是通过luci/SCP/SSH来操作。

OpenWrt的LAN口默认是192.168.1.1的IP,这个考虑到这个IP可能和宿主机网络冲突,最好换掉;这里先断开宿主机的物理网卡连接防止IP冲突,然后修改VMnet2的虚拟网卡,手工指定IP为192.168.1.2

然后应该就可以通过浏览器访问192.168.1.1进入luci了。修改LAN口的网段:

然后重新将VMnet2网卡设置为IP自动获取,确认其获取到192.168.126.x的IP后,使用192.168.126.1重新访问luci,并添加WAN口:

看到WAN口正确的获取到了VMware分配的IP即告成功。此后使用SSH连接后,尝试opkg update获取软件列表,使用opkg install安装软件,如果没问题,则网络配置完成!剩下的就随便搞了和路由器上用一个样。

PS:由于VMnet2网卡上,不配置VMware的DHCP服务,而是由OpenWrt的DHCP分配IP,因此,OpenWrt开机后,可能VMnet2并未正确获取到OpenWrt分配的IP,此时禁用并重新启用即可,此种情况经常出现在宿主机重启过后。

17 条评论

  1. 引用: 虚拟机运行 OpenWrt 的方法 (VMware Workstation) – Log@X.X.B

  2. zdphpn 回复

    点个赞,现在openwrt的真不多,都是之前的,过气了?

    1. cokebar 文章作者 回复

      并没有过气啊 那里过气了

      1. zdphpn 回复

        只是想找相关的书籍看看,找来找去就发现两本,唉,希望可以多一些openwrt方面的文章,,

      2. zdphpn 回复

        虚拟机已成功跑起,192.168.1.1打开正常,感谢,,

  3. 引用: OpenWRT for x86 | Venhow's Blog

  4. luoqeng 回复

    用博主提供的翻墙方案
    VMware 运行 OpenWrt
    开箱即用版本:https://github.com/luoqeng/OpenWrt-on-VMware

    1. openwrtinit 回复

      写个详细的readme吧,跑起来了,不会用。

      1. luoqeng 回复

        跑起来了,你把自己电脑 IP 改成 README 里面给的例子就行了啊。
        改 IP 不会的话,自行搜索一下。

  5. xu 回复

    笔记本,只有wifi联网,现在在虚拟机里安装openwrt,想让笔记本通过openwrt上网,可以实现吗

    1. cokebar 文章作者 回复

      可以。
      1. openwrt wan口用桥接模式桥接宿主机wlan,不要用NAT模式
      2. openwrt lan口仍用仅主机模式(假设为对应虚拟网卡为VMware Network Adapter VMnet2)
      3. 使用命令行的route命令手工配置宿主机路由表,修改默认网关到VMnet2

  6. luoqeng 回复

    上述提供的方案就是啊,局域网其他机器也可以通过虚拟机里面的 OpenWrt 上网。

  7. 回复

    笔记本无线网卡,好像不可以

  8. lxf 回复

    大神,笔记本装的win7系统,用vm装的openwrt-18.06.2,网络为 仅主机(lan)、桥接(wan)模式,能登陆luci,能连外网。想让别的设备,包括这个笔记本通过openwrt上网,看了好多文章都不成功。求方法。谢谢,谢谢。

    1. XU 回复

      参考作者4月5日的回复,可以实现,我是把主机无线网卡ip4关闭,主机里有个虚拟网卡vm1的网关改为 openwrt的lan卡的地址
      大致意思是openwrt通过主机无线网卡桥接上网,主机通过VM虚拟机创建的虚拟网卡连接到openwrt的lan上,和主机通过物理路由器上网一个意思,openwrt一个网卡桥接主机无线卡就相当于物理路由器的wan口,另一个网卡(仅主机模式)就相当于物理路由器的一个lan口,你把主机里有一个VM创建的虚拟网卡(和openwrt同地址段的那一个),把这个网卡的网关设为openwrt的lan地址就行
      linux小白,不知道说清楚没,也是自己折腾好几天,有空我画个图就清楚了

    2. 博主真帅 回复

      宿主机系统为win10,已经按照博主的教程设置完成。1、将openwrt的lan口即VMware Network Adapter VMnet2(坐标在“网络和Internet设置——以太网-更改适配器选项——VMware Network Adapter VMnet2”或者“控制面板——网络和Internet——网络和共享中心——更改适配器设置——VMware Network Adapter VMnet2“),点击属性——共享——选中小方框(允许其他网络用户通过此计算机的internet连接来连接),2、点击此小方框辖区的家庭网络连接下面的下拉框——选择usb网卡或者笔记本热点网卡-确定,就可以实现。笔记本插入usb网卡后,会在“更改适配器设置”里自动新增加一个网卡,笔记本的热点开启后,同样会在“更改适配器设置”里自动新增加一个网卡,通过此步骤可以实现openwrt的网络输出(连接usb网卡或者连接笔记本热点)。

  9. 刘菲 回复

    ubuntu下用kvm怎么弄呀,大神有办法吗

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

请输入验证码 *