如何使用当前配置修复 fstab 文件

如何使用当前配置修复 fstab 文件

我正在使用 Ubuntu 10.04,并且在备份时意外删除了 fstab 文件中的所有条目(是的,我知道 ;))。

我想知道是否有办法使用当前安装选项重建它,因为自从删除后我没有重新启动服务器。如果没有这样的程序,有人能帮我重建它吗?

使用,我找到了显示当前设置的命令,但我不知道如何处理它。

$ sudo blkid
/dev/sda1:UUID="3fc55e0f-a9b3-4229-9e76-ca95b4825a40" 类型="ext4"
/dev/sda5:UUID="718e611d-b8a3-4f02-a0cc-b3025d8db54d" 类型="swap"
/dev/sdb1:标签="Files_Server_Int" UUID="02fc2eda-d9fb-47fb-9e60-5fe3073e5b55" 类型="ext4"
/dev/sdc1:UUID="41e60bc2-2c9c-4104-9649-6b513919df4a" 类型="ext4"
/dev/sdd1:LABEL="扩展驱动器" UUID="782042B920427E5E" TYPE="ntfs"


$ cat /etc/mtab
/dev/sda1 / ext4 rw,错误=remount-ro 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
无 /sys sysfs rw,noexec,nosuid,nodev 0 0
无 /sys/fs/fuse/connections fusectl rw 0 0
无 /sys/kernel/debug debugfs rw 0 0
无 /sys/kernel/security securityfs rw 0 0
无 /dev devtmpfs rw,模式=0755 0 0
无 /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
无 /dev/shm tmpfs rw,nosuid,nodev 0 0
无 /var/run tmpfs rw,nosuid,mode=0755 0 0
无 /var/lock tmpfs rw,noexec,nosuid,nodev 0 0
无 /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0
无 /var/lib/ureadahead/debugfs debugfs rw,relatime 0 0
/dev/sdc1 /home ext4 读写 0 0
/dev/sdb1 /media/Files_Server ext4 rw 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,noexec,nosuid,nodev 0 0
/dev/sdd1 /media/Expansion\040Drive fuseblk rw,nosuid,nodev,allow_other,blksize=4096,default_permissions 0 0
gvfs-fuse-daemon /home/yvoyer/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=yvoyer 0 0
/dev/sdd1 /media/Backup500 fuseblk rw,nosuid,nodev,sync,allow_other,blksize=4096,default_permissions 0 0
/dev/sr0 /media/DIR-615 iso9660 ro,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500 0 0
gvfs-fuse-daemon /home/cdrapeau/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=cdrapeau 0 0

答案1

您可以复制/dev/sd**表格/etc/mtab)并将其粘贴到新的文本文件中,然后/dev/sd**使用UUID或进行更改LABEL。例如从您的配置中:

使用

UUID="3fc55e0f-a9b3-4229-9e76-ca95b4825a40" / ext4 rw,errors=remount-ro 0 0

反而

/dev/sda1 / ext4 rw,errors=remount-ro 0 0

上面这行代码也有效,但是UUID是新的标准,如果您的 grub 配置了UUID,它可能无法理解哪个分区是什么。

如果分区有标签,则可以改用LABELUUID例如:

LABEL="Files_Server_Int" /media/Files_Server ext4 rw 0 0

IMO复制你的表格到一个新文件并删除以 开头的行,"none"并将/dev/sd**部分更改为输出等价物。如果唯一唯一标识符存在,则使用UUID代替/dev/sd**。如果标签存在使用LABEL而不是唯一唯一标识符

除了行之外,不要删除任何其他"none"内容。保存文件,将文件名更改为fstab并复制到/etc

最后添加swap任何行(如果您忘记了这一点,您的系统将启动,但您可能没有交换空间或交换文件将在根目录生成(/)取决于操作系统默认配置。)。例如,在您的例子中,请注意blkid打印此行:

/dev/sda5: UUID="718e611d-b8a3-4f02-a0cc-b3025d8db54d" TYPE="swap" 

因此你需要输入这一行fstab

UUID=718e611d-b8a3-4f02-a0cc-b3025d8db54d none  swap sw   0   0

这可能有助于恢复您的 fstab。

答案2

mtab 的“内容”(它是动态生成的)与 fstab 格式 100% 兼容。

首先,现在将当前文件复制到安全的地方:

cp /etc/mtab ~/mtab_working

然后将其复制到新的 fstab 并删除所有对于启动不必要的内容;您将剩下:

/dev/sda1 / ext4 rw,errors=remount-ro 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
none /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
none /dev/shm tmpfs rw,nosuid,nodev 0 0
/dev/sdc1 /home ext4 rw 0 0

然后只需将东西添加回去(重新启动系统时)直到拥有所有你需要的东西。

在重新启动时,您有时间阅读 fstab 和 mount 手册页:)

答案3

您可以尝试按照以下格式写入文件:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/sda8       /               ext4    errors=remount-ro 0       1
/dev/sda6       /boot           ext4    defaults        0       2
# swap was on /dev/sda7 during installation
UUID=718e611d-b8a3-4f02-a0cc-b3025d8db54d none            swap    sw              0       0

在这个例子中,我只有两个分区 / 和 /boot

相关内容