kernel-2.4.21の設定

古い設定の記録です。

カスタムカーネルの構築

カスタムカーネル構築のためにkernel-2.4.21にいくつかパッチを当てます。
私が用いたのは、kernel-2.4.21 + acpi-20020619-2.4.21 + swsusp-1.0.3 + cpufreq-2.4.21-2という構成です。

/usr/src/ 以下に kernel-2.4.21のソースを展開して、
ln -s kernel-2.4.21 kernel-2.4
とシンボリックリンクを張ります。
次にパッチを当てていきます。
cd kernel-2.4
zcat ../patches/acpi-20030619-2.4.21.diff.gz | patch -p1
bzcat ./patches/swsusp-1.0-2.4.21/swsusp-1.0-2.4.21.bz2 | patch -p1
bzcat ./patches/swsusp-1.0.1-incremental.bz2| patch -p1
bzcat ./patches/swsusp-1.0.2-incremental.bz2| patch -p1
bzcat ./patches/swsusp-1.0.3-incremental.bz2 | patch -p1
zcat ../patches/cpufreq-2.4.21-2.gz | patch -p1

cpufreqのパッチを当てるときに include/asm-i386/processor.h でRiverse patchが検出されますが、これはそのままパッチを当ててしまいます。その上で、同じディレクトリにあるcpufeature.hの80行付近に
#define cpu_has_pse36 boot_cpu_has(XF86_FEATURE_PSE32)
という行を手動で付け加えます。

あとは通常のカーネル構築と同じ手順です。
make xconfig (or make menuconfig)
make dep; make bzImage; make modules; make modules_install
make install

私の用いた.configはここにあります。
configの要点は次の通りです。
なお、システムブート時にUSB keyboardとUSB mouseの初期化に失敗したようなメッセージが出て気になる場合、/etc/rc.sysinitの、
 
LC_ALL=C grep 'hid' /proc/bus/usb/drivers || action $"Initializing USB HID interface: " modprobe hid 2> /dev/null
    action $"Initializing USB keyboard: " modprobe keybdev 2> /dev/null
    action $"Initializing USB mouse: " modprobe mousedev 2> /dev/null
という部分をコメントアウトしてしまえばいいでしょう。

Software suspendを使う

CF-T2ではACPIを用いたSuspend-Resumeはまだうまく行かないようなので(kernel-2.6.xなどを使えばできるかも)、Software suspendを用います。上でカーネルにパッチを当てたので、あとはサスペンド用のスクリプトのインストールとブートの設定です。

まず、swsusp-1.0-2.4.21.tar.gzを展開して得られる、suspend.shを、rootで実行します。
suspend.sh --install
これで、/usr/sbin/hibernateというコマンドがインストールされました。
次に、swsuspを利用するにはブート時にカーネルオプションを与えてやらなければならないので、/boot/grub/grub.confに記述します。

kernel /boot/vmlinuz-2.4.21 ro root=LABEL=/ resume=/dev/hda5

赤字のところが追加したオプションです。/dev/hda5のところにはswapパーティションを指定します。前に述べた通りこのパーティションは実メモリよりも30%程大きくないといけません。

これで再起動後、rootでhibernateコマンドを実行するとハイバネーションができるはずです。
ただし、リジューム後にネットワークが使えなくなったり(insmod 8139tooで復帰可能)するので、リジューム後に自動復帰スクリプトなどを走らせる必要がありそうです。今後の課題です。