Earthwings、 penetrode、 loyaltonone、 pilla、 airhead、 nephros、 yamakawa ,そして本スレッドで提案してくださった他のすべての方々に深く感謝いたします。
この文書に掲載している例は、あくまで例です。 必ず、あなたのシステムの構成に合わせてパーティション番号を変えてください。 この文書に掲載されている解決法をとる際は自己責任でお願いします。
2. GRUB loading, please wait...
コード表示 2.1: GRUBの出力 |
GRUB loading stage 1.5 GRUB loading, please wait... |
このメッセージの後、システムが停止します。 GRUBフロッピーを使ってシステムをブートした場合には、この問題は起こりません。
The_Bellによると BIOSでのブート順を変えるとよいそうです。
フロッピーを一番目にブートしないようにBIOSを設定します。
また、penetrodeは、 CFLAGSの設定が悪い可能性もあると書きました。 現在のGRUBのebuildでは、-fstack-protectorを取り除いていますが、 とにかく、不要なものが無いCFLAGSでgrubを再コンパイルすれば問題はありません。
コード表示 2.2: 適切なCFLAGSをGRUBの再構築に使用する |
# CFLAGS="-O2 -march=i686 -fomit-frame-pointer -pipe" emerge grub
|
コード表示 3.1: GRUBの出力 |
12 : Invalid device requested. |
デバイス文字列の構文は正しいけれども、 正しくないことが原因としか思えないようなエラーが起こった場合にこのエラーが返されます。
対話型コマンドを使ってブートレコードへgrubをインストールした際に、 grubプロンプトで以下の二行を実行したでしょうか?
コード表示 3.2: 対話型インストールコマンド |
grub> root (hd0,0) grub> setup (hd0) |
(hd0,0)をあなたのbootパーティションに置き換え、 (hd0)をあなたの選んだHDDに置き換えなければいけません。 (hd0)とすると、プライマリのマスタに接続している一番目のハードディスクのマスターブートレコードにブートローダをインストールすることをお忘れなく。
このエラーは、初期設定(マスターブートレコードへのGRUBのインストール)の段階、 あるいはシステムをブートしてLinux(もしくは他のエントリ)を起動しようとした段階という、 GRUB設定での異なる二つの段階で起こる可能性があります。
コード表示 4.1: GRUBの出力 - 初期設定 |
grub> root (hd0,0) Filesystem type is xfs, partition type 0x83 grub> setup (hd0) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... no Error 15: File not found |
コード表示 4.2: GRUB Output - エントリのブート |
Booting 'gentoo Linux' root (hd0,0) Filesystem type is ext2fs, partition type 0x83 kernel (hd0,0)/boot/kernel-2.4.20 root=/dev/hda3 vga=792 Error 15: File not found Press any key to continue... |
特定のファイル名は発見できないけども、 (ディスクやパーティション情報のような)他のすべての情報はうまくいくときにこのエラーが返されます。
このエラーは、カーネルのイメージファイルが見当たらないことを表していることがよくあります。 参照しているファイルがbootパーティションにあるかを確認してください。
カーネルの正確な名前を調べるためには、 インストールCDからブートし、 (もしあれば)bootパーティションあるいはルートパーティションをマウントしてください。 そしてGentooシステムへchrootし、どんなカーネルイメージが利用できるかを見るために、利用可能なファイルを一覧表示してください。
コード表示 4.3: カーネルイメージの存在を確認する |
# cd /boot # ls |
これで、bootパーティションに置いているすべてのカーネルが一覧表示されるでしょう。 カーネルが見当たらないなら、(genkernelあるいは手動で)カーネルをコンパイルしたかを確認してください。
コード表示 4.4: カーネルの再コンパイル |
# cd /usr/src/linux/ # make menuconfig # make |
そして、できたカーネルをbootパーティションにコピーしてください。
コード表示 4.5: カーネルのコピー |
# cp /usr/src/linux/arch/i386/boot/bzImage /boot
|
カーネルの名前が、grub.confファイルに記述しているカーネルの名前と同じであることを確認してください。 また、grub.confファイルのkernelの行が、 カーネルイメージのあるパーティションを(明示的もしくは暗黙に)参照しているかも確認してください。
他に、カーネルあるいはgrubが記録されているディスクをBIOSが無視しているというミスも報告されています。また、grubのステージファイルが保存されているパーティションを、ソフトウェアRAIDのRAID-5(またはストライピング技術)に設定すべきではありません。
まず、あなたが記述したrootとsetupの行が正しいことを確認しましょう。
間違いなく正しいなら、あなたは不具合のあるバージョンのGRUB(0.93.20031222)を利用しているかもしれません。 Portageツリーを更新するか、このバージョンのgrubをマスクしてください。
コード表示 4.6: GRUBをマスクする |
(chroot環境内でこれを実行してください) # echo "=sys-boot/grub-0.93.20031222" >> /etc/portage/package.mask # emerge grub -p |
GRUBの作者が薦めるgrub-installを利用することもできます。
コード表示 4.7: grub-installの使用 |
(bootパーティションを分割して使用している場合は--root-directoryが必要ですが、 それ以外の場合は省略するべきです) # grub-install --root-directory=/boot /dev/hda |
これら全てが失敗したときは、bootパーティションが壊れている可能性があります。 パーティションのエラーを検査してください。
コード表示 4.8: パーティションのエラー検査 |
(この場合、bootパーティションである/dev/hda1をアンマウントしてから検査してください) # fsck -y /dev/hda1 |
コード表示 5.1: GRUBの出力 |
root (hd0,0) filesystem type unknown partition type 0x7 Error 17 : Cannot mount selected partition |
要求されたパーティションは存在していますが、 ファイルシステムの種類をGRUBが理解できない場合にこのエラーが返されます。
grub.conf内のroot(x,y)の設定を必ず確認してください。
また、Windowsを起動しようとする場合、grub.confファイルに、 root (hdX,Y)(あるいはrootnoverify (hdX,Y))とchainloader (hdX,Y)+1が記述されているか確認してください。
コード表示 6.1: GRUBの出力 |
kernel (hd1,4)/bzImage root=/dev/hdb7 Error 18: Selected cylinder exceeds max supported by BIOS |
BIOSの変換領域の限界まで線形ブロックアドレスで読もうとする際にこのエラーが返されます。 BIOSが管理可能な容量(古い(E)IDEディスクでは512MB、一般的なものでは8GB以上の壁があります)よりディスク容量が大きい場合に起こるのが一般的です。
BIOSを更新するか(もしくはそれとともに)、 bootパーティションを先頭へ(あるいは少なくとも適切な範囲で)移動してください。
7. GRUB GRUB GRUB GRUB GRUB ...
コード表示 7.1: GRUBの出力 |
GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB GRUB ... |
airheadによると、 BIOSにディスクを自動検出させることで問題が起こるようです。 BIOSの項目(訳注:Type項目)をUser Type HDDに設定してみましょう。
また、GRUBをMBRにインストールしてあって、GRUBを再インストールしようとしたが(例えば、ハードディスクを換えるため)、setupやrootコマンドを間違って使ったことが原因かもしれません。
8. Probing devices to guess BIOS drives. This may take a long time.
grubをインストールしている際、次の行を表示した後にハングします。
コード表示 8.1: GRUBの出力 |
# grub
Probing devices to guess BIOS drives. This may take a long time.
|
一本のケーブル上にUltra DMAディスクと非Ultra DMAディスクが接続されているといった、ディスクデバイスの特異な設定が原因だったという報告があります。
grubのインストールを開始するとハングします。
コード表示 9.1: GRUBの出力 |
# grub (この段階でインストールが停止します) |
フロッピードライブを持っていない場合に、--no-floppyスイッチを使っていますか?
コード表示 9.2: --no-floppyスイッチを使ってgrubをインストール |
# grub --no-floppy
|
10. Uncompressing Linux... Ok, booting the kernel.
次の行を表示してシステムがハングします
コード表示 10.1: Linuxの出力 |
Uncompressing Linux... Ok, booting the kernel. |
厳密に言うと、これはGRUBのエラーではありません。 ACPIが、カーネルで有効になっているのに正常に動作していないことが一つの原因です。 BIOSかカーネルでACPIを無効にしてみてください。
システムをブートしているとき、 grub.confファイルで定義したエントリのリストではなく、 grubのプロンプトが表示されます。
bootパーティションをマウントし、grub/grub.confファイルが存在するかを確認してください。
コード表示 11.1: bootパーティションのマウントとgrub.confの存在を確認する |
# mount /dev/hda1 /mnt/gentoo/boot # cat /mnt/gentoo/boot/grub/grub.conf |
また、menu.lstシンボリックリンクの存在も確認してください。
コード表示 11.2: シンボリックリンクの確認 |
# ls -l /mnt/gentoo/boot/grub/menu.lst
lrwxrwxrwx 1 root root 9 Mar 7 14:00 /mnt/gentoo/boot/grub/menu.lst -> grub.conf
|
これが原因でないなら、シンボリックリンクを再作成してください。
コード表示 11.3: menu.lstのシンボリックリンクを再作成 |
# cd /mnt/gentoo/boot/grub # ln -snf grub.conf menu.lst |
これも原因でなければ、grubを再インストールしてください。
コード表示 11.4: GRUBの再インストール |
(chroot環境内で実行してください) # grub-install --root-directory=/boot /dev/hda |
12. Could not find device for /boot/boot: not found or not a block device
grub-installを実行してGRUBをインストールしているときに、 次のエラーを受け取ります。
コード表示 12.1: GRUBの出力 |
# grub-install --root-directory=/boot /dev/hda
Could not find device for /boot/boot: not found or not a block device
|
mtabファイルを忘れずに更新してください。
コード表示 12.2: mtabファイルの更新 |
# grep -v rootfs /proc/mounts > /etc/mtab
|
13. GRUBメニューでリターンを押した後、システムが再起動する
システムのブート時にGRUBメニューでリターンキーを押した後、システムが再起動します。
カーネルで、フレームバッファのサポートを無効にしてください。 これでも駄目なら、APMやACPIを無効にしてください。
14. GRUBメニューでリターンを押した後、画面が真っ暗になる
システムのブート時にGRUBメニューでリターンを押した後、画面が真っ暗になります。 ただし、システムの反応はあります(例えば、numlockのLEDを切り替えることができます)。
フレームバッファを無効にして(通常、grub.confからvga=XYZを削除します)、 カーネル設定のプロセッサ・アーキテクチャを確認します。
システムのブート時に、Gentooのカッコいいsplashscreenが見えません。
何よりもまず、 grub.confで参照しているsplashscreenファイルが本当に存在するのかを確認してください。 存在した場合、grubのebuildを確認してください。 おそらく、あなたが使っているバージョンで、splashイメージ用のパッチがコメントアウトされているでしょう。
16. 二番目のハードディスクドライブからのWindowsのブートに失敗する
Windowsのエントリを選択した後、特にはっきりとした理由もなしにシステムがブートを拒否します。
cyrillicは、 grub.confのWindowsのエントリを以下のように変えることで異なる順序でディスクを "map"できることを教えてくれました。
コード表示 16.1: Mapping disks |
title Windows XP map (hd0) (hd1) map (hd1) (hd0) chainloader (hd1,0)+1 |
17. GRUBのインストール時に、セグメンテーション違反が起こる
下に記述されている状況は、grub-0.95.xでブートセクタにgrubをインストールする場合のみ関連します。
コード表示 17.1: GRUBのインストール |
grub> root (hd0,0) grub> setup (hd0) Segmentation fault |
この問題に関連したバグは発見され、grub 0.96で修正されました。 また、grub 0.94 r1やgrub 0.94 r2では正常に動作することもわかっています。 これを踏まえても動かなかった場合、 現在のamd64のstableやx86のunstable(~x86)であるgrub-staticをemergeしてみることができます。 バグ#79378 へ追加情報をチェックアウトしてください。
このドキュメントの内容は Creative Commons - Attribution / Share Alikeライセンスです。