QEMU 上に AArch64 版 FreeBSD の環境を構築する手順です。
『QEMU のインストール』を参照して QEMU のインストールを行います。
本稿では 2021 年 4 月にリリースされた FreeBSD 13.0-RELEASE を使用します。
FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img.xz を取得します。
取得したファイルは xz 形式で圧縮されているため 7-Zip 等のツールを使用して解凍します。
本稿ではビルド済みイメージを使用します。
QEMU_EFI.fd を取得します。
作業用フォルダを作成します。
本稿では『C:\freebsd』とします。
取得を行った SD カードイメージファイルならびに UEFI イメージファイルを作業用フォルダに配置します。
コマンドプロンプトを起動して作業用フォルダに移動します。
> cd C:\freebsd
SD カードイメージファイルのサイズを拡張します。
本稿ではサイズを 16G とします。
> "C:\Program Files\qemu\qemu-img.exe" resize -f raw FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img 16G
SD カードイメージファイルを使用して仮想マシンを起動します。
本稿ではユーザモードネットワークを使用することとします。
また、仮想マシンへは SSH での接続を行うこととします。
> "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=FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img,format=raw,id=hd0 ^
-device virtio-blk-device,drive=hd0 ^
-device virtio-net-device,netdev=net0 ^
-netdev type=user,id=net0,hostfwd=tcp::10022-:22 ^
-nographic
起動完了後、コマンドプロンプト画面に FreeBSD のログインプロンプトが表示されます。
FreeBSD/arm64 (generic) (ttyu0)
login:
FreeBSD に SSH 接続でログインします。
接続先は QEMU を実行しているホストの 10022/TCP となります。
以下は Tera Term を使用した場合の接続先設定例となります。
ユーザ名『freebsd』、パスワード『freebsd』でログイン後、ターミナル画面に以下のプロンプトが表示されます。
※Tera Term を使用してログインする場合は SSH 認証画面にて『キーボードインタラクティブ認証を使う』にチェックを入れます。
freebsd@generic:~ %
マシンアーキテクチャが『aarch64』であることを確認します。
freebsd@generic:~ % uname -p
aarch64
ユーザモードネットワークで DHCP により設定されたネットワーク情報を確認します。
仮想マシンへは『10.0.2.15/24』以降の IP アドレスが付与されます。
またネットワークインタフェース名は『vtnet0』となります。
freebsd@generic:~ % ifconfig -a
vtnet0: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=80028<VLAN_MTU,JUMBO_MTU,LINKSTATE>
ether 52:54:00:12:34:56
inet 10.0.2.15 netmask 0xffffff00 broadcast 10.0.2.255
media: Ethernet autoselect (10Gbase-T <full-duplex>)
status: active
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
groups: lo
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
ゲートウェイの IP アドレスは『10.0.2.2』となります。
freebsd@generic:~ % netstat -rn4
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default 10.0.2.2 UGS vtnet0
10.0.2.0/24 link#1 U vtnet0
10.0.2.15 link#1 UHS lo0
127.0.0.1 link#2 UH lo0
DNS サーバの IP アドレスは『10.0.2.3』となります。
freebsd@generic:~ % cat /etc/resolv.conf
# Generated by resolvconf
nameserver 10.0.2.3
『Raspberry Pi 上での FreeBSD 13.0-RELEASE 環境の構築』を参照して適宜環境設定を行います。