GRUBフォルダの絶対位置を永久的に修正する

GRUBフォルダの絶対位置を永久的に修正する

最近、16.04 インストーラーが GRUB フォルダーの場所を誤って構成するという比較的一般的な問題に遭遇しました。このような場合、システムはレスキュー シェルを起動し、次のメッセージが表示されます。

error: file '/grub/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>

これは、GRUBは起動できたが、モジュールを間違った場所で探していることを意味します。よく知られた解決策GRUB にモジュールの場所をオンザフライで指示することです。私の場合は次のようになります:

grub rescue> set prefix=(hd1,msdos2)/boot/grub
grub rescue> insmod normal
grub rescue> normal

これにより、ブート プロセスが正常に再開されます。ただし、次にシステムを起動すると、GRUB は再びレスキュー コンソールにフォールバックし、モジュールの場所を再度指示する必要があります。GRUB を再インストールしましたが、問題は解決しませんでした。

GRUB にモジュールの正しい場所を永続的に指示するにはどうすればよいでしょうか?

アップデート: 私はついていきますWinEunuuchs2Unix による提案そして試してみたブート修復ツール。まず GRUB の場所を確認しましたが、どうやら正しいようです: /boot/grubon sdg2

次に推奨修復診断を実行したところ、この出力ここでも正しい GRUB の場所が報告されます。

sdg2: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Ubuntu 16.04.3 LTS
    Boot files:        /boot/grub/grub.cfg /etc/fstab 
                       /boot/grub/i386-pc/core.img

ただし、レポートの最後にエラーがあり、次の問題があることを示していますdevice.map

grub-probe: error: cannot find a GRUB drive for /dev/sdi1.  Check your device.map.
Unhide GRUB boot menu in sdg2/boot/grub/grub.cfg

An error occurred during the repair.

それについて何か提案はありますか?

答え1

何が問題なのかを理解する鍵は、GRUBに指示を与える必要があることでしたhd1BIOSはデフォルトで起動し、hd0、そしてこのワークステーションには、そのディスクにインストールされた GRUB をロードしようとした MBR の残骸がありました (そのため、/grubではなくを参照しています/boot/grub)。

この問題の解決策は、BIOS で内部ディスクのブート順序を変更することでした。hd1まず、ブート プロセスは人間の介入なしに正常に完了します。一部の BIOS では、内部ディスクのブート順序を変更できない場合があります。その場合は、ディスクをボードに再配線する必要があります。

関連情報