web-dev-qa-db-ja.com

fstabが壊れたときに何をしますか?

壊れたfstabを修正する最良の方法はどれですか?私はいくつかのライブLinuxディストリビューションでそれを行うことができると思います。最初にパーティションを検索し、一時的に作成された/ temprootにマウントします。認識したパーティションを1つずつ手動で新しく作成した/ temprootにマウントします。非常に重要なのは、各パーティションとスワップパーティションの正しいファイルシステムを利用することです。その後、コマンドchrootを使用して、元のルートを修正します。誰かがより良い方法を知っていますか?どんな提案も歓迎しますか?

1
mdakic

ライブCDを起動したら、最初に提案どおりにパーティションを特定する必要があります。

Partedを使用すると、いくつかの手がかりが得られます。

# parted /dev/sdc P

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  2155MB  2154MB  primary   linux-swap(v1)
 4      2155MB  212GB   209GB   extended
 5      2156MB  3230MB  1074MB  logical   ext3
 6      3231MB  5378MB  2147MB  logical
 7      5379MB  48.3GB  42.9GB  logical   ext4
 2      212GB   319GB   107GB   primary   ext4
 3      319GB   320GB   1080MB  primary   ext3            boot

ここで、sdc1がスワップであることがわかります-これは簡単です。

sdc3ではブートフラグが有効になっているため、ブートパーティションである可能性が高いことに注意してください(フラグはブート可能パーティションとしてマークしますが、必ずしも/ bootパーティションである必要はありません)。ブートパーティションは、多くを含む必要がないため、一般的に小さいです。この場合、他の可能性のある候補/dev/sdc5は実際のブーツです

それをマウントすると、

$ mount /dev/sdc5 /mnt
$ grep root /mnt/grub/grub.cfg
set root='(hd2,5)'
linux   /vmlinuz-2.6.32-5-xen-AMD64 root=UUID=5d41ba76-8261-41cd-b147-1f034833f0a1 ro  quiet

Grub.cfg(またはmenu.lst)がデバイス名を使用している場合は、どちらがルートであるかがわかります。ただし、この場合はUUIDを使用しているため、デバイスを識別する必要があります。

ls -l /dev/disk/by-uuid/5d41ba76-8261-41cd-b147-1f034833f0a1
lrwxrwxrwx 1 root root 10 Jan 18 08:45 /dev/disk/by-uuid/5d41ba76-8261-41cd-b147-1f034833f0a1 -> ../../sdc7

これで、ルートパーティションが/dev/sdc7であることがわかりました。

提案されているように他のパーティションを順番にマウントすると、残りのパーティションを特定するのに役立ちます。環境にchrootする必要はありません。fstabを直接編集するだけです。

mount /dev/sdc7 /mnt
vi /mnt/etc/fstab

そして、エントリを再作成します。

/ etc/mtabファイルは、パーティションがマウントされるときに作成されることに注意してください。 fstabが壊れてから起動できなかった場合、これはそのままである可​​能性があるため、/etc/mtabを調べて、そこからマウント情報を回復できる可能性があります。通常、mtabにある行を直接fstabにコピーできます。

1
Paul