Linuxカーネル2.6.12.5が8/15にリリースされていた。
良い機会なので、Debian辞典を参考にソフトウェアサスペンドを
利用可能にするパッチを当てて新カーネルを作ってみる事にする。
メモリ状態を保存するエリアとしてスワップパーティションを利用するが、
メインに使用しているX40(葵の上)は物理メモリ1GBに対し、
スワップパーティションを512MBしか用意しなかった。
最低でも保存するエリアにメモリと同じサイズが必要。
1.5倍ある事が望ましいらしい。失敗したな。
というわけで物理メモリ384MBにスワップ512MBある自宅X21(空蝉の君)を使用。
良い機会だったので以下コマンドでカーネルパッチにどんなものがあるのかも調査。
# apt-cache search debian | grep kernel | grep patch
サスペンドパッチ以外に面白そうなパッチは以下だろう。
それ以外は手が出せそうもない。
kernel-patch-debianlogo - Display a Debian logo on a framebuffer device at boottime
linux-patch-debian-2.6.12 - Debian patches to version 2.6.12 of the Linux kernel
大改造となりそうなので今回ログは大真面目に残そう。以下作業ログ。
--
ソフトウェアサスペンドを可能とするカーネル外部パッチを取得するため
以下のAPTリポジトリを/etc/apt/sources.listに追加
deb http://ftp.jp.debian.org/debian ../project/experimental main contrib non-free
カーネルパッチパッケージとハイバネートコマンドをインストール
# apt-get install kernel-patch-debianlogo linux-patch-debian-2.6.12 kernel-patch-suspend2 hibernate
カーネルソースツリー展開
# tar xjvf linux-2.6.12.5.tar.bz2 -C /usr/src
# rm /usr/src/linux ; cd /usr/src
# ln -s ./linux-2.6.12.5 linux ; cd linux
前バージョンのカーネルパラメータを反映し追加パラメータ等をチェック
# cp /boot/config-2.6.12.4-686 ./.config
# make oldconfig
追加等があればサスペンドパッチを当てる前に一度作成し様子を見て、
問題無ければレビジョンを上げてサスペンド有りのカーネルを作るつもりだった。
とりあえず追加パラメータは無さそうなのでパッチを当ててしまう。
# make-kpkg clean
# make-kpkg --append_to_version -686 --revision rev01 --added-patches debian,debianlogo,suspend2 --config menuconfig configure
。。。エラー。以下のメッセージが表示される。
/usr/share/kernel-package/rules:1524: *** Could not find patch for suspend2。中止。
エラーメッセージを出しているファイルを調査する。
どうも適用できるパッチが無いため吐かれたメッセージのようだ。
以下コマンドにてサスペンドパッチ kernel-patch-suspend2 のファイル構成を調査。
# dpkg -L kernel-patch-suspend2
。。。どうも2.6.12バージョンののサスペンドパッチはまだ作成されていないようだ。
のぉぉぉぉぉーーー!!なぜ2.6.12は無いのだ?
ぢつはご本家が2.6.12から対応していたりして。。。正解。
make menuconfig で覗いてみたらおわしました。
トップレイヤーに Power Management options という設定が。
よってサスペンド以外のパッチを当て、内部的に実行される
make menuconfig にてサスペンドのカーネルパラメータ設定を行う。
# make-kpkg --append_to_version -686 --revision rev01 --added-patches debian,debianlogo --config menuconfig configure
。。。以下のエラーが出た。どうもパッチ当てに失敗したらしい。
W: No version.Debian file, assuming pristine Linux
E: Can't patch to nonexistent revision (wait until 2006)
Patch /usr/src/kernel-patches/all/2.6.12/apply/debian failed.
No "Debian Logo" patch found for kernel version 2.6.12.5
Patch /usr/src/kernel-patches/all/apply/debianlogo failed.
Hit return to Continue
やはり最新のカーネルには対応していないか。
仕方無い。今は構わずパラメータ設定を行う。
サスペンド時に使用する退避用エリアに/dev/hda2(スワップ)を設定。
カーネルパッケージビルドコマンドを投げる
# make-kpkg --initrd kernel_image modules_image
明日の朝にはパッケージが出来上がっている事だろう。
パッチ当てが失敗していた原因の追求は追い追い。。。