プログラミングなんてわからないんですけど〜

元プログラマによるプライベートでのプログラミング日記。1/3のつもりだけどソフト関連はここがメイン

M1 MacのqemuにArm Ubuntu Serverをインストールしてみた

M1 MacWindowsが動く記事は出ていたのです。

How to run Windows 10 on ARM in QEMU with Hypervisor.framework patches on Apple Silicon Mac · GitHub



私はUbuntu使いたい人なので、これを見ながらUbuntu Serverをインストールしてみました。
まずは、記事通りにWindowsを動かせる状態にしましょう。
そのあと、qemu-imgで空のqcow2ファイルを作成します。作成の仕方は省略。
Ubuntu Armをダウンロードしましょう。

ubuntu.com

で、次のような感じで実行。

./qemu-system-aarch64 \
  -monitor stdio \
  -M virt,highmem=off \
  -accel hvf \
  -cpu cortex-a72 \
  -smp 4 \
  -m 4096 \
  -drive file=/Users/kaias1jp/Downloads/pflash0.img,format=raw,if=pflash,readonly=on \
  -drive file=/Users/kaias1jp/Downloads/pflash1.img,format=raw,if=pflash \
  -device ramfb \
  -device qemu-xhci \
  -device usb-kbd \
  -device usb-tablet \
  -device intel-hda \
  -device hda-duplex \
  -nic user,model=virtio \
  /Users/kaias1jp/Ubuntu.qcow2  \
-cdrom /Users/kaias1jp/Downloads/ubuntu-20.10-live-server-arm64.iso \
-boot order=d

多分、UEFIでこけます。

f:id:kaias1jp:20201208171342p:plain

しばらく経つとUEFIのシェルに入ります。

f:id:kaias1jp:20201208171423p:plain

「exit」で抜けるとUEFIの設定画面が出ます。

f:id:kaias1jp:20201208171502p:plain

「Boot Manager」を選ぶとこんな感じ。本当は、一番上に表示されているのがUbuntuじゃないし、下の方にディスクが2つさらに表示されて選べるようになっています。

f:id:kaias1jp:20201208171553p:plain

で、一番下のディスクを選んでEnter。

そうすると、Ubuntuインストーラが動きます。

f:id:kaias1jp:20201208171857p:plain

ディスクも選べるのでインストールしましょう。終わったら一度リブートを選んでリブートします。その時点ではインストールディスクが選ばれていますのでまたインストール開始状態になります。一度qemuを閉じて、以下のような感じでisoを指定しないで実行。

./qemu-system-aarch64 \
  -monitor stdio \
  -M virt,highmem=off \
  -accel hvf \
  -cpu cortex-a72 \
  -smp 4 \
  -m 4096 \
  -drive file=/Users/kaias1jp/Downloads/pflash0.img,format=raw,if=pflash,readonly=on \
  -drive file=/Users/kaias1jp/Downloads/pflash1.img,format=raw,if=pflash \
  -device ramfb \
  -device qemu-xhci \
  -device usb-kbd \
  -device usb-tablet \
  -device intel-hda \
  -device hda-duplex \
  -nic user,model=virtio \
  /Users/kaias1jp/Ubuntu.qcow2

多分、またUEFIで選ぶ必要があるので、今度も一番下のディスクを選択。
まあ、こんな感じでインストールしたディスクから起動されます。

f:id:kaias1jp:20201208172405p:plain

なんかわからないけどネットワークは繋がっています。まあ、試してみてください。

f:id:kaias1jp:20201208172607p:plain