どうも最近、Linuxのブートに失敗することがある。
原因はLinuxの2.6.21に上げたことか。Debianのmake-kpkgで作成したkernel-imageなのだが。
失敗時のエラーを見るとルートファイルシステムがマウントできないことから起動できなくなっているらしい。いつもHDDは/dev/hdaと認識されているのだが、エラー時のログを見ると/dev/sdaと認識されている。そのため/devにhda7が見付からず、ルートファイルシステムをマウントできないという状況になってしまっているらしい。hdaをsdaと認識する率は半々程度なのだが、リモート操作の場合は致命的だ。特にLinux Kernelが無線LAN実験の影響でkernel panicになり自動リブートする際に再起動で失敗してしまう。このkernel panicはかなりの頻度で発生する。
ここ1週間、解決法を探しているのだがうまく見付からない。いっそのことsdaを認識しないカーネルでも作った方がマシだろうか。
補足:
Ubuntuマシンの/boot/grub/menu.lstを見たら、
root=UUID=482d9f31-1a6d-4a9a-a62e-4d82a7615050
となっていた。UbuntuのUSBブートを試したときも、CD-ROMからUSBメモリのUUIDを指定することでどのようにUSBメモリが認識されても起動することができるようになっていた。そのような仕組みを通常のHDDブートの際にも用いているようだ。この方法ならうまくいくかもしれない。
補足:
http://enterprisezine.jp/article/detail/86/?p=2
カスタムカーネルでスリム化とパフォーマンス向上を実現
sudo blkid
にて取得したIDをroot=UUID=以降に記述してみた。リモートなので失敗すると再起動できない理由からうまく起動するかどうかまでは実験していないが、たぶん大丈夫だと思う。
Linuxのブート時に止まる不具合 への1件のフィードバック