2005/08/20

カーネル2.6.12.5リリース

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

明日の朝にはパッケージが出来上がっている事だろう。
パッチ当てが失敗していた原因の追求は追い追い。。。

4 Comments:

Anonymous 匿名 said...

> # apt-cache search debian | grep kernel | grep patch

apt-cahce search debian kernel patch
でいいのでは? もうほとんど手癖になってるな?

土曜日, 8月 20, 2005 9:09:00 午前  
Blogger kazufuruk said...

> apt-cahce search debian kernel patch でいいのでは? 

ぅ、確かに。キーワード複数指定が出来るんですね。
ですが完全に同じ結果にはならないようです。

# apt-cache search debian | grep kernel | grep patch | wc -l
27
# apt-cache search debian kernel patch | wc -l
42

キーワード複数指定の場合は微妙に OR っぽいです。
パイプってやると完全に AND 評価するんで、使い分けが必要かも。

> もうほとんど手癖になってるな?

手癖になってますね。
!! とか、
!$ とか、
^hoge^fuga とか。
上記コマンドも、
!! | grep なんちゃら
を繰り返して導き出しています。
もうちっとシナプスのスピードが速ければ一発で目的のコマンドを投げれるのですが(笑)。

日曜日, 8月 21, 2005 5:47:00 午後  
Anonymous 匿名 said...

> キーワード複数指定の場合は微妙に OR っぽいです。

いいえ。複数キーワードの場合はANDです。検索する範囲が違うのです。grepでは表示結果である一行説明にキーワードが入っていなければ無視されてしまいます。
より正確に知るには複数キーワードの方がよいでしょう。

日曜日, 8月 21, 2005 11:35:00 午後  
Blogger kazufuruk said...

> grepでは表示結果である一行説明にキーワードが入っていなければ無視されてしまいます。

ぅあ!そうですわ。表示される部分しか抽出対象としませんわ。それぢゃあ意味が無い。
正確に結果を求めるにはご指摘のとおりキーワード複数指定でないとダメっすね。

火曜日, 8月 23, 2005 12:10:00 午前  

コメントを投稿

<< Home