在 macOS 中使用 Parallels Desktop 虚拟机安装 OpenWrt
在 Windows 上 用 Hyper-V 装过了 OpenWrt、在 群晖上用 Virtual Machine Manager 上装过了 OpenWrt,这次该在 macOS 上用 Parallels Desktop 虚拟机装 OpenWrt 了。
本文的环境:
- macOS Catalina 10.15.5
- Parallels Desktop 15.1.3 (47255)
- Kools OpenWrt 2.31 & 2.35
检查虚拟化支持
苹果的硬件默认均支持虚拟化技术,绝大部分现代苹果硬件还额外支持虚拟化增强。如果你要确认你的设备是否支持虚拟化增强,在终端中使用下述命令查看输出:
sysctl -a | grep -Ei "machdep.cpu.features"
如果看到输出的字符串中有 VMX
即支持苹果的增强虚拟化,意味着可以安装和使用 Parallels Desktop 和 VMware Fusion。
如果你在使用 AMD 安装的黑苹果,那么你多半注释掉了 XNU 内核不少对 Intel 特有指令集的调用(不论是反编译 XNU 内核或是通过 Clover / OpenCore 对相关 kext 进行了 Patch),意味着 VMX 是肯定不支持的。
AMD NO,Intel YES如果不支持 VMX,就只能安装
开源拖拉机VirtualBox 了。
下载并解压固件
你可以前往 OpenWrt Release 下载 x86 的镜像,或者前往 TUNA 的 OpenWrt Release 镜像 下载。这里我以 Koolshare OpenWrt 为例,前往 Koolshare 固件下载服务器 下载镜像。
截至本文写就,Koolshare OpenWrt X86 最新版为 2.35,但是供虚拟机使用、且打包格式为 img 的只更新到 2.31。所以在安装时我们需要「虚拟机转盘或 PE 下写盘专用」下载 2.31 的版本进行安装,安装成功过后再在 OpenWrt 中升级到 2.35:
文件名:openwrt-koolshare-mod-v2.31-r10822-50aa0525d1-x86-64-combined-squashfs.img.gz
下载链接: https://firmware.koolshare.cn/LEDE_X64_fw867/%E8%99%9A%E6%8B%9F%E6%9C%BA%E8%BD%AC%E7%9B%98%E6%88%96PE%E4%B8%8B%E5%86%99%E7%9B%98%E4%B8%93%E7%94%A8/openwrt-koolshare-mod-v2.31-r10822-50aa0525d1-x86-64-combined-squashfs.img.gz
MD5:97395981e04dc9253cfa69befb3c4201
SHA1:a16d1425670309aaf3ef038ca282d7731854acee
解压下载的文件,并将解压得到的文件后缀名改为 .hdd
,以供 Parallels Desktop 识别。
Parallels Desktop 也提供对 vmdk 格式的不完整支持,感兴趣的可以自行下载 Koolshare 提供的 vmdk 格式的文件尝试导入。
创建虚拟机
启动 Parallels Desktop,选择从 DVD 或镜像文件安装:
在选择镜像界面,勾选左下角的「没有指定源也继续」,以创建一个空白的虚拟机:
点击「继续」时会要求选择操作系统,这里我们选择「其它 Linux」:
接着是虚拟机名称和保存目录,自行选择即可。注意勾选「在安装前进行自定义配置」:
配置创建好的虚拟机
这一步非常关键。Parallels Desktop 主打在 macOS 上无缝使用 Windows,进行了很多优化,而这些优化都是我们用不到的。因此此时我们要将它们全部关闭。
「选项 - 分享」,禁用目录分享:
「选项 - 应用」,禁用应用分享:
「选项 - 更多选项」,禁用时间同步:
「硬件 - CPU 与内存」,推荐使用 2 核、1G 内存:
「硬件 - 共享的打印机」,取消勾选第一个复选框。
「硬件 - 网络」,选择桥接网络(这里我勾选的是以太网):
我在我的「单网口群晖使用 Virtual Machine Manager 安装 Koolshare OpenWrt 作为旁路网关」和「在 Window 10 Hyper-V 中安装 Koolshare OpenWrt 作为旁路网关」两篇文章中介绍过虚拟机网络桥接。桥接以后,在上游的路由器眼中虚拟机和宿主机是两个分别接入的独立设备,你的虚拟机作为一个旁路设备存在。这样的网络拓扑结构简单、易于维护。
「硬件 - 打印机」,点击列表底部的「-」删除。
「硬件 - 音频和摄像头」,点击列表底部的「-」删除。
「硬件 - 硬盘」,点击列表底部的「-」删除,然后点击「+」新增一个硬盘:
硬盘类型选择「现有的镜像文件」,位置选择之前下载解压重命名好的.hdd
文件(如果你想将虚拟机的硬盘映像存储到别处,就先移动.hdd
后再添加)。「硬件 - CD/DVD」,点击列表底部的「-」删除。
完成上述步骤后,关闭配置窗口,启动创建好的虚拟机。
启动虚拟机并配置网络
启动虚拟机,耐心等待屏幕日志不再滚动后,敲击一下回车键,即可看见「OpenWrt」字样:
OpenWrt 默认 LAN IP 为 192.168.1.1
,为了访问 OpenWrt 的界面,我们需要手动调整一下 LAN IP。输入下述指令编辑网络配置文件:
vi /etc/config/network
进入 vi 后,敲击 i 进入输入模式,使用方向键定位到 config interface 'lan'
,将 option ipaddr
后的 IP 为改为上游路由网段下不冲突的 IP。
如我的上游路由使用的网段是
192.168.123.0/24
,所以我为 OpenWrt 分配一个192.168.123.250
修改成功过后,使用 Esc 退出输入模式,接着键入 :wq
命令保存并退出。
退出 vi
后,输入下述命令重启网络:
service network restart
你如果偷懒的话,也可以
reboot
直接重启,一样能生效修改后的网络配置
现在不出意外的话,在浏览器中输入刚才配置的 LAN IP,就已经可以看到 OpenWrt 的 Luci 后台了。
配置 OpenWrt 的接口
虽然我们修改好了 LAN IP,但是此时 OpenWrt 还不能上网,因为我们的 OpenWrt 的 LAN 是静态 IP 的,我们还需要配置 DNS 和网关。
使用 OpenWrt 默认登录密码登录(Koolshare OpenWrt 的默认密码是 koolshare
),进入「网络 - 接口」,找到绿色的 LAN,点击「编辑」:
可以看到「IPv4 地址」一栏已经是我们之前通过 vi
设置好的。接下来,修改「IPv4 网关」为上游路由器的 IP、修改「IPv4 广播」为当前网段、修改「自定义 DNS」。
在「DHCP 服务器」一栏,勾选「忽略此接口」。
点击「保存」后,回到上层页面,点击「保存并应用」,保存成功后 OpenWrt 已经可以连接到网络了。建议将多余的「WAN」和「WAN6」两个接口删除。
如果你安装的是 Koolshare OpenWrt 2.31 虚拟机版,可以通过酷软中心中的「固件更新」插件将 Koolshare OpenWrt 更新到 2.35。注意更新到 2.35 会重置所有配置,意味着你会需要重新配置一遍网络。
除此以外,由于 macOS 上没有好用的 SCP GUI,只有 SFTP GUI。因此推荐安装 vtfpd,以通过 SFTP 连接 OpenWrt 进行文件管理:
opkg update
opkg install vsftpd openssh-sftp-server
/etc/init.d/vsftpd enable
/etc/init.d/vsftpd start
尾声
需要说明的是,macOS 虽然已经支持了网络转发,但是性能不如 Linux,在 macOS 上安装 OpenWrt 更适合作为调试用途,不适合作为日常上网的工具。