FreeBSD 用 SD カードイメージファイルのカスタマイズ手順です。
予め任意のネットワーク情報を設定しておくことで、Raspberry Pi 3 Model B+ 上で FreeBSD の環境構築を行う際に DHCP サーバや入出力機器の用意を不要とします。
本稿での作業は FreeBSD の環境で行うため、Hyper-V 仮想マシン等に FreeBSD をインストールした環境を準備します。
本稿では 2021 年 4 月にリリースされた FreeBSD 13.0-RELEASE を使用します。
FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img.xz を取得して作業用環境に転送します。
本稿での作業は全て root 権限で実行します。
SD カードイメージファイルを解凍します。
※SD カードイメージファイルは /tmp 以下に転送されていることを前提とします。
root@vmhost# cd /tmp
root@vmhost# unxz FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img.xz
SD カードイメージファイルをアタッチします。
※以下のコマンドは『mdconfig -a -t vnode -f /tmp/FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img』と等価です。
コマンドの実行結果として割り当てられたユニット名が表示されます。
root@vmhost# mdconfig /tmp/FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img
md0
アタッチした結果を確認します。
root@vmhost# mdconfig -lv
md0 vnode 3072M /tmp/FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img
SD カードイメージファイルに含まれる base system 領域 (『freebsd-ufs』と表示される箇所) を確認します。
root@vmhost# gpart show
=> 63 62914497 da0 MBR (30G)
63 1 - free - (512B)
64 62914496 1 freebsd [active] (30G)
=> 0 62914496 da0s1 BSD (30G)
0 58720256 1 freebsd-ufs (28G)
58720256 3145728 2 freebsd-swap (1.5G)
61865984 1048512 - free - (512M)
=> 63 6291393 md0 MBR (3.0G)
63 2016 - free - (1.0M)
2079 102312 1 fat32lba [active] (50M)
104391 6187041 2 freebsd (3.0G)
6291432 24 - free - (12K)
=> 0 6187041 md0s2 BSD (3.0G)
0 57 - free - (29K)
57 6186880 1 freebsd-ufs (2.9G)
6186937 104 - free - (52K)
base system 領域をマウントします。
root@vmhost# mount /dev/md0s2a /mnt
base system 領域のマウントを確認します。
root@vmhost# ls -l /mnt
total 88
-rw-r--r-- 2 root wheel 1023 Apr 9 15:45 .cshrc
-rw-r--r-- 2 root wheel 507 Apr 9 15:45 .profile
drwxrwxr-x 2 root operator 512 Apr 9 15:33 .snap
-r--r--r-- 1 root wheel 6109 Apr 9 15:45 COPYRIGHT
drwxr-xr-x 2 root wheel 1024 Apr 9 15:36 bin
drwxr-xr-x 15 root wheel 1024 Apr 9 15:46 boot
dr-xr-xr-x 2 root wheel 512 Apr 9 15:33 dev
drwxr-xr-x 27 root wheel 2048 Apr 9 15:46 etc
-rw-r--r-- 1 root wheel 0 Apr 9 15:46 firstboot
drwxr-xr-x 3 root wheel 512 Apr 9 15:46 home
drwxr-xr-x 5 root wheel 1536 Apr 9 15:37 lib
drwxr-xr-x 3 root wheel 512 Apr 9 15:35 libexec
drwxr-xr-x 2 root wheel 512 Apr 9 15:33 media
drwxr-xr-x 2 root wheel 512 Apr 9 15:33 mnt
drwxr-xr-x 2 root wheel 512 Apr 9 15:33 net
dr-xr-xr-x 2 root wheel 512 Apr 9 15:33 proc
drwxr-xr-x 2 root wheel 2560 Apr 9 15:36 rescue
drwxr-xr-x 2 root wheel 512 Apr 9 15:45 root
drwxr-xr-x 2 root wheel 2560 Apr 9 15:41 sbin
drwxrwxrwt 2 root wheel 512 Apr 9 15:33 tmp
drwxr-xr-x 13 root wheel 512 Apr 9 15:33 usr
drwxr-xr-x 24 root wheel 512 Apr 9 15:33 var
base system 領域内のネットワーク設定ファイルに任意の静的 (固定) 情報を設定します。
/mnt/etc/rc.conf の『ifconfig_DEFAULT="DHCP"』の設定をコメントアウト (または削除) して、『ifconfig_ue0=』の設定を追加します。
以下は IP アドレスを『172.16.0.200/24』とする場合の例となります。
#ifconfig_DEFAULT="DHCP"
ifconfig_ue0="inet 172.16.0.200 netmask 255.255.255.0"
/mnt/etc/rc.conf に『defaultrouter=』の設定を追加します。
以下はゲートウェイの IP アドレスを『172.16.0.1』とする場合の例となります。
defaultrouter="172.16.0.1"
/mnt/etc/resolv.conf を新規作成して DNS サーバの設定を行います。
以下は DNS サーバを『8.8.8.8』と『8.8.4.4』とする場合の例となります。
nameserver 8.8.8.8
nameserver 8.8.4.4
base system 領域のマウントを解除します。
root@vmhost# umount /mnt
SD カードイメージファイルをデタッチします。
root@vmhost# mdconfig -du md0
SD カードイメージファイルを圧縮します。
root@vmhost# xz FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img