NetBSD 用 SD カードイメージファイルのカスタマイズ手順です。
予め一般ユーザの作成と任意のネットワーク情報の設定を行っておくことで、Raspberry Pi 3 Model B+ 上で NetBSD の環境構築を行う際に入出力機器の用意を不要とします。
本稿での作業は NetBSD の環境で行うため、Hyper-V 仮想マシン等に NetBSD をインストールした環境を準備します。
本稿では 2021 年 5 月にリリースされた NetBSD 9.2 を使用します。
arm64.img.gz を取得して作業用環境に転送します。
本稿での作業は全て root 権限で実行します。
SD カードイメージファイルを解凍します。
※SD カードイメージファイルは /var/tmp 以下に転送されていることを前提とします。
root@vmhost# cd /var/tmp
root@vmhost# gunzip arm64.img.gz
SD カードイメージファイルをアタッチします。
root@vmhost# vndconfig vnd0 /var/tmp/arm64.img
アタッチした結果を確認します。
root@vmhost# vndconfig -l
vnd0: / (/dev/sd0a) inode 942203
vnd1: not in use
vnd2: not in use
vnd3: not in use
SD カードイメージファイルに含まれる base system 領域 (『4.2BSD』と表示される箇所) を確認します。
root@vmhost# disklabel vnd0
# /dev/rvnd0:
type: SCSI
disk: STORAGE DEVICE
label: fictitious
flags: removable
bytes/sector: 512
sectors/track: 32
tracks/cylinder: 64
sectors/cylinder: 2048
cylinders: 1149
total sectors: 2354048
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0
8 partitions:
# size offset fstype [fsize bsize cpg/sgs]
a: 2157440 196608 4.2BSD 0 0 0 # (Cyl. 96 - 1149*)
c: 2157440 196608 unused 0 0 # (Cyl. 96 - 1149*)
d: 2354048 0 unused 0 0 # (Cyl. 0 - 1149*)
e: 163840 32768 MSDOS # (Cyl. 16 - 95)
base system 領域をマウントします。
root@vmhost# mount /dev/vnd0a /mnt
base system 領域のマウントを確認します。
root@vmhost# ls -l /mnt
total 12536
-r--r--r-- 2 root wheel 1220 May 12 20:26 .cshrc
-r--r--r-- 2 root wheel 701 May 12 20:26 .profile
drwxr-xr-x 2 root wheel 512 May 12 19:23 altroot
drwxr-xr-x 2 root wheel 1024 May 12 20:24 bin
drwxr-xr-x 2 root wheel 512 May 12 20:28 boot
drwxr-xr-x 9 root wheel 31744 May 12 20:26 dev
drwxr-xr-x 30 root wheel 2048 May 12 20:26 etc
drwxr-xr-x 2 root wheel 512 May 12 20:28 kern
drwxr-xr-x 3 root wheel 2560 May 12 20:25 lib
drwxr-xr-x 3 root wheel 512 May 12 19:23 libdata
drwxr-xr-x 5 root wheel 512 May 12 20:25 libexec
drwxr-xr-x 2 root wheel 512 May 12 19:23 mnt
-rwxr-xr-x 1 root wheel 12542784 May 12 20:28 netbsd
drwxr-xr-x 2 root wheel 512 May 12 20:28 proc
drwxr-xr-x 2 root wheel 3072 May 12 20:26 rescue
drwxr-xr-x 2 root wheel 512 May 12 20:26 root
drwxr-xr-x 2 root wheel 3072 May 12 20:25 sbin
drwxr-xr-x 3 root wheel 512 May 12 20:24 stand
drwxrwxrwt 2 root wheel 512 May 12 19:23 tmp
drwxr-xr-x 13 root wheel 512 May 12 19:23 usr
drwxr-xr-x 24 root wheel 512 May 12 19:23 var
以下例の情報の通り base system 領域内に一般ユーザを作成します。
ユーザ名 | netbsd |
---|---|
パスワード | netbsd |
UID | 1000 |
プライマリグループ | users |
追加グループ | wheel |
ホームディレクトリ | /home/netbsd |
ログインシェル | /bin/sh |
ホームディレクトリを作成します。
root@vmhost# mkdir -p /mnt/home/netbsd
root@vmhost# chown 1000:100 /mnt/home/netbsd
パスワード文字列『netbsd』のハッシュを生成します。
root@vmhost# pwhash netbsd
$sha1$21493$E43KtUnt$km3iIP0IzkvUcWmYehdJtzOGsqIS
/mnt/etc/master.passwd に以下の設定を追加します。
第 2 フィールドの内容は先に生成したパスワードハッシュとなります。
netbsd:$sha1$21493$E43KtUnt$km3iIP0IzkvUcWmYehdJtzOGsqIS:1000:100::0:0::/home/netbsd:/bin/sh
パスワードファイル (/mnt/etc/passwd) ならびにデータベース (/mnt/etc/pwd.db, /mnt/etc/spwd.db) を作成します。
root@vmhost# pwd_mkdb -d /mnt -p /mnt/etc/master.passwd
/mnt/etc/group の wheel グループのエントリに一般ユーザを追加します。
wheel:*:0:root,netbsd
base system 領域内のネットワーク設定ファイルに任意の静的 (固定) 情報を設定します。
/mnt/etc/rc.conf の『dhcpcd=YES』の設定をコメントアウト (または削除) します。
#dhcpcd=YES
/mnt/etc/ifconfig.mue0 を新規に作成して IP アドレスとネットマスク (16 進表記) を設定します。
以下は IP アドレスを『172.16.0.210/24』とする場合の例となります。
172.16.0.210 netmask 0xffffff00
/mnt/etc/rc.conf に『defaultroute=』の設定を追加します。
以下はゲートウェイの IP アドレスを『172.16.0.1』とする場合の例となります。
defaultroute=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# vndconfig -u vnd0
SD カードイメージファイルを圧縮します。
root@vmhost# gzip arm64.img