GRUB アップデートにより、Linux コンピュータが BIOS または UEFI 設定で起動することが知られています。この問題の修正には、知っておくべき便利なシステム回復テクニックが利用されています。
ケーススタディ: GRUB 2:2.06.r322
2022 年夏の Arch および Arch ベースの Linux ディストリビューションのシステム アップデートには、新しいバージョンの GRUB が含まれていました。 GRUB は、 gr および 統合 ブート ローダーの略です。
ブートローダーは 、コンピュータの電源が入ったときに 起動プロセスを開始するアプリケーションです。最終的に動作可能でアクセス可能なオペレーティング システムを実現するには、いくつかのソフトウェア ツールとユーティリティを、適切なパーティションから適切な順序で起動する必要があります。 GRUB は、その一連のイベントを開始します。
コンピュータに複数のオペレーティング システムがインストールされている場合、GRUB には、使用するオペレーティング システムを選択できるメニューが表示されます。 GRUB 2:2.06.r322 へのコード変更の 1 つにより、新しい GRUB オプションのサポートが追加されました。
-- is -supported
。このオプションは、ファームウェアへのブート機能が存在するかどうかを示すために使用されます。存在する場合、GRUB はブート メニューにエントリを追加して、EUFI 設定でブートできるようにします。
新しいオプションは、「30_uefi-firmware.in」という スクリプトで参照されました 。 このファイルの差分 を見ると、
if
ステートメントが削除され、2 行が追加されました。
新しいラインの 1 つは置き換えられました
if
声明。他の新しい行には以下が含まれます
fwsetup -- is -supported
。 「fwsetup」の「fw」はファームウェアの略です。しかし、そのラインは新しいラインの上にあるため、
if
ステートメントは常に実行されます。それが体内にあったとしたら、
if
ステートメントは、テストの場合にのみ実行されます。
if
ステートメントは true に解決されました。
これにより、すべてではありませんが、多くの UEFI コンピュータ で問題が発生しました。これは、すでにインストールされている GRUB のバージョンがこのコマンドをサポートしているかどうかによって異なります。影響を受けるマシンは 2 つのうちのいずれかを実行します。ブート プロセスが完了せずに再起動が繰り返されるブート ループに陥るか、コンピュータが UEFI ファームウェア設定で直接起動するかのどちらかです。いずれにせよ、コンピュータを強制的に Linux で起動する方法はありませんでした。
このような状況に直面した場合、完全な再インストールを実行するという核心的なオプションが常にあります。これは問題ありませんが、ハード ドライブのパーティション分割方法によっては、最新のバックアップがないとデータが失われる可能性があります。
影響の少ない方法では、
chroot
と Live USB または Live CD/DVD を使用します。これは、Linux コンピュータを起動できない場合や、Linux コンピュータにログインできない場合に、あらゆる種類のシステム障害を理解し、対処するための優れたテクニックです。
使用するテクニック
この手法を使用するには、ライブ Linux インスタンスを起動する、Linux ディストリビューションが含まれたブート可能な USB または 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
、 あまりにも。
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」マウント ポイントに設定します。ここは、インストールされたファイル システムのルートがライブ ファイル システムに移植される場所です。
sudo chroot /mnt
コマンド プロンプトが変化し、事実上 root としてログインし 、コンピュータのファイル システムのルート ディレクトリ “/” にいることを示します。
「/home」ディレクトリに移動し、その中にどのようなディレクトリが存在するかを確認することで、これを簡単にテストできます。
CD/ホーム
ls
自分のユーザー アカウントのディレクトリも含め、コンピュータ上に構成されている各ユーザーのディレクトリが表示されるはずです。このコンピュータには「dave」という名前の 1 人のユーザーがいます。
chroot
コマンドを使用する前に
cd /home
を使用していれば、ライブ ファイル システムの “/home” ディレクトリに入っていたでしょう。
明確にしておきますが、現在は root ユーザーとして 実際のファイル システム にアクセスしているため、注意してください。
GRUB 2:2.06.r322 の問題を解決するには、
grub-install
コマンドを実行するだけで済みました。
grub-install
通常、このように盲目的に
grub-install
実行することはお勧めできません。この例では、それが必要なものでした。
修理または交換
別の問題を解決しようとしている場合は、ディストリビューションのフォーラムで問題の適切な修正を確認する必要があります。広範囲にわたる苦情の場合は、すぐに解決策が見つかります。
少なくとも、ファイル システムにアクセスできるようになったので、 データをリムーバブル メディアにコピーする ことができます。完全に再インストールする場合、データは失われません。





