トップ «前の日記(2006年05月22日 (月)) 最新 次の日記(2006年05月24日 (水))» 編集

*Messages*

Search

書いてる人: しまだみつのぶ (aka. simm, saica)

最新情報URL: https://gouketsu.net/simm/d/

"8024402C"でたどり着かれた方はこちら: 「壁の内側からWindowsUpdateに失敗する


2006年05月23日 (火) [長年日記]

1 [comp] 玄箱カーネルを2.6化

自宅の玄箱は玄箱うぉううぉう♪で公開されているDebian環境をベースにして、apt-getで適宜upgradeを重ねたtesting環境なのだが、ある時期を境に、電源を切ることができなくなっていた。玄箱を接続しているACアダプタはスイッチがついているタイプなので、電源が切れなくても困るわけではないのだが、気持ち悪いので、何とかしたい状況が続いていた。

いろいろ状況を調査したところ、どうやらモジュールまわりの操作に軒並み失敗しているらしいことが判明。あるタイミングのupgrade以降、2.4カーネルではモジュールが扱えなくなってしまっていたらしい。

ということで、カーネルを2.6化することにした。

方針

あまり手間をかけたくないうえ、危険を冒したくないので、

  • loader.o を用いることでフラッシュを書き換えずに
  • Genbako kernel collectionにあるカーネルを用いて

2.6化することにした。

作業

まずは、手順にしたがって2.6化作業を行う。カーネル変更まではとくに問題なく完了。リブートしたところ、


何も操作できないので、一旦電源を落として再度起動したところ、とりあえずはssh接続できたが、uname -a したところ、どうやら2.4カーネルが動いているっぽいことがわかる。

試しに(1)

root で、ブート時に行われる動作

insmod /lib/modules/2.4.17_kuro-box/kernel/loader.o kernel=/boot/vmlinux.bin

を直接実行してみたところ、

Kernel requires old insmod, but couldn't run insmod.modutils: No such file or directory

と返ってきた。まあ、そりゃ、モジュール系が失敗するんだから、これも失敗するのは仕方ないわな。

そこで、一旦 vmlinux.bin / System.map / .config の3ファイルを別ディレクトリ(とりあえずは/boot/TMP)に移す。再起動したところ、何事もなく2.4カーネルが起動する。

試しに(2)

玄箱うぉううぉう♪で公開されているDebian環境に含まれる insmod を /boot にコピーし、

/boot/insmod /lib/modules/2.4.17_kuro-box/kernel/loader.o kernel=/boot/TMP/vmlinux.bin

とやってみたところ、無事 2.6 カーネルが起動した。

そこで、一旦/boot/TMPに移動しておいた3ファイルを/bootに戻し、rootで

/boot/insmod /lib/modules/2.4.17_kuro-box/kernel/loader.o kernel=/boot/vmlinux.bin

を行い、しばらく待ってみたが、

起動スクリプトを読む

となると、疑うべきは起動スクリプト。ということで、起動スクリプトを読む。どうやら

  1. Debianは、まず runlevel 2 で起動する。
  2. /etc/rc2.d/S01kuro_load_wd で telinit 3 が行われ、runlevel 3 で起動し直す。
  3. /etc/rc3.d/S90kuro_load で、上記 insmod が起動される。ここで起動するカーネルは /etc/kuro_load_param に書かれている。
  4. /etc/kuro_load_param で指定されるカーネルが runlevel 2 で起動される。
  5. ここで本来なら通常のブート処理が行われるはず。

という流れらしい。しかし、最後のブート処理で何かがループしてるのか、sshできない状況になっているらしい。

試しに(3)

insmod で起動する新カーネルの runlevel を 2 でも 3 でもないものにしてみればいいのではないか、という考えが頭をよぎる。そこで、

  • /etc/rc3.d/S90_kuro_load の insmod を /boot/insmod に変更
  • /etc/kuro_load_param の OPTIONS で runlevel を指定 (5にしてみた)
(旧) OPTIONS="root=/dev/hda1"
(新) OPTIONS="root=/dev/hda1 5"

したうえで再起動し、しばらく待って、恐る恐るsshで接続を試みたところ、


uname -a を行い、2.6系が動いていることを確認。

また、この状態で電源ボタンを長押ししたところ、しばらくして電源が切れた。

結論

「試しに(3)」に記載の手順で動くようになった。

2 [rail] 乗車車両 (2006-05-23)

出勤

FL24(8823) → VE77+X62(8112)

帰宅: 会社前のバス停よりバスにて天理駅まで

L85(8085) → L81(8581)

本日のツッコミ(全2件) [ツッコミを入れる]
1 opaopa (2007年09月29日 (土) 23:56)

同様の問題で、困っていた者です。<br>上記方法にて解決しました。ありがとうございました!

2 opaopa (2007年10月09日 (火) 16:47)

上記の書き込みをしたものですが、完全に解決したかに見えて、<br>実はリブートすると2.4カーネルに戻ってしまうという現象に見舞われています。<br>以下の玄人志向の公式サイトBBSに同一の症状を訴えている方も<br>いらっしゃるようです。<br>http://kuroutoshikou.com/modules/kurobbs/?tid=1145<br><br>もし、思い当たる節がありましたら、お力を拝借できれば幸甚です。


Information

更新情報取得方法

*Messages* の更新情報取得には、antenna.lirs もしくは index.rdfをご利用ください。 豪傑アンテナLIRSからも取得可能です。