当 fstab 坏了该怎么办?

当 fstab 坏了该怎么办?

修复损坏的 fstab 的最佳方法是什么?我认为我可以使用一些实时 Linux 发行版来做到这一点。首先搜索分区并将它们挂载到临时创建的 /temproot。手动将您识别的分区逐个挂载到新创建的 /temproot。非常重要的一点是查看每个分区和交换分区的正确文件系统。之后使用命令 chroot 修复到原始根目录。有人知道更好的方法吗 - 欢迎提出任何建议?

答案1

一旦您启动了实时 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 中。

相关内容