新カーネル導入設定と旧カーネルとの同居
今だに、Debian GNU/Linux
では、カーネルの安定版としてバージョン2.2.x系を採用している。
(2003年7月現在)
しかし、他の多くのLinuxディストリビューションでは2.4.x系が主流となっている。
各種USBデバイスを繋げられること、ALSAの新しいバージョン(ver.0.9)が使えるようになることなど、2.2.xから2.4.xへのアップグレード利点も多い。
そこで、
旧カーネル2.2.17も生かしつつ、新カーネル2.4.20を試していく
ことにする。
旧カーネルと新カーネルはそれぞれ起動し分けることができるよう、LILOの設定も行いたいと思う。
Debianといえば、apt。
カーネルのソースも apt-get コマンドで持ってくるのだ。
root になってから以下のようにカーネルソースを頂戴してくる。
$ su - Password: # apt-get install kernel-source-2.4.20 |
そうしたら、例のごとく(?)カーネルの設定をグラフィカルなインタフェースで行なうため、make xconfig する。
# cd /usr/src/kernel-source-2.4.20 # make xconfig |
カーネルの設定。
いっぺんにいろいろ設定するのは危険なので、必要最低限の設定だけにしておく。
カニさんチップの載った愛用のイーサネットカードを使うための設定。
Network device support → Ethernet(10 or 100 Mbit) → Realtek RTL-8139 PCI Fast Ethernet Adapter support を n から m へ。
こいつのモジュール名は、helpを表示させて確認した。
どうやら今度からは 8139too.o という名前になるらしい。
いろいろなファイルシステムを扱いたかったので、その辺の設定。
File systems → Ext3 journalling file system support を n から y へ
File systems → DOS FAT fs support を n から y へ
File systems → MSDOS fs support を n から y へ
File systems → VFAT(windows-95) fs support を n から y へ
File systems → Native Language Support → Japanese charsets(shift-jis, Euc-jp) を n から y へ
設定が終わったら保存して終了。
カーネルをコンパイル。(構築)
# pwd /usr/src/kernel-source-2.4.20 # make-kpkg kernel_image # cd /usr/src # dpkg -i kernel-image-2.4.20_Custom.1.0_i386.deb |
ここで、eth0 が消えていたので、新しいカーネルにネットワークカードを認識させる。
モジュール8139tooをinsmodし、ifconfigでIPアドレスを振った。 そしてルーティングの設定をrouteでしてあげれば、内ネットワーク、外ネットワークをちゃんと区別できるようになった。
具体的には以下のようなコマンドで解決した。
# insmod 8139too # ifconfig eth0 192.168.0.4 netmask 255.255.255.0 # ifconfig eth0 up # route -add -net 0.0.0.0 netmask 0.0.0.0 dev eth0 gw 192.168.0.1 |
なお、今後は起動時に自動的に eth0 を認識してもらうため、 /etc/modules に 8139too を書き加えておいた。
まだまだやることはいっぱいだ(1) 「カーネルを起動し分ける」
LILOを使って、次の4つを起動し分けるようにしたい。
- 新しく構築したばっかりの最新の2.4.20カーネル
- そのいっこ前の2.4.20カーネル
- もう使わないかもしれないけど、いちおう2.2.17カーネル
- Windows98
/boot/vmlinuz-2.4.20 を /boot/old.vmlinuz-2.4.20 にコピー。
そうしたら次のようなシンボリックリンクをはる。
/vmlinuz → /boot/vmlinuz-2.4.20 /vmlinuz.2.2.17 → /boot/vmlinuz-2.2.17 /vmlinuz.old → /boot/old.vmlinuz-2.4.20 |
次にこの3つのカーネルとwin98とを選んでブートできるように /etc/lilo.conf を書く。 /etc/lilo.conf の骨子は以下の通りだ。
lba32 boot=/dev/hda # boot=/dev/fd0 ### installing LILO in a floppy root=/dev/hda1 install=/boot/boot.b map=/boot/map delay=20 vga=normal default=Linux image=/vmlinuz label=Linux read-only image=/vmlinuz.old label=LinuxOLD read-only optional image=/vmlinuz.2.2.17 label=Linux2.2.17 read-only optional other=/dev/hda3 label=win table=/dev/hda |
なお、上記の boot=/dev/hda をコメントアウトし、 boot=/dev/fd0 のコメントをとり有効にしてから root で /sbin/lilo を実行すると、LILOをフロッピーディスクにインストールできる。 起動ディスク用にLILOディスクが一枚あると便利である。
そのまま書き換えずに root で /sbin/lilo を実行するとハードディスクの MBR に LILO が書き込まれる。
MBRとフロッピーにLILOを 書き込んだらリブート。 Shiftキーを押しながらブートすれば、3つのカーネルと1つの別の OS どれを起動するか選べるようになった。
まだまだやることはいっぱいだ(2) 「コンパクトフラッシュカード R/Wを使う」
コンパクトフラッシュカードリーダ(以下CFと表記するかも)の読み書きのできる
REX-CF03F
という製品を使うため、カーネル 2.4.x を再構築する。
USB CF R/W と USBプリンタ を利用できるにいたるまでの設定は
ここ
と
ここ
で、もうすでに済ませてある。
今回行うのはカーネルレベルで USBデバイスを扱うための設定となる。
まずはこの製品の紹介webサイトに置いてあるパッチを手に入れ、これをあてる。
パッチは /usr/src/kernel-source-2.4.20/drivers/usb/storage ディレクトリに入っている transport.c と unusual_devs.h の2つのファイルにあてる。
~user/lib にメーカのwebサイトから手に入れたパッチを展開し、
root になってから以下のようにパッチを当てた。
もちろんパッチの当て方はパッチに同梱の説明書に詳しく書いてあるので、
実際にやる人はそちらをよく読むべきだと思う。
# cd /usr/src/kernel-source-2.4.20/drivers/usb/storage # patch -p1 < ~user/lib/cf03/patch/redhat7-1/transport.patch # patch -p1 < ~user/lib/cf03/patch/redhat7-1/unusual_devs.patch |
次にカーネルのコンフィグを行う。 /usr/src/kernel-source-2.4.20 にカレントディレクトリを移し、例によって # make xconfig で設定をする。
- USB Support → Support for USB を y から m にする
(モジュール名は usbcore.o) - USB Support → UHCI Alternate Driver (JE) Support が m になっているか確認する
(モジュール名は uhci.o、 2.2.17カーネルのときとは違う名前になったので注意か) - USB Support → USB Mass Storage Support が m になっているか確認する
(モジュール名は usb-storage.o) - USB Support → USB Printer support を n から m にする
(モジュール名は printer.o)
Code maturity level options → Prompt for development and/or incomplete code/drivers
も有効にせよとあるが、有効にしなくても現に動いているので筆者はこれを無視した。
それと、上記にわかるとおり、CF R/Wの設定といっしょに usb プリンターの設定もこっそりと行っている。
旧バージョンのカーネル用のモジュールの名残がまだ詰まっている /usr/src/modules を /usr/src/modules2.2.17 と名前を変えてから、カーネルを再構築、そして、リブートを行う。
リブート後からは root権限で # depmod -av の後に、uhci, usb-storage, printer を modprobe してやれば、CF R/W も usb プリンターも利用できるようになった。
まだまだやることはいっぱいだ(3) 「音楽演奏」
これは手短に紹介。
alsaのソースを apt で頂いてくる。
# apt-get install alsa-source |
# cd /usr/src # tar xvzf alsa-driver.tar.gz |
# cd /usr/src/kernel-source-2.4.20 # make-kpkg modules_image |
# cd .. # dpkg -i alsa-modules-2.4.20_0.9.2-7+Custom.1.0_i386.deb # alsaconf |
以前使っていたバージョン0.4の alsa で演奏をさせると、マクロメディアフラッシュ等で画像の再生に演奏が追い付かなかった。 だがこのバージョン0.9 ではその問題はかなり解消された。 よかったよかった。