GRUB Rescue を使用して Linux を修復する方法
公開: 2023-05-14
ls
、 set
、 linux
、およびinitrd
コマンドを使用して Linux システムを修正できます。 代わりに「grubrescue>」プロンプトが表示される場合は、 set
、 insmod
、 linux
、およびinitrd
コマンドを使用して PC を起動します。Linux コンピュータがオペレーティング システムを起動できない場合は、GRUB シェルのプロンプトを見つめることになるでしょう。 壊れたブートプロセスを修復するには、次の手順に従ってください。
ブートローダーが起動しない場合
GRUB シェルの使用
GRUB レスキュー シェルの使用
その他の可能な救済策
ブートローダーが起動しない場合
起動の失敗ほど、急速に深く心を痛めるコンピューターの問題はほとんどありません。 動作するオペレーティング システムがなければ、コンピューターは実際にはコンピューターではありません。
これは非常に不透明な問題である可能性があり、根本原因を掘り下げる簡単な方法はありません。 Linux にアクセスできなければ、問題の調査に使用する通常の診断ツールやプロセスを使用できません。 そして、問題が何であるかを特定せずに、どうやってそれを解決できるでしょうか?
Linux では、GRUB はブート プロセスを制御するソフトウェアです。 複数のオペレーティング システムがインストールされている場合は、起動するオペレーティング システムを選択できます。
GRUB はその設定によって制御されます。 その機能を実行するために、他のサポート ファイルにも依存します。 これらのいずれかが欠落しているか破損している場合、GRUB は機能しません。 コンピュータのハード ドライブとパーティションへの変更は、GRUB の設定に反映する必要があります。 そうでない場合、GRUB の指示は意味をなさず、ブート プロセスは機能しません。
余談ですが、私たちが GRUB と呼んでいるものは、実際には GRUB 2 です。これは、2012 年にリリースされた GRUB の高度なバージョンです。特に、「grub.cfg」ファイルの作成方法が変更されました。リムーバブルメディアから起動します。
GRUB がオペレーティング システムをロードできない場合、GRUB シェルのプロンプトを見つめることになります。 これは、いくつかのアクションを実行できる最小限の環境です。 ただし、これらの手順を正しく実行すると、コンピュータを復活させることができます。
2 つの異なる GRUB シェルがあります。 問題の根本原因によっては、GRUB シェル プロンプトが表示される場合があります。
グラブ>
または、GRUBレスキューシェル プロンプトで次のようにします。
グラブレスキュー>
GRUB レスキュー シェルは GRUB シェルよりもさらに制限されていますが、それでもコンピュータを起動するのに十分な機能を備えています。 コンピュータが起動すると、根本原因を解決するのにはるかに適した状態になります。
GRUB シェルの使用
GRUB シェルは、Linux コマンドの小さなサブセットを使用できるようにするコマンド ライン インターフェイスです。 通常のログイン画面ではなく、ここに表示されている場合は、ブート プロセスが混乱していることを意味します。
アクセスできるコマンドは、通常の Linux バージョンと同じではありません。 たとえば、GRUB シェルのls
コマンドは Bash ls
コマンドではありません。 それとの共通点はほとんどありません。 --help
オプションを使用すると、これを確認できます。
ls --ヘルプ
ここには 5 つのオプションのみがリストされています。 これは、Bash のls
でサポートされている多数のオプションとは大きく異なります。 それにもかかわらず、多少控えめなコマンドパレットを使用しても、状況を修正することはできます。
プロンプトでls
と入力し、「Enter」を押します。
ls
このコンピュータには 3 つの項目がリストされています。
- (hd0)は最初のハードドライブです。
- (hd0,gpt1) は、最初のハードドライブの最初のパーティションです。
- (hd0,gpt2) は、最初のハード ドライブの 2 番目のパーティションです。
「gpt」ラベルは、GUID パーティション テーブルを表します。 パーティションを参照する場合は括弧「 ()
」を含める必要がありますが、ラベルは省略できます。
パーティションを順番に確認するには、 ls
を使用します。
ls (hd0,1)
ls (hd0,2)
2 番目のパーティションには Linux ファイル システムがあることがわかりました。 そのパーティションのルート ディレクトリを調べて、もう少し詳しく調査します。
ls(hd0,2)/

