Mac OS 使用 QEMU 安装 Ubuntu (ARM)

Mac OS(arm版本)下使用qemu安装 ubuntu(arm版) 的方法

安装brew, 已安装忽略

官方地址: https://docs.brew.sh/Installation

export HOMEBREW_BREW_GIT_REMOTE="..."  # put your Git mirror of Homebrew/brew here
export HOMEBREW_CORE_GIT_REMOTE="..."  # put your Git mirror of Homebrew/homebrew-core here
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

安装 依赖工具

  • qemu 虚拟机工具
  • rpm2cpio rpm 解包工具
brew install rpm2cpio qemu

下载 ubuntu ARM64 版镜像

ubuntu-server 下载地址 也可以下载其他版本

官方链接: https://cn.ubuntu.com/download/server/arm

下载地址: https://cdimage.ubuntu.com/releases/22.04/release/ubuntu-22.04.2-live-server-arm64.iso

准备阶段

# 使用 oracle linux AAVMF(arm)
# 启动时会有 Oracle 图标,可以选择其他的 AAVMF
# 制作启动区
curl -O https://yum.oracle.com/repo/OracleLinux/OL7/latest/aarch64/getPackage/AAVMF-1.5.1-1.el7.noarch.rpm
rpm2cpio AAVMF-1.5.1-1.el7.noarch.rpm | cpio -ivd usr/share/AAVMF/AAVMF_{VARS,CODE}.fd

dd if=/dev/zero of=pflash0.img bs=1m count=64
dd if=/dev/zero of=pflash1.img bs=1m count=64
dd if=usr/share/AAVMF/AAVMF_CODE.fd of=pflash0.img conv=notrunc
dd if=usr/share/AAVMF/AAVMF_VARS.fd of=pflash1.img conv=notrunc

创建存储文件

# raw 格式, 可以选 qcow2 等
qemu-img create -f raw ubuntu22.raw 50G

启动qemu 安装 ubuntu 过程

# 启动安装,耐心等待启动的安装进程
qemu-system-aarch64 \
    -monitor stdio \
    -M virt,highmem=on \
    -accel hvf \
    -cpu host \
    -smp 6 \
    -m 8G \
    -drive file=pflash0.img,format=raw,if=pflash,readonly=on \
    -drive file=pflash1.img,format=raw,if=pflash \
    -device virtio-gpu-pci \
    -display default,show-cursor=on \
    -device qemu-xhci \
    -device usb-kbd \
    -device usb-tablet \
    -device intel-hda \
    -device hda-duplex \
    -drive file=ubuntu22.raw,format=raw,if=virtio,cache=writethrough \
    -net nic -net user \
    -cdrom ubuntu-22.04.2-live-server-arm64.iso

运行安装好的镜像

# 安装完成, 根据镜像文件启动,
# 以后就可以直接启动了, 可以将该条命令放到脚本执行
qemu-system-aarch64 \
    -monitor stdio \
    -M virt,highmem=on \
    -accel hvf \
    -cpu host \
    -smp 6 \
    -m 8G \
    -drive file=pflash0.img,format=raw,if=pflash,readonly=on \
    -drive file=pflash1.img,format=raw,if=pflash \
    -device virtio-gpu-pci \
    -display default,show-cursor=on \
    -device qemu-xhci \
    -device usb-kbd \
    -device usb-tablet \
    -device intel-hda \
    -device hda-duplex \
    -drive file=ubuntu22.raw,format=raw,if=virtio,cache=writethrough \
    -net nic \
    -net user,hostfwd=tcp:127.0.0.1:2222-:22 ### 配置端口转发 22 -> 2222