kraftsrv.net

QEMU 上での AArch64 版 OpenBSD の環境構築

QEMU 上に AArch64 版 OpenBSD の環境を構築する手順です。

事前準備

QEMU のインストール

QEMU のインストール』を参照して QEMU のインストールを行います。

SD カードイメージファイルの取得

本稿では 2021 年 10 月にリリースされた OpenBSD 7.0 を使用します。
miniroot70.img を取得します。
※miniroot70.img はインストーラならびにその関連ファイルが含まれたイメージファイルとなります。

作業用フォルダの作成

作業用フォルダを作成します。
本稿では『C:\openbsd』とします。
取得を行った SD カードイメージファイルを作業用フォルダに配置します。

コマンドプロンプトの起動

コマンドプロンプトを起動して作業用フォルダに移動します。

> cd C:\openbsd

SD カードイメージファイルのサイズ拡張

SD カードイメージファイルのサイズを拡張します。
本稿ではサイズを 16G とします。

> "C:\Program Files\qemu\qemu-img.exe" resize -f raw miniroot70.img 16G

OpenBSD のインストール

インストーラの起動

SD カードイメージファイルを使用してインストーラを起動します。
本稿ではユーザモードネットワークを使用することとします。
また、仮想マシンへは TELNET 経由でのシリアル接続を行うこととします。

> "C:\Program Files\qemu\qemu-system-aarch64.exe" ^
    -M virt ^
    -cpu cortex-a53 ^
    -smp 4 ^
    -m 1g ^
    -bios "C:\Program Files\qemu\share\edk2-aarch64-code.fd" ^
    -drive file=miniroot70.img,format=raw ^
    -net user ^
    -net nic ^
    -nographic ^
    -serial telnet::30023,server,nowait

OpenBSD への接続

TELNET 経由で OpenBSD のシリアルコンソールへの接続を行います。
接続先は QEMU を実行しているホストの 30023/TCP となります。
以下は Tera Term を使用した場合の接続先設定例となります。

TELNET 接続画面

インストール

Raspberry Pi 上での OpenBSD 環境構築』を参照してインストールを行います。
なお本稿では IPv4 アドレスは自動設定 (『autoconf』を選択) を行うこととします。
インストール完了後、ターミナル画面に OpenBSD のログインプロンプトが表示されます。

OpenBSD/arm64 (openbsd.my.domain) (console)

login:

ユーザ名『root』でログインします。
以下のプロンプトが表示されます。

openbsd#

マシンアーキテクチャが『aarch64』であることを確認します。

openbsd# uname -p
aarch64

ネットワーク情報の設定確認

ユーザモードネットワークで DHCP により設定されたネットワーク情報を確認します。

IP アドレス

仮想マシンへは『10.0.2.15/24』以降の IP アドレスが付与されます。
またネットワークインタフェース名は『vio0』となります。

openbsd# ifconfig -a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 32768
        index 3 priority 0 llprio 3
        groups: lo
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet 127.0.0.1 netmask 0xff000000
vio0: flags=808843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF4> mtu 1500
        lladdr 52:54:00:12:34:56
        index 1 priority 0 llprio 3
        groups: egress
        media: Ethernet autoselect
        status: active
        inet 10.0.2.15 netmask 0xffffff00 broadcast 10.0.2.255
enc0: flags=0<>
        index 2 priority 0 llprio 3
        groups: enc
        status: active
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33136
        index 4 priority 0 llprio 3
        groups: pflog

ゲートウェイ

ゲートウェイの IP アドレスは『10.0.2.2』となります。

openbsd# netstat -rn -f inet
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio Iface
default            10.0.2.2           UGS        5       25     -     8 vio0
224/4              127.0.0.1          URS        0        0 32768     8 lo0
10.0.2/24          10.0.2.15          UCn        2        0     -     4 vio0
10.0.2.2           52:55:0a:00:02:02  UHLch      1        2     -     3 vio0
10.0.2.3           52:55:0a:00:02:03  UHLc       0       41     -     3 vio0
10.0.2.15          52:54:00:12:34:56  UHLl       0        2     -     1 vio0
10.0.2.255         10.0.2.15          UHb        0        0     -     1 vio0
127/8              127.0.0.1          UGRS       0        0 32768     8 lo0
127.0.0.1          127.0.0.1          UHhl       1       12 32768     1 lo0

DNS サーバ

DNS サーバの IP アドレスは『10.0.2.3』となります。

openbsd# cat /etc/resolv.conf
nameserver 10.0.2.3 # resolvd: vio0
lookup file bind

OpenBSD の環境設定

システムの環境設定

Raspberry Pi 上での OpenBSD 7.0 環境の構築』を参照して適宜環境設定を行います。