2022/10/14
USB から起動した GRUB で、HDD(SSD) 内の Linux を起動し、HDD(SSD) 内の GRUB を修復する

※ ここで言う GRUB は、GRUB2 のことです。

HDD(SSD) 内の GRUB が壊れて、Linux が起動できなくなったので、GRUB を修復する方法をまとめました。

前提として、HDD(SSD) 内のファイルは正常で、GRUB のみが破損しているものとします。
症状は、GRUB メニューが出ず、プロンプトも何も出ず、画面左上でカーソルが点滅したまま停止する状態です。
 

1.まず、GRUB が起動できる USB メモリーがある場合から説明します。
    GRUB 起動用の USB メモリーの作成方法は後述します。

    (1) HDD(SSD) 内の Linux を起動する方法。

@ USB から GRUB を起動し、"c"キーで、grub> コマンドラインモードに入ります。
 
A HDD(SSD) 内の grub.cfg ファイルを検索します。
    今回、Linux の場合、/boot/grub/grub.cfg とします。フルパスで指定する必要があります。

    grub> search --file /boot/grub/grub.cfg
                 得られた結果から、起動目標の HDD(SSD) 及びパーティション番号を確認します。例:(hdX,msdosX)

B 見つけた grub.cfg ファイルで、GRUB メニューを立ち上げます。

    grub> configfile (hdX,msdosX)/boot/grub/grub.cfg

C 目的の GRUB メニューが表示さらたら、通常通り Linux を起動できるはずです。

※ 上記のメニューが表示されなかったり、起動できない場合は、残念ながらこの方法は通用しないということです。
 
    (2) Linux が起動したら、ターミナルから GRUB を修復します。

@ GRUB の再インストール。
   
    ※ 必要に応じて下記のどちらかを実行してください。間違えると大変ですので、慎重に行ってください。

    $ sudo grub-install --force /dev/sdaX        (例) pbr へのインストール
    $ sudo grub-install /dev/sda                 (例) mbr へのインストール


A pbr の場合、必要に応じて、マルチブート用ファイルの再作成。

    $ sudo dd if=/dev/sdaX of=sdaX.pbr bs=512 count=1

    (3) システムを再起動し、HDD(SSD) から起動できれば、GRUB の修復は成功です。


2.GRUB 起動用の USB メモリーを作成する方法。

    GURB 起動用の USB メモリーを作成する場合、PC のシステムが BIOS か UEFI かによって方法が異なってきます。

    (1) UEFI 用

※ 2通りの方法があります。どちらかの方法で作成してください。

@ UEFI と BIOS の両方から iso イメージファイルを起動できる、grub2 メニューの USB メモリーの作り方 を参照してください。

A Linux_Live.iso イメージを USB メモリーに書き込む方法です。

    USB メモリーの /dev/ 名を確認して、ISOイメージを書き込みます。(例)/dev/sdX
 
    $ sudo dd if=Linux_Live.iso of=/dev/sdX bs=4M; sync
 
    (2) BIOS 用

@ USB メモリーの /dev/ 名を確認して、Gparted で、USB メモリーにパーティションを作成します。(例)/dev/sdX

    ・ msdos 形式でパーティションテーブルを作成します。
    ・ プライマリーパーティションを作成します。/dev/sdX1

    ※ Gparted で、FAT パーティションが作成できない場合は、パーティションを未フォーマットで作成し、
ターミナルのコマンドで FAT でフォーマットします。

$ sudo mkfs -t fat /dev/sdX1
 
A Gparted で、/dev/sdX1 にラベルを付けます。(例)LABEL

B USB メモリーをマウントします。(例)/media/user/LABEL

C USB メモリーに GRUB をインストールします。

    $ sudo grub-install --boot-directory=/media/user/LABEL/boot /dev/sdX
 
 

3.別の修復方法として、Linux_Live-DVD/USB から起動し、そこから HDD(SSD) へ GRUB を再インストールする方法を記します。

GRUB を再インストールしたい、パーティションを調べておいてください。(例)/dev/sda2
Live 起動した Linux のターミナルから下記を実行します。

$ sudo mount /dev/sda2 /mnt
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /dev/pts /mnt/dev/pts
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo mount --bind /run /mnt/run
$ sudo chroot /mnt


※ 下記のどちらかを実行します。間違えると大変なので慎重に行ってください。

# grub-install --force /dev/sda2        (例) pbr へのインストール
# grub-install /dev/sda                 (例) mbr へのインストール


twitter kn_ishi