虚拟机运行 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),
e2fsck -f /dev/sda2
resize2fs /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,此时禁用并重新启用即可,此种情况经常出现在宿主机重启过后。

15 条评论

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

  2. 头像zdphpn 回复

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

    1. cokebarcokebar 文章作者 回复

      并没有过气啊 那里过气了

      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. cokebarcokebar 文章作者 回复

      可以。
      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小白,不知道说清楚没,也是自己折腾好几天,有空我画个图就清楚了

发表评论

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

请输入验证码 * 请输入正确的验证码