hack のためのネタ帳, etc,,,

トラブルシューティング

apt で upgrade を実行したところ
以下の構成で問題が発生した。
  • Intel Pentium4 2.4GHz
  • AOpen AX45G-N (Intel 865G、ICH5)
  • Debian GNU/Linux stable
  • grub-pc 1.98+20100804-14+squeeze1
  • grub-common 1.98+20100804-14+squeeze1

BIOS 画面終了後 GRUB2 が読み込まれ Linux の boot を開始すると
/dev/sda1 の UUID を認識出来ないらしく、
以下のようなエラーを吐き出し起動に失敗する。
  Booting 'Debian GNU/Linux, with Linux 2.6.32-5-686'

Loading Linux 2.6.32-5-686 ...
error: out of partition.
Loading initial ramdisk ...
error: you need load the kernel first.

  Failed to boot both default and fallback entries.

Press any key to continue...

Grub の edit モードに入り設定を確認してみると以下のようになっていた。
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
echo    'Loading Linux 2.6.32-5-686 ...'
linux   /boot/vmlinuz-2.6.32-5-686 root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro  quiet
echo    'Loading initial ramdisk ...'
initrd  /boot/initrd.img-2.6.32-5-686
ここで、以下の2点の変更を行うと問題なく起動できた。
  • search 行を削除する
  • linux 行の root パラメータを root=/dev/sda1 に変更

Debian 起動後、
/etc/default/grub に grub 更新用の設定があるので
コメントアウトされている以下のパラメータを有効にする。
GRUB_DISABLE_LINUX_UUID=true

次に update-grub を実行すると、
/boot/grub/grub.cfg が更新され、
上記で問題の生じていた linux 行の root パラメータに与える値が /dev/sda1 のような表記になる。

あとは search 行を削除する必要があるのだが、削除するための設定項目が見当たらない。
仕方ないので、
cp -a /boot/grub/grub.cfg /boot/grub/grub.cfg.tmp; grep -v '^\ssearch' /boot/grub/grub.cfg.tmp > /boot/grub/grub.cfg
のような感じで search 行削った後
grub-install /dev/sda
とかしとく。
以上で boot 時に grub2 が UUID でパーティションを認識出来ない問題は解決する模様。

参考:
タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます