V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
gyf304
V2EX  ›  分享创造

M1 Mac 适用的轻量 Linux VM

  •  1
     
  •   gyf304 ·
    gyf304 · 2021-01-15 05:48:12 +08:00 · 5222 次点击
    这是一个创建于 1190 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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%
    ...
    
    25 条回复    2022-04-08 14:40:28 +08:00
    yzbythesea
        1
    yzbythesea  
       2021-01-15 06:51:33 +08:00
    如果想做一个 alpine 的 VM 是类似的吗?
    gyf304
        2
    gyf304  
    OP
       2021-01-15 06:53:51 +08:00
    可以参考 Ubuntu VM 创建脚本弄一个 https://github.com/gyf304/vmcli/blob/main/vmbuilders/ubuntu.sh
    Ariver
        3
    Ariver  
       2021-01-15 07:58:14 +08:00 via iPhone
    问个可能外行的问题,m1 芯片的 mac 启动的 ubuntu 可能是 x86 的吗?
    如果这个 virtual 做了转换封装啥的
    Tink
        4
    Tink  
       2021-01-15 08:09:13 +08:00 via Android
    这是 macOS 自带的虚拟化软件?
    gyf304
        5
    gyf304  
    OP
       2021-01-15 08:22:08 +08:00
    @Tink macOS 自带了 `Virtualization.framework` 但是没有给你直接跑 VM 的软件。所以写了两个工具:`vmcli` 在 `Virtualization.framework` 之上给你了一个 CLI,`vmctl` 又把 `vmcli` daemon 化了。虚拟化本身是 macOS 自己提供的。
    gyf304
        6
    gyf304  
    OP
       2021-01-15 08:23:24 +08:00
    @Ariver 不能,这是 Virtualization 不是 Emulation 。不过 x86_64 的 host 应该是可以用这个跑 x86_64 的 VM 的。
    soseek
        7
    soseek  
       2021-01-15 13:44:56 +08:00
    性能怎么样呀
    gyf304
        8
    gyf304  
    OP
       2021-01-15 14:51:00 +08:00
    @soseek 感受上基本没有什么性能损失
    soseek
        9
    soseek  
       2021-01-15 20:47:12 +08:00 via Android
    Star 了,话说能不能实现共享 Mac 目录的呢
    justin2018
        10
    justin2018  
       2021-01-15 21:49:10 +08:00
    可以支持 brew 安装不 😁
    brew install vmcli 这样多爽 😁
    gyf304
        11
    gyf304  
    OP
       2021-01-16 01:57:16 +08:00
    @soseek 正在研究 希望可以在宿主上跑 9pfs 目前可以考虑 sshfs 挂载 host
    gyf304
        12
    gyf304  
    OP
       2021-01-16 02:28:26 +08:00
    庆祝一下破 300 stars
    tkl
        13
    tkl  
       2021-01-16 17:54:05 +08:00
    看起来像是 qemu ?
    April5
        14
    April5  
       2021-01-17 01:50:54 +08:00
    还有 vftool,昨天试了下内存占用真的心动
    chux0519
        15
    chux0519  
       2021-01-18 11:54:18 +08:00
    star 了,之前一直在用 xhyve,也是可以极大降低内存占用。
    sbilly
        16
    sbilly  
       2021-01-20 11:56:36 +08:00
    必须 M1 吗?这个框架好像是比较新的 macOS 就行吧
    gyf304
        17
    gyf304  
    OP
       2021-01-20 14:14:40 +08:00
    @sbilly x86_64 应该也行的
    killerirving
        18
    killerirving  
       2021-01-21 10:12:30 +08:00
    强强强
    sbilly
        19
    sbilly  
       2021-02-19 11:17:19 +08:00
    @gyf304 请问 macOS 的 Virtualization.framework 支持多网卡吗?
    gyf304
        20
    gyf304  
    OP
       2021-02-23 06:33:47 +08:00
    @sbilly 支持,但需要额外的 entitlement 签名
    BrettD
        21
    BrettD  
       2021-02-27 09:21:58 +08:00 via iPhone
    想问一下 Apple 的这个 Virtualization framework 接口可以用来启动别的操作系统吗?想要运行 FreeBSD 虚拟机,但是发现官方文档里面只给了启动 Linux guest OS 的示例代码。
    gyf304
        22
    gyf304  
    OP
       2021-02-27 09:45:10 +08:00
    @BrettD 似乎目前只支持 Linux,可以尝试先启动 Linux 然后用 kexec 执行 FreeBSD 。
    BrettD
        23
    BrettD  
       2021-02-27 09:48:28 +08:00
    @gyf304 哇,真的可以从 Linux 内核直接 kexec 进 FreeBSD 内核吗?
    gyf304
        24
    gyf304  
    OP
       2021-02-27 09:51:42 +08:00
    @BrettD 有人试过 kexec 到 grub. https://unix.stackexchange.com/questions/360834/kexec-to-grub-or-to-syslinux-or-windows
    还有这个 https://www.linuxboot.org/
    直接 kexec FreeBSD 大概是不行的
    Acebiu
        25
    Acebiu  
       2022-04-08 14:40:28 +08:00
    @gyf304 请问 macOS 的 Virtualization.framework 支持访问串口设备吗?比如 /dev/tty.usbmodem1421 这种
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5337 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:49 · PVG 14:49 · LAX 23:49 · JFK 02:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.