カーネル再構築 2.2.19

PlayStation BB Navigatorに付属する2.2.19カーネルソースをPS2Linuxで使いましょう。
あ、そうそう。こちらの方のページも参考にしてみて下さい。
(参考)こちらで2.2.21やってます。

2002.06.01 初稿
2002.09.28 BB Navi 0.20情報追加
2002.10.05 BB NaviのReiserFS, ext2対応の怪しいパッチを公開
2002.10.12 gzipされたカーネルに変更。X環境で使用する際の追加作業。

ここで紹介するやり方はBB NaviやHDDゲームとPS2Linuxを共存している環境です。
つまりPS2Linuxβ版をベースにしたものです。PS2Linux 1.0ベースの場合とHDD認識が異なりますので気をつけてください。

BB Navigator 0.10 DISC 2 に source.tgz という固まりがあります。
この中に kernelソースがありますが、若干のパッチ宛てが必要です。

# cd /usr/src
# mv linux linux.org              →2.2.1_ps2へのシンボリックリンクを待避(最初だけね)

BB Navi 0.10 DISC2からソース持ってくる
# cd /var/tmp
# tar zxf /mnt/cdrom/source.tgz

rpmから強制的にファイルを取り出してみる。(rpmでそのまま入れても良いかな。。。)
# cd kernel
# rpm2cpio kernel-2.2.19_ps2-5.src.rpm | cpio -i --make-directories
# cd /usr/src
# tar zxf /var/tmp/kernel/linux-2.2.19.tar.gz

HDDフォーマット認識がBB Navi仕様になっているので、PS2Linux仕様にパッチまたは怪しいパッチを宛てる
# cd /usr/src/linux
# patch -p0 < bblinux.diff

ここから先は普通のカーネル再構築
# cd /usr/src/linux
# cp -p config_ps2  .config           →とりあえずデフォルトのカーネル設定にする
# make menuconfig                →オプションとか好きにいじる
# make dep
# make clean
# make

# make modules
# make modules_install

# mount /mnt/mc00
# gzip -c9 vmlinux > /mnt/mc00/vmlinux-2.2.19.gz →圧縮したカーネルを作成(未圧縮でコピーでも可)

# vi /mnt/mc00/p2lboot.cnf(2行目の vmlinux-2.2.19.gz のエントリを追加)
"Linux on MC" vmlinux "" 203 /dev/hda1 "" Linux on Memory Card(PS2)
"Linux 2.2.19" vmlinux-2.2.19.gz "" 203 /dev/hda1 "" Linux-2.2.19 on Memory Card(PS2)
"Single" vmlinux "" 203 /dev/hda1 single Single User Mode
"Emergency" vmlinux "" 203 /dev/hda1 emergency Emergency Mode
# umount /mnt/mc00

ps2rtc.oが増えてるので /etc/rc.d/rc.sysinitの "# load PS2 modules" のあたりに一行追加しておいた方がいいかも。
[ -f /lib/modules/`uname -r`/misc/ps2rtc.o ] && insmod ps2rtc
ところでX環境で使う人は、マウス周りを修正する必要があります。
こことか こことか ここ を参考にして作業して下さい。(あんまり試してないもんで人任せ。。。)

あと、この2.2.19カーネルだと起動時に ps2sd.o(サウンドモジュール)のロードに失敗します。
これは、サウンド関係の環境が、RuntimeEnvironment 1.0でも古すぎるためです。
BB Navigatorだともっとサウンド周りが改良されているのでしょう。
PS2Linux1.0のCDじゃどうにもならないので、2.2.1のモジュールを強制ロードすれば使えるようです。。。
# insmod -f /lib/modules/2.2.1_ps2/misc/ps2sd.o
自動化したいなら /etc/rc.d/rc.sysinit あたりを変えればいいのです。

さて、2.2.19にすることでどう変わるんでしょう。
とりあえず気が付いたのは、
 ・結構USBが行ける。USBメモリキーのマウントもできました。
 ・smbfsでマウントできる。Windows共有をマウントできるってことですね。
 ・konが使えない。。。。原因等未調査
 ・(怪しいパッチを宛てると)BB Navigatorのパーティション __linux.X (ReiserFS, ext2)がマウントできる。
