Skip to content

GLANTANKのkernelを2.6.18.8にしたよ

副題:落ちててごめんなさい。

image

松下です。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して使い物にする方法

  1. 母艦PCでDebian構成としてHDDにインストール。
  2. HDDをGLANTANKにつけてboot。ビープが鳴り止み、初期設定が終わった(と思ったら<確認しようがない)電源ボタンをOFFにする。→shutdown -h nowが走るようだ。
  3. 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で改善されているらしいので、ディスクアクセスの速度向上に期待です。

コメント

メールアドレスは管理のためだけに使います。表示されませんのでご安心を。 *は必ず入力してください。
*
*