緊急モードを使用して /etc/fstab のエラーを修復する
このステップでは、/etc/fstab ファイルのエラーを診断して修復する方法を学びます。このファイルは、システムにどのファイルシステムをどこにマウントするかを指示するため、起動プロセスにとって重要です。/etc/fstab に誤ったエントリがあると、システムが起動できなくなり、緊急モード に強制的に入ります。
緊急モードは、システム修復のために可能な限り最小限の環境を提供します。レスキューモードとは異なり、ほとんどのファイルシステムをマウントしたり、多くのサービスを開始したりしようとしません。重要なことに、ルートファイルシステム (/) は、さらなる損傷を防ぐために読み取り専用 (ro) モードでマウントされます。
この実験(Lab)では実際の起動障害を発生させることはできませんが、/etc/fstab エラーを見つけて修正するプロセスをシミュレートできます。
まず、意図的に誤ったエントリを /etc/fstab に追加しましょう。echo コマンドを sudo と共に使用して、存在しないデバイスを参照する行を追加します。
echo '/dev/nonexistent /data xfs defaults 0 0' | sudo tee -a /etc/fstab
次に、/etc/fstab の内容を表示して、誤った行が追加されたことを確認しましょう。
cat /etc/fstab
ファイルの末尾に誤った行が表示されるはずです。
#
## /etc/fstab
## Created by anaconda on <date>
#
## Accessible filesystems, by reference, are maintained under '/dev/disk/'.
## See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
## After editing this file, run 'systemctl daemon-reload' to update systemd
## units generated from this file.
#
/dev/vda4 / xfs defaults 0 0
/dev/vda2 /boot xfs defaults 0 0
/dev/vda1 /boot/efi vfat umask=0077,shortname=winnt 0 0
/dev/vda3 swap swap defaults 0 0
/dev/nonexistent /data xfs defaults 0 0
次に、診断ステップをシミュレートします。mount -a コマンドは、まだマウントされていない /etc/fstab にリストされているすべてのファイルシステムをマウントしようとします。エントリが無効であるため、このコマンドは失敗します。
sudo mount -a
このコマンドはエラーを生成し、マウントポイント /data が存在しないことを明確に示します。これは、起動に失敗したときに表示されるエラーと同様です。
mount: /data: mount point does not exist.
次に、修復プロセスをシミュレートしましょう。実際の緊急シェルでは、最初のステップは、変更を許可するためにルートファイルシステムを読み書きモードで再マウントすることです。
sudo mount -o remount,rw /
ファイルシステムが書き込み可能になったので、/etc/fstab を編集してエラーを修正できます。nano エディタを使用してファイルを開きます。
sudo nano /etc/fstab
nano エディタ内で、矢印キーを使用して誤った行 (/dev/nonexistent /data xfs defaults 0 0) に移動し、削除します。Ctrl+k を押すと、行全体を削除できます。行が削除されたら、Ctrl+x、次に y、最後に Enter を押してファイルを保存します。
修正を確認するには、sudo mount -a をもう一度実行します。
sudo mount -a
今回は、コマンドは出力なしで静かに実行されるはずです。これは、/etc/fstab のすべての有効なエントリが正しくマウントされていることを示しています。ファイルは正常に修復されました。