在Apple Silicon上的UTM虚拟机中安装OpenWrt
这份文档描述了如何在 macOS(Apple Silicon 硬件)上的 UTM虚拟机 中运行 armsr/armv8 架构的 OpenWrt 镜像。
您可以在wiki的其他地方找到 macOS(Apple Silicon 硬件)上采用其他虚拟化技术虚拟机的安装教程
选择合适的OpenWrt镜像
您需要 ARM x64 位版本的 OpenWrt。 有下列两个版本可供选择:
combined-squashfs.img.gz
: 截止到版本23.05.0,这个版本与sysupgrade功能不兼容combined-ext4.img.gz
: 这个磁盘镜像使用一个单独的可读写的ext4分区,没有只读的squashfs根文件系统,因此无法使用像 Failsafe Mode(安全模式)或 Factory Reset(出厂重置)等功能
在这份文档中,我们将使用openwrt-armsr-armv8-generic-ext4-combined.img.gz/
,因为它支持sysupgrade功能
- 从targets/armsr/arvm8/ folder下载一个稳定版本的
generic-ext4-combined.img.gz
- e.g. 23.05.0.
- 或者你也可以尝试最新版本但不稳定的快照镜像 snapshot
- 解压缩下载得到的gzip文件,你将得到一个原始的
openwrt.img
镜像文件
提示:保留原始的gzip压缩的镜像文件的副本,它可以用作sysupgrade的镜像。
UTM虚拟机设置
通过以下步骤创建虚拟机
启动UTM,然后点击Create a new Virtual Machine
选择Other(因为Linux的安装路径需要一个安装ISO映像文件,而我们在OpenWrt中不使用这种映像文件)。
配置为512MB内存和2个CPU(需要保证有足够资源运行sysupgrade)。
接受默认的存储设置(稍后将删除这个驱动器并替换为OpenWrt镜像)。
勾选Open VM Settings。为虚拟机命名,然后点击Save
虚拟机配置
如果您根据本文档了设置,请继续参考下列配置:
网络设置
选择Network。将网络模式更改为Host Only。勾选Show Advanced Settings。在Guest Network框中,输入虚拟机LAN的网络范围:10.0.2.0/24。
在“Devices”下,点击/+New条目,添加一个新的Network。点击这个网络并确认它被配置为Shared Network。
虚拟机上的br-lan 接口连接到lan 接口,固定地址为10.0.2.2,在UTM中设置为Host Only Network。此接口将始终对当前主机可用。
虚拟机上的eth1接口连接到wan接口,使用动态地址,在UTM中设置为Shared Network(NAT)。此接口将通过主机进行互联网访问。
“Host Only Network“和“Shared Network”的顺序对于运行在虚拟机中OpenWrt的即插即用操作非常重要。虽然后续你可以使用控制台进行配置,但以这种方式配置可以简化启动配置的过程。
移除未使用的设备
在Display选项上右键点击并删除它。在Sound选项上右键点击并删除它。(由于OpenWrt运行在终端,无需声音图形设备,删除可以减轻资源压力)在VirtIO Drive选项上右键点击并删除它。确认删除驱动器,点击Delete。(这是UTM在创建虚拟机时创建的空白磁盘)
其他设备设置
继续在下方点击/+New条目,添加一个新的Serial设备。点击串口设备并检查模式。默认模式是一个内置终端窗口,支持使用macOS原生键盘快捷键进行复制和粘贴。可自由终端样式。
在Drives选项部分,选择New...。接受接口默认设置(VirtIO),然后点击Import...。目标文件夹为你之前解压的
openwrt.img
文件。
点击Save保存以上设置 .
虚拟机中OpenWrt设置
- 启动你的虚拟机(点击启动按钮)
- 等待几秒GRUB自动启动
- 当启动消息完成滚动时,按Enter键以激活虚拟机内的控制台
- 显示当前LAN网络配置。请注意,在第一次启动时,默认的LAN地址为192.168.1.1。
root@openwrt:~# uci show network.lan network.lan=interface network.lan.device='br-lan' network.lan.proto='static' network.lan.ipaddr='192.168.1.1' network.lan.netmask='255.255.255.0' network.lan.ip6assign='60'
- 编辑网络配置以允许SSH访问,将以下命令粘贴到控制台中:
uci set network.lan.ipaddr='10.0.2.2' uci commit service network restart
- 如果您熟悉vim编辑器,可以直接对config文件进行,使用指令:
vim /etc/config/network
进行修改后重启网络:
service network restart
- 现在,你可以通过SSH访问你的虚拟机,使用用户root(无密码),IP地址为10.0.2.2
- 如果你安装了一个稳定发布版本的镜像,如23.05.0,LuCi web界面可以通过 http://10.0.2.2/ 进行访问
- 如果你安装了不包含LuCi的快照版本,可以使用以下命令安装luci:
opkg update && opkg install luci
- 你的主机需要接入互联网(尝试运行opkg update)并需要一个具有静态地址的LAN接口,以确保你可以随时通过SSH进行连接
- 如果你有更复杂的需求,你需要通过阅读其他文档或使用LuCi来自行进行设置