2011/09/17(Sat)CentOS 5.xで新しめのカスタムカーネルの起動に失敗する場合の対処法
2011/09/17 3:41
ちょっと古めのPentium 4を積んでいるP-ATA接続なマシンで*1カスタムカーネルを作ると、起動でコケることがあったので、そのコンフィグのメモ。
環境
マシンはEpson DirectのEndeavor AT950.ディストリビューションはCentOS 5.6.
カスタムカーネルは、linux-2.6.32.16を/boot/config-2.6.18-238.19.1.el5を元にmake oldconfigだけしてコンパイルしたもの。選択肢は全てデフォルトそのまま。
現象
いわゆるprocfsやらsysfsやらが認識できない系のトラブル。Scanning and configuring dmraid supported devices Creating root device. Mounting root filesystem. mount: could not find filesystem '/dev/root' Setting up other filesystems. Setting up new root fs setuproot: moving /dev failed: No such file or directory no fstab.sys, mounting internal defaults setuproot: error mounting /proc: No such file or directory setuproot: error mounting /sys: No such file or directory Switching to new root and running init. unmounting old /dev unmounting old /proc unmounting old /sys switchroot: mount failed: No such file or directory init used greatest stack depth: 2676 bytes left Kernel panic - not syncing: Attemted to kill init! Pid: 1, comm: init Not tainted 2.6.32.16-custom #1 Call Trace: [<c042ed81>] ? panic+0x3e/0xe5 [<c0431631>] ? do_exit+0x5a/0x5c8 [<c0431bf9>] ? do_group_exit+0x5a/0x7f [<c0431c2b>] ? sys_exit_group+0xd/0x10 [<c04028c5>] ? syscall_call+0x7/0xb
解決方法
推奨されていないようだが、SYSFS_DEPRECATED_V2を有効にすると解決する。Symbol: SYSFS_DEPRECATED_V2 [=n] Prompt: enable deprecated sysfs features which may confuse old userspace tools Defined at init/Kconfig:608 Depends on: SYSFS [=y] Location: -> General setup Selects: SYSFS_DEPRECATED [=n]CentOS 5.xのような古いカーネルをベースに作られているディストリに新しめのカーネルを載せる時のように、新しいカーネルではObsoleteになった機能をuserlandが要求するということが有るので注意ということで。
別な現象
kernelのブートパラメータでroot=UUID=xxxxxのように書いていると同じようになった事が。root=/dev/sdaXのように書いたらOK.(要調査)
特殊なチップセットの場合に注意
最近のチップセットは、専用のカーネルデバイスドライバを組み込まないと、内蔵HDD/SDDへアクセスできず、これと同じ現象に陥る事がある。例えば、Intel US15W System Controller Hubを使っているONKYO TW217A5等では、Intel SCH PATA(CONFIG_PATA_SCH)というコンフィグを有効にする必要がある。
CONFIG_PATA_SCH: This option enables support for Intel SCH PATA on the Intel SCH (US15W, US15L, UL11L) series host controllers. If unsure, say N. Symbol: PATA_SCH [=m] Type : tristate Prompt: Intel SCH PATA support Defined at drivers/ata/Kconfig:637 Depends on: ATA [=y] && ATA_SFF [=y] && ATA_BMDMA [=y] && PCI [=y] Location: -> Device Drivers -> Serial ATA and Parallel ATA drivers (ATA [=y]) -> ATA SFF support (ATA_SFF [=y]) -> ATA BMDMA support (ATA_BMDMA [=y])カーネル組み込み(=y)とした場合は特に必要ないが、カーネルモジュール(=m)とした場合はinitrdを作る段階で組み込みが必要。
# mkinitrd --preload pata_sch /boot/initrd-2.6.32.16-custom.img 2.6.32.16-custom