GNU/Linux >> Linux の 問題 >  >> Ubuntu

GrubRescueを使用してLinuxの起動エラーを修正する方法

はじめに

GRUB(Grand Unified Bootloader)は、オペレーティングシステムカーネルを起動およびロードするためのツールであり、Linuxカーネルに基づくシステムのデフォルトのブートローダーです。マシンの電源を入れたときに最初に実行されますが、通常のユーザーがGRUBの動作を確認することはめったにありません。自動的に機能し、ユーザー入力は必要ありません。

ただし、同じマシン上でLinuxと一緒に別のオペレーティングシステムを起動しようとすると、他のシステムのブートローダーがGRUBを上書きし、Linuxシステムを起動できなくなる可能性があります。

この記事では、GRUBRescueコマンドとブート修復ツールを使用してLinuxのブートエラーを修正する方法を説明します。

前提条件

  • sudo権限を持つアカウント。
  • コマンドラインへのアクセス。

GRUBブートの問題

GRUBがオペレーティングシステムで起動しない最も一般的な理由は、別のOSのブートローダーがGRUBブート構成を上書きすることです。この問題は、既存のLinuxインストールでデュアルブートを試行しているときに発生します。もう1つの理由は、GRUB構成ファイルが誤って削除されたことです。

GRUBがシステムを起動できない場合、GRUBRescueプロンプトが表示されます。

上記の例は、 grub rescueを表示する前に「nosuchpartition」エラーを表示するGRUBを示しています。 促す。もう1つの一般的なGRUBエラーは、「不明なファイルシステム」とそれに続く同じプロンプトです。

画面にgrubが表示される場合があります プロンプトのみ。

GRUBレスキューコマンド

以下は、一般的に使用されるGRUBRescueコマンドのリストです。前のセクションで説明したプロンプトのコマンドを使用します。

コマンド 説明
boot 起動を開始します(ショートカット: F10 CTRL + x コマンドは引数なしで発行されます。
cat ファイルの内容を標準出力に書き込みます。 cat (hd0,1)/boot/grub/grub.cfg
configfile 構成ファイルをロードします。 configfile (hd0,1)/boot/grub/grub.cfg
initrd initrd.imgファイルをロードします。 initrd (hd0,1)/initrd.img
insmod モジュールをロードします。 insmod (hd0,1)/boot/grub/normal.mod
loopback デバイスとしてイメージファイルをマウントします。 loopback loop0 (hd0,1)/iso/image.iso
ls ディレクトリまたはパーティションの内容を表示します。 ls (hd0,1)
lsmod ロードされたモジュールのリストを表示します。 コマンドは引数なしで発行されます。
normal 通常のモジュールをアクティブにします。 コマンドは引数なしで発行されます。
search デバイスを検索します。オプション--file ファイルを検索します。--label ラベルを検索します。--fs-uuid ファイルシステムUUIDを検索します。 search -file [filename]
set 環境変数を設定します。引数なしで発行された場合、コマンドはすべての環境変数とその値のリストを出力します。 set [variable-name]=[value]

起動エラーの修正

このチュートリアルでは、GRUBレスキュープロンプトを使用してGRUBブートの問題を解決する2つの方法について説明します。 、およびブート修復ツール

Grubターミナル経由

1.引数なしでsetコマンドを使用して、環境変数を表示します。

set

出力例は、GRUBが (hd0,msdos3)から起動するように設定されていることを示しています。 パーティション:

2. lsコマンドは、ディスク上で使用可能なパーティションを一覧表示します。

ls

出力にはパーティションリストが表示されます。

lsを使用します bootを含むパーティションを検索するコマンド ディレクトリ。

ls [partition-name]

この例は、 bootを示しています (hd0,msdos1)のディレクトリ パーティション。

3.ブートパーティションをrootの値として設定します 変数。この例では、 (hd0,msdos1)という名前のパーティションを使用しています

set root=(hd0,msdos1)

4.normalをロードします 起動モード。

insmod normal

5.normalを開始します 起動モード。

normal

normal モードを使用すると、より複雑なコマンドを発行できます。

6. linuxを使用してLinuxカーネルをロードします 指図。

linux /boot/vmlinuz-4.2.0-16-generic root=/dev/sda1 ro

7. bootを発行します コマンド。

boot

これで、システムが正しく起動します。

ライブ画像経由

GRUBブートの問題を修正する別の方法は、Linuxライブイメージを使用して外部デバイスからブートすることです。

1.ライブLinuxインストーラーをダウンロードします。この例では、Ubuntu20.04ISOイメージを使用しています。

2. Etcherなどのツールを使用して、LinuxイメージをSDカードまたはUSBフラッシュドライブに書き込みます。

3.起動可能なデバイスを挿入し、コンピューターを起動します。

4.Ubuntuを試すを選択します ウェルカム画面で。

5.ライブシステムが起動したら、インターネットに接続します。

6.ターミナルを開き、次のコマンドを入力して、ブート修復ツールのリポジトリを追加します。

sudo add-apt-repository ppa:yannubuntu/boot-repair

Enterを押します リポジトリが追加されるのを待ちます。

7.リポジトリを更新します。

sudo apt update

8.ブート修復ツールをインストールします。

sudo apt install boot-repair

9.ターミナルからブート修復ツールを起動します。

boot-repair

10.推奨修理を選択します 。

ツールがブートローダーの修復を完了するのを待ちます。

GRUB構成ファイルの更新

システムが正常に起動したら、GRUB構成が最新であることを確認します。

次のコマンドを実行します:

update-grub

GRUBの再インストール

以下の手順に従って、LinuxシステムにGRUBを再インストールします。

1.OSインストールを含むパーティションをマウントします。この例では、 /dev/sda1をマウントします /mntへのパーティション ディレクトリ。

sudo mount /dev/sda1 /mnt

2. /devをバインドします /dev/pts /proc 、および /sys /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

3.GRUBをインストールします。

sudo grub-install -root-directory=/mnt/ /dev/sda

4.インストールが正常に完了したら、ディレクトリをアンマウントします。

sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

Ubuntu
  1. Linuxでのcron認証失敗エラーを修正するにはどうすればよいですか?

  2. Linux – Grubを修正/インストール/再インストールする方法は?

  3. UbuntuのGrubでInitramfsを使用してArchLinuxを起動する方法は?

  1. LinuxでBusyBoxを使用する方法

  2. Linuxでcronを使用する方法

  3. 現在のGrub/ブート構成に関する情報を取得する方法は?

  1. Linuxでsudoコマンドを使用する方法

  2. LinuxでSuコマンドを使用する方法

  3. Linux で Grub ブートローダーをパスワード保護する方法