GRUB Rescue - ブートとプレフィックスを何度も設定する

GRUB Rescue - ブートとプレフィックスを何度も設定する

私はUbuntuでのコーディングについてほとんど何も知りません。現在、Ubuntu 16.04 LTSとWindows 10をデュアルブートしています。すべて順調でした。しかし、今日、次のようなエラーが発生しました。

「ファイルシステムが見つかりません」

そしてgrub救助が始まります。しばらく検索した後、次のことを行うように指示する解決策を見つけました。

ls
set prefix=(hd0,msdos5)/boot/grub
insmod normal
normal

ハードドライブのパーティションが一覧表示されていることはわかっていますls(間違っていたら教えてください)。次に ( でset prefix) パーティションを選択する必要があります。msdos5 を選択するとエラーが発生しました。何度か試した後、msdos6 を選択しました。すると実行されました。しかし、問題は、この問題の別の解決策として、次のコードを記述したことです。

set boot=(hd0,msdos6)

間違えたと思います。おそらく、ハードディスクのどのパーティションを起動するかが関係しているのでしょう。このコードを書き込んだ後、ラップトップは起動していますが、ラップトップの電源を入れるたびに、起動が最初に停止して同じエラーが表示され、ラップトップを起動する必要があるたびにコードを書き込む必要があります。この問題を解決するにはどうすればよいでしょうか? おそらく、起動しているパーティション (msdos*) も知る必要があると思いますが、その見つけ方がわかりません。

答え1

grub rescue>起動時にプロンプ​​トが表示され、次のようなコードを記述する必要がある場合、この種の問題の解決策があります。

grub rescue> ls
grub rescue> set boot=(hd0,msdos*)
grub rescue> set prefix=(hd0,msdos*)/boot/grub
grub rescue> insmod normal
grub rescue> normal

起動後、Linux/Ubuntu ベースの OS がロードされ、ターミナルが開かれ、次のコマンドを入力します。

useranf@ ~ $ sudo update-grub

次のコマンドを入力します:

useranf@ ~ $ sudo grub-install /dev/sda

これらの操作の後、最後にシステムを再起動します。

答え2

上記の deepak bundela の回答では、次の行を修正する必要があると思います。

grub rescue> set boot=(hd0,msdos*)

に:

grub rescue> set root=(hd0,msdos*)

(実際の問題から注意をそらさないように、Bundela が言ったように * を繰り返します)

私はbootと呼ばれるgrub環境変数を見つけることができませんでした。私が覚えている限りでは、それは常にset root=()

自分のディストリビューションでは動作したとコメントした人たち全員に少し困惑しています。彼らは または を実行したのでしょうset bootset root?

プロンプトでgrub rescue>、単に入力すると、set設定されているすべての env 変数が一覧表示されます。これまでのすべての grub 復旧の冒険で、bootenv 変数が一覧表示されるのを見たことはありません。

関連情報