14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

デュアルブート環境で grub rescue が出現して起動できなくなったときの対処方法

Last updated at Posted at 2019-04-06

トラブル現象

grub2 の起動OS選択画面が表示されず、代わりに、grub rescue のコマンドプロンプトが表示され、OS起動できなくなった。

grub rescue>

経緯

  • Linux パーティションを削除

    次のように複数の Linux をインストールしていた環境から一つの Linux をアンインストールしようと、該当パーティションを削除した。

    • PC
      • EeePC 1101HA ・・・ いわゆるネットブック, 32bit, 当然 UEFI ではなく BIOS
    • OS
  • grub2 では起動リストを手動編集できない?

    まぁ、こんなことすれば起動時に障害が発生することは最初からわかっていたが、事前に起動リストを編集するような方法が grub2 では見つけられなかった。

    試してみた限りでは、update-grub コマンドを実行すれば各パーティションにインストールされているOSを自動検出して、起動リストを更新してくれる。

    対象PCは壊れても構わないリモート専用PCなので、いきなり該当パーティションを gparted で削除して再起動してみたところ、grub rescue が出現した。

    だが、grub rescue はブートローダーであって、update-grub コマンドは Linux を起動した後でないと実行できない。さぁ、どうしたものか。

対処方法

結論としては、こちらのページ「GRUB (Grand Unified Bootloader) - SE学院」に記述されていた手順で解消できた。help で grub2 のコマンドを眺めてみても、皆目見当がつかない状態だったので、とても助かった。

  • grub2 の設定を一時変更して Linux を起動させる

    grub rescue> ls
    (hd0) (hd0,msdos5) (hd0,msdos4)...
    grub rescue> ls (hd0)
    error: unknown filesystem.  つまり、該当パーティションが消失している
    grub rescue> ls (hd0,msdos5)/boot/grub/i386-pc/normal.mod
    error: not a directory    復旧に必要なモジュールが別パーティションにはある
    grub rescue> set prefix=(hd0,msdos5)/boot/grub
    grub rescue> insmod (hd0,msdos5)/boot/grub/i386-pc/normal.mod
    grub rescue> normal
    
  • grub2 を再インストールする

    無事に grub2 の起動OS選択画面が表示されたら、残してあった Linux を起動する。
    この状態では、一時的に grub2 を認識しているだけなので、次のコマンドで /dev/sda ディ スクに再インストールする。

    $ sudo grub-install /dev/sda
    
  • 要は、grub2 を何らかの方法で再インストールすればいい

    今回の環境は、前述の通り、Linux のデュアルブート環境、正確には、Windows7 も選択できるトリプルブート環境だったので、残していた Linux(Raspberry Pi Desktop)に含まれている grub2 を使って再インストールした。

    他にも、Linux の Live CD/USB などを使って grub2 を再インストールする方法もある。

    なお、Windows と Linux 1つのデュアルブート環境から、Linux パーティションを削除したような場合は、Windows 用ブートローダに戻すために、Windows のインストールメディアや回復メディアを使って、MBR を修復するのがよいだろう。

注意点

  • 入力キー配列が US 配列

    grub rescue での入力キー配列は US 配列なので (, ),= などのキーが JIS 配列と異なる。

    US配列 JIS配列
    ( Shift + 9
    ) Shift + 0
    = ^

参考になった記事

14
10
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?