V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
andj4cn
V2EX  ›  MacBook Pro

M1 版 Mac 有没有可能做出运行 x86_64 虚拟机的解决方案

  •  
  •   andj4cn · 2021-01-08 17:08:53 +08:00 · 6792 次点击
    这是一个创建于 1401 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,工作需要 Linux,如果可以有解决方案的话还是想期待以下 ARM 的 Mac,例如 VirtualBox 和 Vmware 对 x86_64 虚拟化支持。( QEMU 就算了,性能有点拉跨)

    21 条回复    2021-02-12 06:07:31 +08:00
    irytu
        1
    irytu  
       2021-01-08 17:14:06 +08:00 via iPhone
    x86_64 那不叫虚拟化了吧 那得叫模拟
    zhoushengyue
        2
    zhoushengyue  
       2021-01-08 17:16:46 +08:00
    装 Win10 ARM 版,现在已经支持转译运行 x64 应用了,两层虚拟以后性能也还算过得去,起码比高通 SQ 的强
    andj4cn
        3
    andj4cn  
    OP
       2021-01-08 17:19:27 +08:00
    @irytu 模拟的话就 QEMU 了 :( 性能拉跨
    irytu
        4
    irytu  
       2021-01-08 17:26:56 +08:00 via iPhone
    @andj4cn 不同指令架构下我理解没有虚拟化这个说法 只存在模拟的概念 qemu 性能拉胯是因为在这种场景下完全是 soft emulate 的 因为没办法利用 kvm 等技术 qemu 在同架构下并且 host CPU 支持虚拟化的情况下才能发挥性能优势
    SingeeKing
        5
    SingeeKing  
       2021-01-08 17:35:38 +08:00
    我觉得可以,毕竟 docker 可以,但性能绝对是个问题
    felixcode
        6
    felixcode  
       2021-01-08 20:30:55 +08:00 via Android
    x86 平台为兼容长期付出的代价不是虚拟化软件能解决的。
    secondwtq
        7
    secondwtq  
       2021-01-08 20:40:54 +08:00 via iPhone
    不如期待下这个 https://asahilinux.org
    secondwtq
        8
    secondwtq  
       2021-01-08 20:41:46 +08:00 via iPhone
    而且你工作需要 Linux 又不一定非得是 x86 的 Linux……
    M1hahahaha
        9
    M1hahahaha  
       2021-01-08 21:22:11 +08:00
    为了 M1,把这工作辞了
    qa63842
        10
    qa63842  
       2021-01-08 21:41:20 +08:00 via Android
    arm 可以模拟 x86,但是貌似暂时只支持 32 位的,骁龙 850 干过这事
    leoleoasd
        11
    leoleoasd  
       2021-01-08 23:08:06 +08:00
    virtualization 和 emulation 不一样
    qemu 那种是, 软件模拟指令集
    而 vmware / kvm 的是调用 cpu 硬件提供的功能来进行虚拟化

    显然 m1 cpu 只提供了虚拟化 arm 的功能, 没有提供虚拟化 x86 的功能. 因此运行 x86 虚拟机只能通过类似 qemu 的方式模拟.
    andj4cn
        12
    andj4cn  
    OP
       2021-01-08 23:13:05 +08:00
    @leoleoasd 了解,本来是自己会玩一些涉及 x86 汇编的东西,看来是指望不上了 hhh
    andj4cn
        13
    andj4cn  
    OP
       2021-01-08 23:13:24 +08:00
    @M1hahahaha 哈哈不至于不至于
    icyalala
        14
    icyalala  
       2021-01-08 23:15:37 +08:00
    同楼上,x86 的虚拟化也是只能提供 x86 指令,要想跑 arm 程序,比如安卓模拟器,也都是指令翻译。
    mxalbert1996
        15
    mxalbert1996  
       2021-01-09 10:46:30 +08:00 via Android
    @leoleoasd QEMU 在 host 和 target 的架构一样的时候也是用的硬件虚拟化。
    leoleoasd
        16
    leoleoasd  
       2021-01-09 13:51:27 +08:00
    @mxalbert1996 #15 qemu 的硬件虚拟化是借助的 kvm 吧, 没记错的话单纯 qemu 应该就是软件虚拟🤔
    leoleoasd
        17
    leoleoasd  
       2021-01-09 13:54:15 +08:00
    ```
    $ qemu-kvm --help | grep no-kvm
    -no-kvm disable KVM hardware virtualization
    -no-kvm-irqchip disable KVM kernel mode PIC/IOAPIC/LAPIC
    -no-kvm-pit disable KVM kernel mode PIT
    -no-kvm-pit-reinjection
    ```
    看样子是默认启用了 kvm 而已, 可以关闭, 关闭后就是软件虚拟化了
    @mxalbert1996 #15
    lp10
        18
    lp10  
       2021-01-09 16:00:40 +08:00
    code weavers 的 crossover 可以在 M1 上跑 x86 、x86_64 的 windows 程序,不过 linux 的还真不清楚…
    mxalbert1996
        19
    mxalbert1996  
       2021-01-09 17:52:27 +08:00 via Android
    @leoleoasd 是的,默认启用,也没人会关吧。
    BrettD
        20
    BrettD  
       2021-02-12 06:06:45 +08:00
    刚刚看到 QEMU 打了这个 Patch ( https://patchew.org/QEMU/[email protected]/)可以以几乎原生的性能跑 Windows 10 ARM 版,然后在 Windows 里转译运行 x86 程序。运行真 x86 版的 Windows 应该还是只能 QEMU 软件转译,就很慢了。
    BrettD
        21
    BrettD  
       2021-02-12 06:07:31 +08:00
    上面的链接被 V2EX 解析乱了,再贴一遍:
    https://patchew.org/QEMU/[email protected]/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2693 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 06:40 · PVG 14:40 · LAX 22:40 · JFK 01:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.