Linux の起動時に BIOS エラーが発生する問題を修正する方法
公開: 2022-09-28GRUB の更新により、Linux コンピューターが BIOS または UEFI 設定で起動することが知られています。 これを修正するには、知っておくべき便利なシステム リカバリ トリックを利用します。
ケーススタディ: GRUB 2:2.06.r322
2022 年夏の Arch および Arch ベースの Linux ディストリビューションのシステム アップデートには、GRUB の新しいバージョンが含まれていました。 GRUB はgr and unified bootloaderの略です。
ブートローダーは、コンピューターの電源がオンになったときに起動プロセスを開始するアプリケーションです。 適切なパーティションから適切な順序で、いくつかのソフトウェア ツールとユーティリティを起動して、最終的に操作可能でアクセス可能なオペレーティング システムを実現する必要があります。 GRUB は、一連のイベントを開始します。
コンピューターに複数のオペレーティング システムがインストールされている場合、GRUB には、使用するオペレーティング システムを選択できるメニューが用意されています。 GRUB 2:2.06.r322 に対するコード変更の 1 つで、新しい GRUB オプション--is-supported
が追加されました。 このオプションは、ファームウェア機能へのブートが存在するかどうかを示すために使用されます。 そうである場合、GRUB はブート メニューにエントリを追加して、EUFI 設定で起動できるようにします。
新しいオプションは、「30_uefi-firmware.in」というスクリプトで参照されていました。 このファイルの diff は、 if
ステートメントが削除され、2 行が追加されたことを示しています。
新しい行の 1 つは、 if
ステートメントの置換でした。 もう 1 つの新しい行には、 fwsetup --is-supported
が含まれています。 「fwsetup」の「fw」はファームウェアの略です。 しかし、その行は新しいif
ステートメントの上にあるため、常に実行されます。 if ステートメントの本体内にある場合は、 if
ステートメントのテストが true に解決されたif
にのみ実行されます。
これにより、すべてではありませんが、多くの UEFI コンピューターで問題が発生しました。 インストール済みの GRUB のバージョンがこのコマンドをサポートしているかどうかによって異なります。 影響を受けるマシンは、次の 2 つのいずれかを行います。 ブート プロセスが完了せずに継続的に再起動されるブート ループに入るか、コンピューターが UEFI ファームウェア設定で直接起動します。 いずれにせよ、コンピューターを強制的に Linux で起動する方法はありませんでした。
このような状況に直面した場合、完全な再インストールを行う核となる選択肢が常にあります。 それは機能しますが、ハード ドライブのパーティション分割の方法によっては、最近のバックアップがないと、データが失われる可能性があります。
影響の少ない方法では、 chroot
と Live USB または Live CD/DVD を使用します。 これは、Linux コンピューターを起動またはログインできない場合に、あらゆる種類のシステム障害を理解し、備えておくための優れた手法です。
使用するテクニック
この手法を使用するには、ライブ Linux インスタンスで起動する起動可能な USB または Linux ディストリビューションが入った CD/DVD が必要です。 通常、これらは Live USB または Live CD/DVD と呼ばれます。 すべての主要なディストリビューションがこの機能をサポートしています。
何もインストールしないので、ライブ メディアは、コンピューターにインストールしたディストリビューションと同じである必要はありません。 たとえば、Ubuntu USB を使用して EndeavourOS コンピュータを修復できます。 ライブ メディアにアクセスできない場合は、別のコンピューターを使用してイメージをダウンロードし、それを USB メモリ スティックまたは CD/DVD に書き込む必要があります。
ライブ メディアから起動すると、既存のファイル システムをマウントしてアクセスできるようになります。 インストールされたファイル システムは、ライブ メディアから起動された Linux のファイル システムの一部として表示されます。 それは素晴らしいことです。 アクセスできれば、修復できる可能性があります。 しかし、それは問題を提起します。
このハイブリッド ファイル システムのルートは、インストールしたファイル システムのルートではなく、ライブ メディア ファイル システムのルートです。 Linux システムで構成されたファイル パスが正しいターゲットの場所 (ライブ Linux のルートに関連する場所ではなく、ファイル システム内のどこか) を参照するようにするには、 chroot
を使用して、そのルートを指す新しいルートを設定する必要があります。インストールされているファイル システム。 つまり、「/」で始まるパスは、ファイル システムのルートを開始点として使用します。
これに使用したテスト コンピューターはext4
ファイル システムを使用していますが、この手法は他のファイル システムでも使用できます。 マウントする必要があるパーティションまたはボリュームと、それらをマウントする場所を特定するだけです。 原則は同じです。
実践する
起動可能な USB ドライブを作成し、被害を受けたコンピューターをそこから起動しました。 使用したディストリビューションは EndeavourOS でした。 EndeavourOS ライブ メディアが XFCE 4 デスクトップ環境で起動します。
ファイル システムのルートを保持するパーティションとブート パーティションを特定するには、ターミナル ウィンドウを開いてfdisk
コマンドを使用します。 -l
(パーティションのリスト) オプションを使用しています。 sudo
も使用する必要があります。
須藤 fdisk -l
「EFI System」および「Linux filesystem」というラベルの付いたエントリが表示されるまで、出力をスクロールします。
このコンピューターでは、両方ともsda
ハード ドライブにあります。 これらは、パーティション ラベル/dev/sda1
および/dev/sda2
で示されるように、パーティション 1 および 2 にあります。
お使いのコンピューターでは、それらは異なるハード ドライブやパーティションにある場合があります。 それらが存在するパーティションに注意してください。次のコマンドでこれらを使用する必要があります。
これらのパーティションをライブ ファイル システムにアタッチして、ファイル システムをこれらのパーティションにマウントする必要があります。 mount
コマンドがそれを行います。 パーティション ラベルは異なる可能性が高いため、必ずfdisk
コマンドの結果からのものを使用してください。
sudo マウント /dev/sda2 /mnt
sudo マウント /dev/sda1 /mnt/boot/efi
実際にインストールされたファイル システムのルートからファイル システムの有効なルートを開始するには、 chroot
を使用してルートを「/mnt」マウント ポイントに設定します。 これは、インストールされたファイル システムのルートがライブ ファイル システムに移植される場所です。
須藤chroot / mnt
コマンド プロンプトが変わり、root として実質的にログインし、コンピュータのファイル システムのルート ディレクトリ「/」にいることが示されることに注意してください。
「/home」ディレクトリに変更し、その中に存在するディレクトリを確認することで、これを簡単にテストできます。
CD /ホーム
ls
自分のユーザー アカウント用のディレクトリを含め、コンピュータに構成されている各ユーザーのディレクトリが表示されます。 このコンピューターには、「dave」という名前のユーザーが 1 人います。 chroot
コマンドを使用する前にcd /home
を使用していた場合は、ライブ ファイル システムの「/home」ディレクトリに入っていたはずです。
明確にするために、ルートユーザーとして実際のファイルシステムにアクセスしているので、注意してください.
GRUB 2:2.06.r322 の問題を修正するには、 grub-install
コマンドを実行するだけで済みました。
grub-install
通常、このようgrub-install
やみくもに実行することはお勧めしません。 この例では、それが必要でした。
修理または交換
別の問題を修正しようとしている場合は、ディストリビューションのフォーラムで問題の適切な修正を確認する必要があります。 苦情が広まっている場合は、すぐに解決策が見つかります。
少なくとも、ファイル システムにアクセスできるようになったので、データをリムーバブル メディアにコピーできます。 完全な再インストールを行うことにした場合、データは失われません。
関連: Linux で「install」コマンドを使用してファイルをコピーする方法