Linux の起動時に BIOS エラーが発生する問題を修正する方法
公開: 2022-09-28
GRUB の更新により、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」コマンドを使用してファイルをコピーする方法



