QEMU 上に AArch64 版 NetBSD の環境を構築する手順です。
『QEMU のインストール』を参照して QEMU のインストールを行います。
本稿では 2021 年 5 月にリリースされた NetBSD 9.2 を使用します。
arm64.img.gz を取得します。
取得したファイルは gz 形式で圧縮されているため 7-Zip 等のツールを使用して解凍します。
本稿ではビルド済みイメージを使用します。
QEMU_EFI.fd を取得します。
作業用フォルダを作成します。
本稿では『C:\netbsd』とします。
取得を行った SD カードイメージファイルならびに UEFI イメージファイルを作業用フォルダに配置します。
コマンドプロンプトを起動して作業用フォルダに移動します。
> cd C:\netbsd
SD カードイメージファイルのサイズを拡張します。
本稿ではサイズを 16G とします。
> "C:\Program Files\qemu\qemu-img.exe" resize -f raw arm64.img 16G
SD カードイメージファイルを使用して仮想マシンを起動します。
本稿ではユーザモードネットワークを使用することとします。
また、仮想マシンへは TELNET 経由でのシリアル接続を行うこととします。
> "C:\Program Files\qemu\qemu-system-aarch64.exe" ^
-M virt ^
-cpu cortex-a53 ^
-smp 4 ^
-m 1g ^
-bios QEMU_EFI.fd ^
-drive if=none,file=arm64.img,format=raw,id=hd0 ^
-device virtio-blk-device,drive=hd0 ^
-device virtio-net-device,netdev=net0 ^
-netdev type=user,id=net0 ^
-nographic ^
-serial telnet::20023,server,nowait
TELNET 経由で NetBSD のシリアルコンソールへの接続を行います。
接続先は QEMU を実行しているホストの 20023/TCP となります。
以下は Tera Term を使用した場合の接続先設定例となります。
起動完了後、ターミナル画面に NetBSD のログインプロンプトが表示されます。
NetBSD/evbarm (arm64) (constty)
login:
ユーザ名『root』でログインします。
※パスワードの入力は不要です。
以下のプロンプトが表示されます。
arm64#
マシンアーキテクチャが『aarch64』であることを確認します。
arm64# uname -p
aarch64
ユーザモードネットワークで DHCP により設定されたネットワーク情報を確認します。
仮想マシンへは『10.0.2.15/24』以降の IP アドレスが付与されます。
またネットワークインタフェース名は『vioif0』となります。
arm64# ifconfig -a
vioif0: flags=0x8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ec_capabilities=1<VLAN_MTU>
ec_enabled=0
address: 52:54:00:12:34:56
inet6 fe80::bec:f488:e9de:c266%vioif0/64 flags 0x0 scopeid 0x1
inet6 fec0::e437:8131:1d81:4138/64 flags 0x0
inet 10.0.2.15/24 broadcast 10.0.2.255 flags 0x0
lo0: flags=0x8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33624
inet6 ::1/128 flags 0x20<NODAD>
inet6 fe80::1%lo0/64 flags 0x0 scopeid 0x2
inet 127.0.0.1/8 flags 0x0
ゲートウェイの IP アドレスは『10.0.2.2』となります。
arm64# netstat -rn -f inet
Routing tables
Internet:
Destination Gateway Flags Refs Use Mtu Interface
default 10.0.2.2 UGS - - - vioif0
10.0.2/24 link#1 UC - - - vioif0
10.0.2.15 link#1 UHl - - - lo0
127/8 127.0.0.1 UGRS - - 33624 lo0
127.0.0.1 lo0 UHl - - 33624 lo0
10.0.2.2 52:55:0a:00:02:02 UHL - - - vioif0
10.0.2.3 52:55:0a:00:02:03 UHL - - - vioif0
DNS サーバの IP アドレスは『10.0.2.3』となります。
arm64# cat /etc/resolv.conf
# Generated by resolvconf
nameserver 10.0.2.3
『Raspberry Pi 上での NetBSD 9.2 環境の構築』を参照して適宜環境設定を行います。