使用 UTM 在 Apple Silicon 上进行开发
使用 UTM 在 Apple Silicon 上进行开发
- 2025年4月17日
- vm,
- utm,
- arm,
- macbook,
- apple silicon
“UTM 是一款可以在你的 iPhone 或 iPad 上运行其他操作系统的应用。它不能在其他系统上运行 iOS。 这使你可以(除此之外)在你的 iOS 设备上以可用的速度运行 Windows 或 Linux。” – UTM 官网
在本文中,我将向你展示如何使用 UTM VMs 虚拟机在 Apple Silicon 上创建 Linux 开发环境。
这种方法建立在我之前描述的技术之上这里。
依赖 #
首先,使用 Homebrew 安装 UTM:brew install --cask utm
。
然后,安装 brew install cdrtools
,它提供 mkisofs
。 我们将使用该工具创建一个 init.iso
- 我们的种子脚本,用于初始化 VM。
我们需要一堆工具和镜像。
- Fedora Cloud 镜像 mirror.bahnhof.net.
- Ubuntu Cloud 镜像 cdimage.ubuntu.com.
Cloud-Init #
我们将使用 cloud-init 脚本来引导 VM,使其具备开发所需的工具和设置,例如 git
、jq
、go
、docker
等。我们还将使用它来配置 SSH 密钥,以便轻松访问。
user-data
#cloud-config
system_info:
default_user:
name: fedora
users:
- name: fedora
sudo: ['ALL=(ALL) NOPASSWD:ALL']
groups: users, admin, docker
shell: /bin/bash
ssh_authorized_keys:
- ssh-rsa AAAAB3Nza...
groups:
- docker
packages:
- curl
- wget
- git
- jq
- gcc
- clang
chpasswd:
list: |
fedora:password
expire: False
resize_rootfs: True
write_files:
- path: /etc/sysctl.d/enabled_ipv4_forwarding.conf
content: |
net.ipv4.conf.all.forwarding=1
- path: /opt/go.sh
owner: fedora:fedora
permissions: '0700'
content: |
#!/usr/bin/env bash
set -ex
wget https://go.dev/dl/go1.24.1.linux-amd64.tar.gz -O go.tar.gz
sudo tar -C /usr/local -xzvf go.tar.gz
rm -rf go
echo 'export GOROOT=/usr/local/go' >> /home/fedora/.bashrc
echo 'export GOPATH=$HOME/.go' >> /home/fedora/.bashrc
echo 'export PATH=$GOPATH/bin:$GOROOT/bin:$PATH' >> /home/fedora/.bashrc
runcmd:
- [dnf, config-manager, addrepo, --from-repofile="https://download.docker.com/linux/fedora/docker-ce.repo"]
- [dnf, install, docker-ce, docker-ce-cli, containerd.io]
- [systemctl, enable, --now, docker]
- /opt/go.sh
生成 init.iso
(mkisofs
是 cdrtools
的一部分):
touch meta-data # going to be empty
mkisofs -output init.iso -volid cidata -joliet -rock {user-data,meta-data}
创建 VM #
创建 VM,选择 Emulate:
选择 Other:
硬件配置保持不变:
使用
8GB
磁盘,我们不需要它,稍后会将其删除。
在 Summary 中,命名 VM 并选中 Open VM Settings
:
取消选中
UEFI Boot
:
使用鼠标右键删除
Display
和 Sound
,并添加 Serial
-> Built-In
:
删除创建的
Drive
,并添加新的 VirtiO
,Import
Fedora-Cloud-Base-Generic-42-1.1.x86_64.qcow2
创建另一个
Drive
-> VirtiO
,导入 init.iso
运行 VM,如果一切顺利,你将看到如下所示的启动终端:
等待直到出现登录屏幕。 默认用户名是 fedora,密码是 password,如我们的 cloud-init 脚本中所定义。
登录后,给它一点时间,cloud-init script 将需要一些时间来完成所有设置。
VM 初始化完成后,关闭电源并删除 init.iso 驱动器 - 它只需要在第一次启动时运行。
你可以使用
sudo cat /var/log/cloud-init-output.log
检查 cloud-init 脚本的输出。
提示: 要为 Apple Silicon (aarch64) 创建 VM,请按照以下步骤操作:
- 选择
Virtualize
,因为 Apple Silicon 是基于 ARM 的。 - 使用
arm64
cloud 镜像。 - 对于 Ubuntu,该过程几乎相同 - 只是你不需要禁用 UEFI 启动。
- 不要忘记在使用前提取
*.img.xz
文件。
编码愉快!