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 2021-01-15 06:51:33 +08:00
如果想做一个 alpine 的 VM 是类似的吗?
|
2
gyf304 OP 可以参考 Ubuntu VM 创建脚本弄一个 https://github.com/gyf304/vmcli/blob/main/vmbuilders/ubuntu.sh
|
3
Ariver 2021-01-15 07:58:14 +08:00 via iPhone
问个可能外行的问题,m1 芯片的 mac 启动的 ubuntu 可能是 x86 的吗?
如果这个 virtual 做了转换封装啥的 |
4
Tink 2021-01-15 08:09:13 +08:00 via Android
这是 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 2021-01-15 13:44:56 +08:00
性能怎么样呀
|
9
soseek 2021-01-15 20:47:12 +08:00 via Android
Star 了,话说能不能实现共享 Mac 目录的呢
|
10
justin2018 2021-01-15 21:49:10 +08:00
可以支持 brew 安装不 😁
brew install vmcli 这样多爽 😁 |
12
gyf304 OP 庆祝一下破 300 stars
|
13
tkl 2021-01-16 17:54:05 +08:00
看起来像是 qemu ?
|
14
April5 2021-01-17 01:50:54 +08:00
还有 vftool,昨天试了下内存占用真的心动
|
15
chux0519 2021-01-18 11:54:18 +08:00
star 了,之前一直在用 xhyve,也是可以极大降低内存占用。
|
16
sbilly 2021-01-20 11:56:36 +08:00
必须 M1 吗?这个框架好像是比较新的 macOS 就行吧
|
18
killerirving 2021-01-21 10:12:30 +08:00
强强强
|
21
BrettD 2021-02-27 09:21:58 +08:00 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 大概是不行的 |