我正在使用 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
,它可能无法理解哪个分区是什么。
如果分区有标签,则可以改用LABEL
,UUID
例如:
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