手元の DELL Precision T3500 に Ubuntu Server を入れてテスト開発用
に使っているのだが、すこし調子がわるかったので、OSの入れ替えを検討
していたのだけど、そのまえに一回 Release Upgrade (10.04 -> 10.10)
をやっててみようと思い立って、
https://wiki.ubuntulinux.jp/UbuntuTips/Install/UpgradeMaverick
のページを参考に、
% sudo vi /etc/update-manager/release-upgrades
% sudo do-release-upgrade
としてみて、再起動したら、HDD を認識しなくなってしまい、はまった。
エラー内容は、起動直後に
ALERT! /dev/mapper/karin-root does not exist. Dropping to a shell!
というエラーを出して、initramfs のシェルに落ちてしまうというもの。
どうもHDDが認識できなくなっている模様だが、旧バージョン(アップグ
レード前)のカーネルでブートは問題無くできるので、HDDの問題ではな
く、カーネルの方の問題だろう、というところまでは推測が付いたのだけ
ど、ここからが長かった。
まず、上記メッセージなどを手掛かりに Ubuntu Forum などのサイトを見
てみたが、結構な数のエラー報告があるのだけど、解決しているものが少
なかったり、RAID でのエラーだったりして、あまり参考にならない。
ブート時のオプション quiet をはずしてみると、上記のシェルに落ちる
直前に、以下のようなエラーが大量に出ていることが分かった:
ahci .....: failed to stop engine (-5)
これをキーワードにして探してみると Fedora サイトの FAQ がヒットし、
http://fedoraproject.org/wiki/KernelCommonProblems#PCI_Devices_Not_Recognized_.2F_AHCI:_.22failed_to_stop_engine.22
On kernel version 2.6.34 and later, ACPI is used to determine
PCI resources. Some machines have bugs in their ACPI BIOS code
and fail set configure resources properly. Try using pci=nocrs
to disable use of ACPI for resource enumeration.
とのこと。要は、カーネルバージョンを上げた際に、カーネルのモジュー
ルロードに失敗するケースのようだ。。。試してみたら見事に起動できる
ようになった。
よって /etc/default/grub に以下の設定を追加し:
GRUB_CMDLINE_LINUX="pci=nocrs"
% sudo update-grub2
としておく。