Last Update: "2006/10/22 23:58:23 makoto"
multi-user
設置が終ったら、通常の起動をします。
この時に、カーネル (netbsd) は Linux の /root/netbsd-GENERIC.KUROBOX.bin (等)
から読みますが、それは sysinst では置いてくれないので手で追加します。
netbsd-GENERIC.KUROBOX.bin.gz を持って来て gzip -d しておきます。
# gzip -d netbsd-GENERIC.KUROBOX.bin.gz
その上で次のように入力します。
root@KURO-BOX:~# cd /
insmod /root/nbloader_v3.o \
kernel=/root/netbsd-GENERIC.KUROBOX.bin \
bootdev=0xa0000000
bootdev は起動ディスクが wd0 の場合の例です。通常はこの設定を使います。
USB メモリの場合には sd0 になるはずなので 0xa0000004 とします。
(ここで本来ならば process を止めて、umount -a するのがいいのですが、
とりあえず、試すということで、これでもいいと思います)。
自動起動
上に書いてあるのは、一度 Linux が起動して、linux に root で login して、手で
入力する例です。これを自動的に動かす方法の一つを紹介します。
例えば、次のような内容を /root/netbsd.sh に用意しておきます。
更に
# chmod +x /root/netbsd.sh
をしておきます。
#!/bin/sh
echo 'Starting NetBSD in 10 seconds'
###
for i in 0 1 2 3 4 5 6 7 8 9; do
echo -n $i '';
sleep 1;
done;
###
/bin/echo -n'AAAAFFFFJJJJ>>>>VVVV>>>>ZZZZVVVVKKKK'> /dev/AVR00
cd /
/bin/umount -f -a
sync;sync;sync
/bin/mount -n -o remount,ro /
insmod /root/nbloader_v3.o \
kernel=/root/netbsd-GENERIC.KUROBOX.bin \
bootdev=0xa0000000
その上で、次のように /etc/rc.d/rcS.d からシンボリック・リンクを張っておきます。
/etc/rc.d/rcS.d/S10netbsd.sh -> /root/netbsd.sh
例えば操作としては、次のようになります。
# cd /etc/rc.d/rcS.d
# ln -s /root/netbsd.sh S10netbsd.sh
実は、これだけです。本当に自動で起動するかを確認します。
rc2.d
2006/10/14 に (この記述を) 変更する前には、rc2.d からリンクしていました。
その方法だと 起動してしまったプロセスが / にあるものを参照しています
(あるいは cd しています)
このため、
umount -a; した時に、device busy と言われます。これでも、そのまま NetBSD
は起動しますが、実は umount が行なわれていません (それが理由
で umount と入力した後でも /root 等が参照出来ている訳です)。
その結果、
次に (Linux File system を) mount する時に fsck が必要になってしまいます。
この項、かわうちさんから直々に教えていただきました
(もっとも玄箱で NetBSD を動かすことについては、全てかわうちさんから教えて
もらったことです)。
自動起動の解除
ところが、こうしてしまうと、おそらく、解除するのはちょっと大変そうです。
が、実は NetBSD から、この linux 側のものは見えるので、それで変更が可能です。
ただし、次のように言われてしまうかも知れません。
ttyp0:root@kuro-hg 9:48:10/061011(~)# mount /dev/wd0e /mnt
mount_ext2fs: /dev/wd0e on /mnt: incorrect super block
ttyp0:root@kuro-hg 9:49:24/061011(~)# fsck_ext2fs -n /dev/rwd0e
** /dev/rwd0e (NO WRITE)
BAD SUPER BLOCK: INCOMPATIBLE FEATURE BITS IN SUPER BLOCK
LOOK FOR ALTERNATE SUPERBLOCKS? no
その時には NetBSD 側に
pkgsrcの
pkgsrc/sysutils/e2fsprogs/
を入れておきます。これを使って
/usr/pkg/sbin/e2fsck /dev/wd0e
のようにすれば、回復可能です。
(以前に rc2.d からリンクしていに時には、
linux を起動するたびに、これが必要になっていました)。
message
上のようにしていると Linux 側の /etc/fstab に
/dev/hda3 /mnt ext3 defaults,noatime 0 0
が残ったままなので、次のように言わています。
Oct 13 08:50:25 KURO-BOX kernel:
EXT3 FS 2.4-0.9.17, 10 Jan 2002 on ide0(3,1), internal journal
Oct 13 08:50:25 KURO-BOX kernel:
EXT3-fs error (device ide0(3,3)): ext3_check_descriptors:
Block bitmap for group 128 not in group (block 0)!
Oct 13 08:50:25 KURO-BOX kernel: EXT3-fs: group descriptors corrupted !
これだからと言って何も実質的には問題がありません。
しかし
上記 fstab の行は行頭に # を書いて無効にしておけば、こう言われないで済みます。
|