また,ここでは 「FreeBSD が起動するブータブル CD-ROM」を CD-FreeBSD と呼び, 「NetBSD が起動するブータブル CD-ROM」を CD-NetBSD と呼びます.
CD-NetBSD を作成する際には,以下の点に関しては CD-FreeBSD と同じなので, CD-FreeBSD の方法をそのまま同じように応用できます.
イメージ用の NetBSD のインストールは,ふだん NetBSD をインストールするときと 同じようにインストールしてしまって構いません. インストール後にはイメージ用 NetBSD を起動して,各種の設定やパッケージ アプリケーションのインストールを行っておきます.
X の設定は,FreeBSD の /etc/XF86Config を流用することができますが, NetBSD ではマウスには wsmouse を使用するため,流用する場合には 以下の修正を加えます.その他の設定に関しては,そのままでもうまく動作します.
リスト1: XF86Config の修正 Section "Pointer" # Protocol "SysMouse" # Device "/dev/mouse" Protocol "Wsmouse" Device "/dev/wsmouse" Emulate3Timeout 50 Resolution 100 Buttons 3 Emulate3Buttons EndSectionその他に,CD-FreeBSD の作成と同様に,以下の作業を行っておきます.
#config netbsd root on ? type ? config netbsd root on cd0a type cd9660このようにしてルートファイルシステムに cd0a, cd9660 を明示することにより, カーネルの起動時に CD-ROM が / にマウントされるようになります. CD-FreeBSD ではブート用の FD イメージ中に /etc/fstab を作成することで CD-ROM を / にマウントしましたが,NetBSD では同様の方法は使えなかったのと, 他にいろいろ試したが良い方法が見つからなかったので,このようにしました.
ただし,このように設定したカーネルを make install してしまうと,HDD から イメージ用 NetBSD を起動したときに,cd0a をルートファイルシステムとして マウントしようとして失敗し,デバイスとファイルシステムのタイプを手動で 入力するよう求めてきてしまいます.(wd0a, ffs などに手動で指定してやる ことになります) このため,イメージ用 NetBSD の場合には,カーネルの make install は行わない ようにします.さらに,strip でネームテーブルを削除しておくとよいでしょう.
さらに,CD-FreeBSD と同様に以下のことを行っておきます.
次に,作業用 FreeBSD を起動して,作業用 FreeBSD 側からイメージ用 NetBSD の 設定を行います.まず,作業用 FreeBSD を起動し,
# mkdir /cdnbsd # mount /dev/ad0s2a /cdnbsd # mount /dev/ad0s2e /cdnbsd/usrのようにして,イメージ用 NetBSD のパーティションを /cdnbsd にマウントします.
まず,CD-ROMからブートさせるための,ブート用のFDイメージを作成します. ブート用 FD イメージには,NetBSD の配布物に含まれる,2.88MB 用の インストール FD のイメージである boot-big.fs を流用することができました. (雑誌の付録CDなどの場合には,i386/installation/floppy などのディレクトリに あります)
CD-FreeBSD と同様に vnconfig を使用して boot-big.fs をマウントし,修正を します.
# mkdir /fd # vnconfig -c vn0 boot-big.fs # mount /dev/vn0c /fd # cd /fd # ls boot netbsd #boot はカーネルローダ,netbsd はカーネルを gzip 圧縮したものです. ここで,イメージ用 NetBSD のカーネルを圧縮して boot-big.fs 上にコピーします.
# cp /cdnbsd/usr/src/sys/arch/i386/compile/CDNBSD/netbsd /tmp # cd /tmp # gzip -9 netbsd_ # mv netbsd.gz /fd/netbsd # umount /fd # vnconfig -u vn0これでブート用の FD イメージが作成できました.
次に,起動時に /tmp を MFS マウントする等のための rc スクリプトを作成します. rc スクリプトには,CD-FreeBSD 作成時に使用した rc.cdrom と rc.diskless2 を 流用できます.
作業用 FreeBSD の /etc/rc.diskless2 を /cdnbsd/etc にコピーします. また,rc.cdrom も /cdnbsd/etc に置きます.
FreeBSD-4.4 の rc.diskless2 を流用する場合には,/var の作成に /etc/mtree/BSD.var.dist を参照するので,FreeBSD-4.4 の配布物から /etc/mtree/BSD.var.dist も /cdnbsd/etc にコピーする必要があります. さらにこのとき,NetBSD にはデフォルトで uucp グループが存在しないので, /cdnbsd/etc/mtree/BSD.var.dist の 74 行目の gname=uucp を,gname=daemon に 修正しておきます.
FreeBSD-4.3 の rc.diskless2 を流用する場合には,/var/log や /var/at が 作成されるように,var_dirs を修正します(FreeBSD-4.4 の rc.diskless2 を 流用する場合には,この修正は必要ありません). 修正の具体的な内容に関しては,CD-FreeBSD の作成の方法を参照してください.
さらに,起動時に rc.cdrom と rc.diskless2 が呼ばれるように, /cdnbsd/etc/rc に以下の修正を加えます.
リスト2: /etc/rc の修正(rc.patch) --- rc.orig Thu Sep 27 14:35:15 2001 +++ rc Wed Oct 3 10:43:41 2001 @@ -12,6 +12,15 @@ export HOME=/ export PATH=/sbin:/bin:/usr/sbin:/usr/bin +# for CD-ROM boot. +# +if [ -r /etc/rc.cdrom ]; then + . /etc/rc.cdrom +fi +if [ -r /etc/rc.diskless2 ]; then + . /etc/rc.diskless2 +fi + . /etc/rc.subr . /etc/rc.confこのとき,CD-FreeBSD を作成したときと同様に,オリジナルの /cdnbsd/etc/rc は /cdnbsd/etc/rc.orig として保存し,新しい /cdnbsd/etc/rc は /cdnbsd/etc/rc.cdbsd というファイル名で作成するようにします.
# cd /cdnbsd/etc # cp /cdfbsd/etc/rc.cdrom . # cp /cdfbsd/etc/rc.diskless2 . # mkdir mtree # cp /cdfbsd/etc/mtree/BSD.var.dist ./mtree # vi ./mtree/BSD.var.dist # mv rc rc.org # cp rc.org rc # patch < /tmp/rc.patch # mv rc.org rc.orig # mv rc rc.cdbsd # cp rc.orig rc
さらに,NetBSD の場合には,起動時に /etc/rc.d/root が呼ばれ,root_start() と いう部分で umount -a によって MFS マウントしたディレクトリがアンマウント されてしまうので,/cdnbsd/etc/rc.d/root の17行目の umount -a を,コメントに 修正します.この際,rc と同様に root.orig, root.cdbsd を作成するのですが, これらのファイルを /etc/rc.d 以下に置いておくと,起動時に実行されてしまうので, root.orig, root.cdbsd は /cdnbsd/etc に置くように注意してください.
# cd /cdnbsd/etc # mv rc.d/root ./root.orig # cp root.orig rc.d/root # cp root.orig root.cdbsd # vi root.cdbsd
次に,fstab を修正します./cdnbsd/etc/fstab を /cdnbsd/etc/fstab.orig に コピーし,/cdnbsd/etc/fstab.cdbsd を以下のように作成します.
リスト3: fstab.cdbsd /dev/cd0a / cd9660 ro 0 0以上で終わりです.あとは CD-FreeBSD と同じように,作業用 FreeBSD で,
# mkimg.sh /cdnbsd CDNBSD boot-big.fs /usr/tmp/cdnbsd.imgのようにして ISO9660 イメージを作成し,CD-R に焼きつけます.
CD-NetBSD は CD-FreeBSD に比べて,起動時の FD のチェックのところの タイムアウト待ちに時間がかかるようです.でもほっておくと先に進むので 気にしない.