IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Run QEMU with hardware virtualization on macOS

    hev发表于 2019-01-23 12:31:02
    love 0

    在macOS上通过虚拟机运行其它操作系统,又不想用商业软件,那么开源的QEMU是一个比较好的选择。QEMU的功能支持还是比较全面的,除了功能以外,使用虚拟机软件的用户最关心的就是性能了,一个好消息是macOS 10.10+版本已经引人了硬件虚拟化支持框架,也就是Hypervisor.framework,另一个好消息是QEMU也已支持该框架,也就是hvf accelerator。

    Requirements
    1. macOS 10.10+
    2. Macports

    Issues
    已经使用过的用户可能已经发现,QEMU使用hvf accelerator并开启多核是有问题的呀。的确,QEMU使用hvf accelerator以单核运行时没有问题,当使用-smp参数指定多核时,很大概率上虚拟机硬件初始化都完成不了就死机了。
    不过,好消息是该问题也已经修复了,导致这个问题的原因是hvf accelerator代码设计没有考虑到虚拟机启动后所有hvf vcpu都在并行执行指令,其中包括硬件初始化的I/O模拟操作,多个CPU同时对同一硬件执行初始化显然是不行的。

    Patch (已经合并上游社区)

    Install QEMU

    cd ~
    git clone https://github.com/hevz/macports
    sudo vim /opt/local/etc/macports/sources.conf
    
    # Add local repositories
    file:///Users/[YOUR USER NAME]/macports
    rsync://rsync.macports.org/macports/release/tarballs/ports.tar [default]
    
    cd ~/macports
    portindex
    sudo port install qemu
    

    Run Arch Linux
    1. 下载Arch Linux安装ISO镜像。
    2. 创建一个虚拟机磁盘镜像。
    3. 开始安装新的系统。
    4. 启动安装后的系统。

    mkdir ~/system/images
    qemu-img create -f qcow2 ~/system/images/arch.qcow2 40G
    
    qemu-system-x86_64 -no-user-config -nodefaults -show-cursor \
        -M pc-q35-3.1,accel=hvf,usb=off,vmport=off \
        -cpu host -smp 4,sockets=1,cores=2,threads=2 -m 4096 \
        -realtime mlock=off -rtc base=utc,driftfix=slew \
        -drive file=~/system/images/arch.qcow2,if=none,format=qcow2,id=disk0 \
        -device virtio-blk-pci,bus=pcie.0,addr=0x1,drive=disk0 \
        -netdev user,id=net0,hostfwd=tcp::2200-:22 \
        -device virtio-net-pci,netdev=net0,bus=pcie.0,addr=0x2 \
        -device virtio-keyboard-pci,bus=pcie.0,addr=0x3 \
        -device virtio-tablet-pci,bus=pcie.0,addr=0x4 \
        -device virtio-vga,bus=pcie.0,addr=0x5 \
        -cdrom ~/archlinux-2019.01.01-x86_64.iso -boot d
    

    安装完成后,删除qemu-system-x86_64最后一行命令即可启动新系统。

    Over!



沪ICP备19023445号-2号
友情链接