web-dev-qa-db-ja.com

GRUB 2特定のブートオプションで「スタック」

Btrfsルートを使用してopenSUSE13.1でシステムをインストールしたところ、KDEの再起動ドロップダウンでWindowsを選択するのを間違えました。現在、grubは、Windowsを必要なときに一度だけではなく、毎回自動的にロードするようです。言い換えると、grubはロードします(そしていくつかのクイックステータスメッセージを表示します)が、起動するたびにWindowsオプションに直接スキップします。

Grubは、設定ファイルを読み込んでいてエラーを表示しないと述べているので、上書きされたり、そのような面白いことはなかったと確信しています。また、ブートローダーがWindows Updateからランダムに削除される問題を回避するために、Windowsを別のディスクにインストールしたままにします。

ブートローダーをあきらめて再インストールする前に、構成に対して行われたgrub2-reboot(またはメニューが使用するユーティリティ)を手動で元に戻す方法はありますか?ライブ環境からディスクにパーティションを正常にマウントすることはできますが、必要な更新を行うためにchrootできるはずです。

編集:以下を実行することにより、ライブディスクからchrootを介して修正されました:

grub2-editenv /boot/grub2/grubenv unset next_entry
3
timothyb89

/usr/sbin/grub2-rebootスクリプトのソースを調べたところ、ブート選択がgrubenvファイルの「next_entry」変数によって処理されていることがわかりました。

この問題は、(システムにchrootしている間に)grub2-editenv listを実行することで確認できます。これは、次のことを示しています。

saved_entry=openSUSE 13.1
next_entry=Windows 8.1 (loader) ...

この場合、next_entryフィールドは、再起動後に本来あるべきようにクリアされませんでした(おそらく、btrfsの非互換性が原因ですか?)

私はこのように設定を解除することに成功しました(これもchroot内で):

grub2-editenv /boot/grub2/grubenv unset next_entry

再起動後、grubメニューは通常に戻りました。

1
timothyb89

ある種のライブCDにアクセスできる場合は、grub構成コマンドを使用して問題を解決できる可能性があります。または、手動でGRUB構成ファイルを構成することもできます ここ 。ただし、GRUB 2の構成ファイルは、GRUBとは異なり、意味がありません。手動で編集するため、特に注意してください。

0
Ebalosus