副題:落ちててごめんなさい。
松下です。GLANTANKでiSCSIをやりたいがために、ノーマルkernelの2.6.10+αから、2.6.18以上にしたかったのです。
結果、2.6.18.8にできたので、ご報告。
その間、1週間もma2shita.jpが落ちていたってのは秘密です。が、mailはGoogle Apps Std.に移行してあったので、ぜんぜん問題ありませんでした。
最終的にはHiro’s Barで公開されていた、GLANTANK 2.6.18.1用patchに手直ししたpatchを、kernel.orgからダウンロードしてきた2.6.18.8に当てて、コンパイル→initrdの作り直しでいけました。
手順はこんな感じです。
いい忘れましたが、GLANTANKへのinstallは、Debian構成です。ただしシリアルがありませんので…
シリアルがないのにDebian構成をinstallして使い物にする方法
- 母艦PCでDebian構成としてHDDにインストール。
- HDDをGLANTANKにつけてboot。ビープが鳴り止み、初期設定が終わった(と思ったら<確認しようがない)電源ボタンをOFFにする。→shutdown -h nowが走るようだ。
- GLANTANKからHDDを抜き出し、母艦PCに接続。ext3がread/writeできるOSから、以下のファイルを編集。(IP固定化、telnetでrootログイン可能にする)
echo 'pts/0' >> etc/securetty echo 'pts/1' >> etc/securetty echo 'nameserver DNS_SERVER' > etc/resolv.conf echo 'HOSTNAME' > etc/hostname echo 'HOSTNAME.DOMAIN' > etc/mailname cat <<EOF etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address FIXED_IP_ADDRESS netmask 255.255.255.0 network NETWORK_ADDRESS broadcast BROADCAST_ADDRESS gateway GATEWAY_ADDRESS EOF
書き換えが終われば、GLANTANKに接続してbootするだけです。telnetでrootログインできるはず。
sargeからetchにdist-upgradeしちゃいました。
2.6.18.8用patchファイルの作成
簡単です。GLANTANK 2.6.18.1用patchのMakefileを直すだけです。
$ diff -u linux-2.6.18.1-glantank.diff linux-2.6.18.8-glantank.diff --- linux-2.6.18.1-glantank.diff 2006-10-16 14:37:39.000000000 +0900 +++ linux-2.6.18.8-glantank.diff 2007-07-08 12:12:48.000000000 +0900 @@ -629,8 +629,8 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 18 --EXTRAVERSION = .1 -+EXTRAVERSION = .1-glantank +-EXTRAVERSION = .8 ++EXTRAVERSION = .8-glantank NAME=Avast! A bilge rat! # *DOCUMENTATION*
これでおしまい。Hiro’s Barさん、感謝。
kernelツリー展開→patch適用→コンパイル(zImage作成、modules作成)→modulesインストール
kernel.orgからlinux-2.6.18.8.tar.gzをdownloadしてきて、/tmpに保存。
さっき作った2.6.18.8用patchふぁいるも、/tmpに保存。
その上で、以下の作業。(めんどうくさいのでrootでやっちゃってます。)
# cd /usr/src # tar -xzf /tmp/linux-2.6.18.8.tar.gz # cd linux-2.6.18.8 # patch -Np1 < /tmp/linux-2.6.18.8-glantank.diff # make CC=gcc-3.4 clean # make CC=gcc-3.4 oldconfig # make CC=gcc-3.4 zImage modules modules_install
- ポイント
- gccには3.4を使うように指定しましょう。さもないと、CROSS Compileがかかったり→起動しない→orz、gcc-4.0をつかったり→起動しない→orz。です。
- make oldconfigに使用する.configファイルは、Hiro’s Barからダウンロードしてきた、2.6.18.1へのパッチの中にdot.configという名前で含まれています。(2.6.18.8で使った.configはそのうち公開します。待てなければ連絡して。)
- modules_installでは、モジュールが /lib/modules/2.6.18.8-glantank にコピーされます。もしすでに存在している場合は、あらかじめ cp -rp /lib/modules/2.6.18.8-glantank /lib/modules/2.6.18.8-glantank.old とかしておきましょう。
- 時間は、2時間くらいかかります。(うろおぼえ
initrdの作り直し
# gzip -cd /boot/initrd > /tmp/initrd # mount -o loop /tmp/initrd /mnt # cd /lib/modules # tar cf - 2.6.18.8-glantank | (cd /mnt/lib/modules ; tar xf -) # rm -f /mnt/lib/modules/noversion/* # umount /mnt # gzip -c /tmp/initrd > /tmp/initrd-2.6.18.8-glantank
- ポイント
- tarコマンドの時に容量がオーバーしたら、/mnt/lib/modules/2.6.* を削除してもう一度上のコマンドを試そう。それでもオーバーする場合は、もうあきらめるか、modulesの数を減らしなさいな。
kernelの入れ替え
# cp -p /boot/zImage /boot/zImage.old # cp -p /boot/initrd /boot/initrd.old # cp -p /usr/src/linux-2.6.18.8/arch/arm/boot/zImage /boot/zImage # cp -p /tmp/initrd-2.6.18.8-glantank /boot/initrd
これでおしまい。
もし起動しなかったら、/boot/*.oldを元の名前に戻すのです。
効果
わからん。iSCSIもやる気が失せ気味。そのうちやる気も出るでしょう。
というか、2.6.21.6+Intel XScale IOP patch化をしています。DMAまわりが2.6.20で改善されているらしいので、ディスクアクセスの速度向上に期待です。
コメント