
Apple 有一个 Virtualization.framework 可以直接启动 Linux VM 。做了一个简单的 wrapper 来启动+管理 VM,自己正在用。
见: https://github.com/gyf304/vmcli
Repo 里有安装教程,需要你已经安装了 XCode 。 用安装教程创建 Ubuntu VM 需要你已经有 ~/.ssh/id_rsa.pub,没有可以自己用 ssh-keygen 生成一个。
安装完用起来大概是这么一个效果:
yifangu@Yifans-MacBook-Air ~ % vmctl start ubuntu yifangu@Yifans-MacBook-Air ~ % vmctl ssh ubuntu Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-60-generic aarch64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Thu Jan 14 16:42:30 UTC 2021 System load: 0.0 Processes: 96 Usage of /: 35.6% of 3.85GB Users logged in: 0 Memory usage: 17% IPv4 address for enp0s1: 192.168.64.12 Swap usage: 0% ... 1 yzbythesea Jan 15, 2021 如果想做一个 alpine 的 VM 是类似的吗? |
2 gyf304 OP 可以参考 Ubuntu VM 创建脚本弄一个 https://github.com/gyf304/vmcli/blob/main/vmbuilders/ubuntu.sh |
3 Ariver Jan 15, 2021 via iPhone 问个可能外行的问题,m1 芯片的 mac 启动的 ubuntu 可能是 x86 的吗? 如果这个 virtual 做了转换封装啥的 |
4 Tink PRO 这是 macOS 自带的虚拟化软件? |
5 gyf304 OP @Tink macOS 自带了 `Virtualization.framework` 但是没有给你直接跑 VM 的软件。所以写了两个工具:`vmcli` 在 `Virtualization.framework` 之上给你了一个 CLI,`vmctl` 又把 `vmcli` daemon 化了。虚拟化本身是 macOS 自己提供的。 |
6 gyf304 OP @Ariver 不能,这是 Virtualization 不是 Emulation 。不过 x86_64 的 host 应该是可以用这个跑 x86_64 的 VM 的。 |
7 soseek Jan 15, 2021 性能怎么样呀 |
9 soseek Jan 15, 2021 via Android Star 了,话说能不能实现共享 Mac 目录的呢 |
10 justin2018 Jan 15, 2021 可以支持 brew 安装不 brew install vmcli 这样多爽 |
12 gyf304 OP 庆祝一下破 300 stars |
13 tkl Jan 16, 2021 看起来像是 qemu ? |
14 April5 Jan 17, 2021 还有 vftool,昨天试了下内存占用真的心动 |
15 chux0519 Jan 18, 2021 star 了,之前一直在用 xhyve,也是可以极大降低内存占用。 |
16 sbilly Jan 20, 2021 必须 M1 吗?这个框架好像是比较新的 macOS 就行吧 |
18 killerirving Jan 21, 2021 强强强 |
21 BrettD Feb 27, 2021 via iPhone 想问一下 Apple 的这个 Virtualization framework 接口可以用来启动别的操作系统吗?想要运行 FreeBSD 虚拟机,但是发现官方文档里面只给了启动 Linux guest OS 的示例代码。 |
24 gyf304 OP @BrettD 有人试过 kexec 到 grub. https://unix.stackexchange.com/questions/360834/kexec-to-grub-or-to-syslinux-or-windows 还有这个 https://www.linuxboot.org/ 直接 kexec FreeBSD 大概是不行的 |