明らかに、これは Linux パーティションであり、その上にブート ディレクトリがあります。 ここには、GRUB ファイル、Linux ブート イメージ、およびその他のブート ファイルが保存されます。
このコンピュータでは、コマンドを発行するときにパーティション(hd0,2)
を参照する必要があります。 コンピュータでは、Linux がインストールされているパーティションを使用します。
次のようにcat
コマンドを使用して、パーティション名にディレクトリ パスとファイル名を追加することで、テキスト ファイルを検索できます。
cat (hd0,2)/etc/issue
マルチブート インストールでは、これは正しいパーティションにいることを確認するのに便利な方法です。 設定ファイルの内部を調べるのにも最適です。
ここでは、 ls
コマンドに-l
(長い) オプションと-h
(人間が判読できるサイズ) オプションを指定して使用し、「/boot」ディレクトリ内のファイルを一覧表示します。
ls -lh (hd0,2)/ブート
このコンピュータを起動するには、新しく検出された Linux パーティションがブート ファイルを保持していることを GRUB に伝える必要があります。
ルート=(hd0,2)を設定します
どの Linux カーネルから起動するかを指定する必要があります。 これはlinux
コマンドを使用して行います。 通常の Linux ハード ドライブとパーティションの命名スキームを使用してルート ディレクトリも指定する必要があることに注意してください。
linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2
このサンプル コンピューターでは、最初のハード ドライブである(hd0)
を使用しています。 これは、通常の Linux 命名法ではsda
と呼ばれます。 2 番目のパーティションは Linux パーティションであることがわかったので、 sda2
を指定する必要があります。
お使いのマシンは異なる可能性があります。 たとえば、Linux パーティションが(hd2,1)
として報告された場合、これは 3 番目のハード ドライブのパーティション 1、つまりsdc1
意味します。
また、コンピューターの起動時にどの RAM ベースのファイル システム イメージを使用するかを指定する必要もあります。 これは、使用している Linux カーネルと同じ数値コンポーネントを使用する必要があります。
initrd /boot/initrd.img-6.2.0-20-generic
ここで、システムを起動するには、「boot」と入力して「Enter」を押します。
これにより、コンピュータが Linux で起動するはずです。 これで再び実行できるようになりましたが、コンピュータを起動するたびにこれを行う必要がないように、GRUB を修正する必要があります。
update-grub
を実行します。 これにより、システムがスキャンされ、オペレーティング システムが特定され、新しい GRUB 構成が作成されます。 これを root ユーザーとして実行する必要があります。
sudo更新-grub
まれに、 grub-install
を使用して GRUB ブートローダーも再インストールする必要がある場合があります。
sudo grub-install /dev/sda
インストールするパーティションを指定する必要はなく、どのドライブにインストールするかを指定するだけでよいことに注意してください。 通常のインストールでは、Linux がインストールされているのと同じドライブにあります。
プリンの証拠は、次回の再起動時に表示されます。 コンピュータは通常どおり再起動するはずです。
関連: GRUB2 ブートローダーの設定を構成する方法
GRUB レスキュー シェルの使用
ブートの問題の性質によっては、GRUB シェルにドロップされない場合があります。 GRUBレスキューモードのままになる可能性があります。 その場合、プロンプトは次のようになります。
グラブレスキュー>
このシェルで発行する必要があるコマンドは異なります。 GRUB シェルを使用している場合と同じように、Linux パーティションを見つけるにはls
を使用する必要があります。 Linux パーティションを特定したら、次のコマンドを入力します。
必ず、お使いのコンピュータに正しいドライブ識別子とカーネル バージョン番号を使用してください。 insmod
コマンドはカーネル モジュールをロードします。
set prefix=(hd0,2)/boot/grub
ルート=(hd0,2)を設定します
insmod ノーマル
insmod Linux
linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2
initrd /boot/initrd.img-6.2.0-20-generic
次に、「boot」と入力して「Enter」を押し、コンピュータを再起動します。 再起動してログインしたら、 update-grub
コマンドを使用して GRUB を更新します。
その他の可能な救済策
「vmlinuz」ファイルや「initrd.img」ファイルなどのブート ファイルが不足していることが問題であることが判明した場合は、Live DVD またはブート可能な Linux USB フラッシュ ドライブからコンピュータを起動し、不足しているファイルを所定の場所にコピーできます。
「vmlinuz」ファイルと「initrd.img」ファイルは一致するペアとして機能するため、それらのファイルには同じバージョン番号が含まれている必要があることに注意してください。
関連: Mac でブート可能な Linux Live USB を作成する方法