debianのカーネルを使う
apt-get install linux-image-2.6.21-2-686
した後liloしてrebootした後いきなりKernel panicに襲われた。
Switch to high resolution mode on CPU 0 VFS: Cannot open root device "303" or unknown-block (3,3) Please add a correct "root=" boot option Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block
あ、そうかdebianized kernelはinitrdを使ってるんだな。ということで/etc/lilo.confをこんな感じに書き換える。
image=/boot/vmlinuz label=Linux initrd=/boot/initrd.img read-only root=/dev/hda3
そしたら、あっさり起動。DHCP接続もサウンドも問題なし。squashfsも問題なく使用できた。IP MasqueradeもOK。やっぱりパッケージシステムでしっかり管理されていると安心できる♪
と思ったらテレビの録画ができんかった。
v4l2: open /dev/video0: No such file or directory v4l2: open /dev/video0: No such file or directory v4l: open /dev/video0: No such file or directory no grabber device available
ぐぐったらmknodすればいいことがわかったので、
# cd /dev/ # mknod /dev/video0 c 81 0 # ln -s /dev/video0 /dev/video
あっさり録画できた。こんなにとんとん拍子でいっていいのだろうか…
ついでにdebianizeされた最新カーネル2.6.22へ移行してみる。
# apt-get install linux-image-2.6.22-1-686 # lilo
あっさり完了。liloは自分で実行しないといけないようだ。aptもそこまでは面倒見てくれない。
aptは/boot/vmlinuz, /boot/initrd.imgのsymlinkを更新してくれる。けど、/boot/configや/boot/System.mapのsymlinkは更新してくれてない!不備か?
まあカーネルの更新といった大がかりな作業も一発でやってくれるから助かるね。Pentium4用にコンパイルされていないとか勝手にSMPが有効になってるとか不満点は残るのだが…
しまった!debianized squashfsは2.6.18と2.6.21しか対応してない!仕方ないので2.6.21に戻す。まあ2.6.22を消して2.6.21に戻せばいい。消すときにブートできなくなるので危険と言われたが承知でやった。そしてすぐにdpkg-reconfigureしておいたので無事に。
apt-get remove linux-image-2.6.22-1-686 dpkg-reconfigure linux-image-2.6.21-2-686 lilo
><
あら、再起動したら録画ができない!そうか、/devはtmpfsだから再起動したら消えてしまうんだ…
/etc/init.d/udevを読んでると、新しくノードを作る部分を見つけた。そうか、/etc/udev/links.confを書き換えればいいのか。
make_extra_nodes() { if [ "$(echo /lib/udev/devices/*)" != "/lib/udev/devices/*" ]; then cp --archive --update /lib/udev/devices/* /dev/ fi [ -e /etc/udev/links.conf ] || return 0 grep '^[^#]' /etc/udev/links.conf | \ while read type name arg1; do [ "$type" -a "$name" -a ! -e "/dev/$name" -a ! -L "/dev/$name" ] ||continue case "$type" in L) ln -s $arg1 /dev/$name ;; D) mkdir -p /dev/$name ;; M) mknod -m 600 /dev/$name $arg1 ;; *) log_warning_msg "links.conf: unparseable line ($type $name $arg1)" ;; esac if [ -x /sbin/restorecon ]; then /sbin/restorecon /dev/$name >/dev/null 2>/dev/null fi done }
/etc/udev/links.confに以下を追加。/devがtmpfsって今のGNU/Linuxのスタイルなのかな。
L cdr /dev/hdd M video0 c 81 0 L video /dev/video0