なんかあったら教えて!


BB Navigator 0.20 DISC に source.tgz という固まりがあります。
この中に kernelソースがありますが、今回はカーネルヘッダが入っていません。
0.10に0.20を組み合わせてもうまくいきませんでした。


BB Navi 0.20 からソース持ってくる
# cd /var/tmp
# tar zxf /mnt/cdrom/source.tgz

# cd kernel
# rpm2cpio kernel-source-2.2.19_ps2-23.mipsel.rpm | cpio -i --make-directories

BB Navi 0.10とパッケージの仕方が変わってます。
cpioしたあとは、こんな感じ
/var/tmp/source/kernel/usr/src/linux/

BB Navi 0.10 + 0.20 というカーネルソースでコンパイルしたら usb周りでエラーった。
というわけで、全上書きではなく、部分的に更新すればもしかしたら。。。
そこまでする必要があるかどうかは謎です。(一応usb以外の更新でならいけました)

(参考)更新ファイル一覧
./Makefile
./arch/mips/defconfig
./arch/mips/kernel/r2300_fpu.S
./arch/mips/ps2/kernel/Makefile
./arch/mips/ps2/kernel/debuglog.c
./arch/mips/ps2/kernel/ide.c
./arch/mips/ps2/kernel/reset.c
./config_ps2
./drivers/block/ide-probe.c
./drivers/block/ide.c
./drivers/char/serialgdb.c
./drivers/ps2/cdvd.c
./drivers/ps2/mc.c
./drivers/ps2/sd.c
./drivers/ps2/sd.h
./drivers/ps2/sdcall.h
./drivers/ps2/smap.c
./drivers/ps2/smap.h
./drivers/scsi/scsi.c
./drivers/scsi/scsi.h
./drivers/scsi/scsi_error.c
./drivers/scsi/sd.c
./drivers/scsi/sg.c
./drivers/usb/Config.in
./drivers/usb/devices.c
./drivers/usb/hid.c
./drivers/usb/hub.c
./drivers/usb/keybdev.c
./drivers/usb/usb-storage.c
./drivers/usb/usb-storage.h
./drivers/usb/usb.c
./drivers/usb/usbkbd.c
./drivers/usb/usbpd.c
./drivers/video/ps2dma.c
./drivers/video/ps2gs.c
./init/main.c

(参考)新規ファイル一覧
./drivers/char/defkeymap.c
./drivers/char/hfmodem/gentbl/
./drivers/char/hfmodem/tables.h
./scripts/lxdialog/checklist.o
./scripts/lxdialog/inputbox.o
./scripts/lxdialog/lxdialog
./scripts/lxdialog/lxdialog.o
./scripts/lxdialog/menubox.o
./scripts/lxdialog/msgbox.o
./scripts/lxdialog/textbox.o
./scripts/lxdialog/util.o
./scripts/lxdialog/yesno.o
./scripts/mkdep/
./scripts/split-include/


怪しいパッチについて

BB Navigator の "__linux.X" というIDのパーティションを認識するようになります。 →この辺の話はこっち

注意!!
書き込みは一切確認していません。この手の物はリードオンリーで使用しましょう。
 書き込みするとどうなるかは全然わかりません。下手すると壊すし、もしかしたら問題なしかもしれない。
linuxのパーティションがすでに hda10 を越えて使用している場合は使用しないで下さい。どうなるかわかりません。
 パッチをちょっとだけ修正すればいける気がしますが試していません。
・何がおこるかわかりません。

__linux.Xのパーティションは /dev/hda11〜 に割り当てられます。
もしかしたら /dev に hda16くらいまでしかないかもしれません。
__linux.8 など大きい数字の物が足りない場合は、下記の要領でデバイスを用意して下さい。

# cd /dev
# vi MAKEDEV   593行目くらいの for part in 1 2 … 8 # 9 … にある # を消す
# ./MAKEDEV hda

マウントの仕方ですが、普通に

# mount -t reiserfs -o ro /dev/hda11 /mnt/〜 とか
# mount -t ext2 -o ro /dev/hda13 /mnt/〜 とかでいいです。


戻る