修复损坏的 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
是交换 - 所以这很容易。
请注意,sdc
3 已启用引导标志,因此这很可能是引导分区(该标志将其标记为可引导分区,但不一定是 /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 中。