Linux の起動時に BIOS エラーが発生する問題を修正する方法

公開: 2022-09-28
Linux コマンド プロンプトを表示している青色の背景のラップトップ。
Fatmawati achmad zaenuri/Shutterstock.com

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 とは何ですか? BIOS との違いは何ですか?
関連UEFI とは何ですか? BIOS との違いは何ですか?

これにより、すべてではありませんが、多くの UEFI コンピューターで問題が発生しました。 インストール済みの GRUB のバージョンがこのコマンドをサポートしているかどうかによって異なります。 影響を受けるマシンは、次の 2 つのいずれかを行います。 ブート プロセスが完了せずに継続的に再起動されるブート ループに入るか、コンピューターが UEFI ファームウェア設定で直接起動します。 いずれにせよ、コンピューターを強制的に Linux で起動する方法はありませんでした。

このような状況に直面した場合、完全な再インストールを行う核となる選択肢が常にあります。 それは機能しますが、ハード ドライブのパーティション分割の方法によっては、最近のバックアップがないと、データが失われる可能性があります。

影響の少ない方法では、 chrootと Live USB または Live CD/DVD を使用します。 これは、Linux コンピューターを起動またはログインできない場合に、あらゆる種類のシステム障害を理解し、備えておくための優れた手法です。

使用するテクニック

この手法を使用するには、ライブ Linux インスタンスで起動する起動可能な USB または Linux ディストリビューションが入った CD/DVD が必要です。 通常、これらは Live USB または Live CD/DVD と呼ばれます。 すべての主要なディストリビューションがこの機能をサポートしています。

永続ストレージを備えたライブ Ubuntu USB ドライブを作成する方法
関連永続ストレージを使用してライブ Ubuntu USB ドライブを作成する方法

何もインストールしないので、ライブ メディアは、コンピューターにインストールしたディストリビューションと同じである必要はありません。 たとえば、Ubuntu USB を使用して EndeavourOS コンピュータを修復できます。 ライブ メディアにアクセスできない場合は、別のコンピューターを使用してイメージをダウンロードし、それを USB メモリ スティックまたは CD/DVD に書き込む必要があります。

ライブ メディアから起動すると、既存のファイル システムをマウントしてアクセスできるようになります。 インストールされたファイル システムは、ライブ メディアから起動された Linux のファイル システムの一部として表示されます。 それは素晴らしいことです。 アクセスできれば、修復できる可能性があります。 しかし、それは問題を提起します。

Linux で chroot コマンドを使用する方法
関連Linux で chroot コマンドを使用する方法

このハイブリッド ファイル システムのルートは、インストールしたファイル システムのルートではなく、ライブ メディア ファイル システムのルートです。 Linux システムで構成されたファイル パスが正しいターゲットの場所 (ライブ Linux のルートに関連する場所ではなく、ファイル システム内のどこか) を参照するようにするには、 chrootを使用して、そのルートを指す新しいルートを設定する必要があります。インストールされているファイル システム。 つまり、「/」で始まるパスは、ファイル システムのルートを開始点として使用します。

これに使用したテスト コンピューターはext4ファイル システムを使用していますが、この手法は他のファイル システムでも使用できます。 マウントする必要があるパーティションまたはボリュームと、それらをマウントする場所を特定するだけです。 原則は同じです。

実践する

起動可能な USB ドライブを作成し、被害を受けたコンピューターをそこから起動しました。 使用したディストリビューションは EndeavourOS でした。 EndeavourOS ライブ メディアが XFCE 4 デスクトップ環境で起動します。

EndeavourOS ライブ メディアが XFCE デスクトップ環境で起動

ファイル システムのルートを保持するパーティションとブート パーティションを特定するには、ターミナル ウィンドウを開いてfdiskコマンドを使用します。 -l (パーティションのリスト) オプションを使用しています。 sudoも使用する必要があります。

 須藤 fdisk -l 

sudo fdisk -l コマンドを使用してパーティションとデバイスを一覧表示する

「EFI System」および「Linux filesystem」というラベルの付いたエントリが表示されるまで、出力をスクロールします。

ブート パーティションとルート パーティションが強調表示された sudo fdisk -l コマンドの出力

このコンピューターでは、両方ともsdaハード ドライブにあります。 これらは、パーティション ラベル/dev/sda1および/dev/sda2で示されるように、パーティション 1 および 2 にあります。

お使いのコンピューターでは、それらは異なるハード ドライブやパーティションにある場合があります。 それらが存在するパーティションに注意してください。次のコマンドでこれらを使用する必要があります。

これらのパーティションをライブ ファイル システムにアタッチして、ファイル システムをこれらのパーティションにマウントする必要があります。 mountコマンドがそれを行います。 パーティション ラベルは異なる可能性が高いため、必ずfdiskコマンドの結果からのものを使用してください。

 sudo マウント /dev/sda2 /mnt
 sudo マウント /dev/sda1 /mnt/boot/efi 

ブートおよびファイル システムのルート ファイル システムのマウント

実際にインストールされたファイル システムのルートからファイル システムの有効なルートを開始するには、 chrootを使用してルートを「/mnt」マウント ポイントに設定します。 これは、インストールされたファイル システムのルートがライブ ファイル システムに移植される場所です。

 須藤chroot / mnt 

chroot コマンドを使用して新しい実効ルートを作成する

コマンド プロンプトが変わり、root として実質的にログインし、コンピュータのファイル システムのルート ディレクトリ「/」にいることが示されることに注意してください。

「/home」ディレクトリに変更し、その中に存在するディレクトリを確認することで、これを簡単にテストできます。

 CD /ホーム
ls 

ls を使用してユーザー アカウントを一覧表示する

自分のユーザー アカウント用のディレクトリを含め、コンピュータに構成されている各ユーザーのディレクトリが表示されます。 このコンピューターには、「dave」という名前のユーザーが 1 人います。 chrootコマンドを使用する前にcd /homeを使用していた場合は、ライブ ファイル システムの「/home」ディレクトリに入っていたはずです。

明確にするために、ルートユーザーとして実際のファイルシステムにアクセスしているので、注意してください.

GRUB 2:2.06.r322 の問題を修正するには、 grub-installコマンドを実行するだけで済みました。

 grub-install 

grub-install コマンドを実行して、GRUB ブートから BIOS エラーを修正する

通常、このようgrub-installやみくもに実行することはお勧めしません。 この例では、それが必要でした。

修理または交換

別の問題を修正しようとしている場合は、ディストリビューションのフォーラムで問題の適切な修正を確認する必要があります。 苦情が広まっている場合は、すぐに解決策が見つかります。

少なくとも、ファイル システムにアクセスできるようになったので、データをリムーバブル メディアにコピーできます。 完全な再インストールを行うことにした場合、データは失われません。

関連: Linux で「install」コマンドを使用してファイルをコピーする方法