/ etc / fstab是否用于重新安装驱动器?


9

我有一台装有Ubuntu 14.04.5的设备,该设备具有一个带ext4文件系统的硬盘。

通过阅读文档Ext4 Filesystem,我了解到默认数据模式ordered仅保护元数据。在我的项目中,我们希望将其更改journal为也可以保护文件数据,因为数据安全性具有更高的价值。

我尝试的第一件事是修改/etc/fstab文件。我试图改变

UUID=<UUID> / ext4 errors=remount-ro 0 1

UUID=<UUID> / ext4 errors=remount-ro,data=journal 0 1

通过附加data=journal到选项字段。

但是,当我重新启动设备时,我收到一条错误消息“” cannot change data mode on remount。我检查了,dmesg并看到了有关以ordered数据模式安装驱动器的早期消息。

在一个令人尴尬的长时间里,我以为/etc/fstab它会覆盖默认的安装选项,因此驱动器仅安装一次。但是现在看起来很不对:使用默认安装选项安装了驱动器,然后/etc/fstab将其拾取以重新安装。

我的问题是

  • 这是“挂载撤除”过程的系统设计吗?我阅读了FstabWiki页面,但没有看到它提及“ mount-remount”的内容。
  • 如果/etc/fstab真的用于重新安装,则在引导过程的哪个步骤中首次安装驱动器?它实现了/etc/init.d吗?我也看到一些脚本/etc/init.dumountfsumountroot,不过,撇去他们的内容,他们不看相关。

2
我认为这是这里提到的“鸡和鸡蛋”问题(/etc/fstab位于根文件系统上,但是直到挂载了文件系统之后才能读取):initramfs是否使用/ etc / fstab?
钢铁司机

Answers:


8

来自man ext4

数据= {新闻|订购|写回}
              指定文件数据的日志记录方式。元数据总是
              已记录。使用根文件系统上命令以外的模式
              tem,将模式作为启动参数传递给内核,例如root-
              标志=数据=新闻。

data=ordered从fstab行删除,然后进行编辑/etc/default/grub。在/etc/default/grub换线

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash root‐flags=data=journal"

运行sudo update-grub并重新启动。


5

当使用/ etc / fstab时

如果您运行sudo strace -e open,openat mount -o remount,rw /该命令,则实际上该命令确实处于打开状态/etc/fstab。这是您将看到的最常见的命令,通常在有关使用恢复外壳进行工作的文章中引用。

还引用sourcejedi的答案(来自mount(8)手册):

挂载-o remount,rw / dir

调用之后,mount读取fstab并将这些选项与命令行(-o)中的选项合并。如果在fstab中找不到安装点,则允许使用未指定的源进行重新安装。

但是,这并不意味着/etc/fstab总是使用它。特别是,当您还指定设备文件时;参考mount(8)手册

重新安装功能遵循标准的方式,即mount命令与fstab中的选项一起使用的方式。这意味着仅当完全指定设备和目录时,mount命令才会读取fstab(或mtab)。

挂载-o remount,rw / dev / foo / dir

在此调用之后,所有旧的安装选项将被替换,并且fstab中的任意内容将被忽略,除了loop =选项是由mount命令内部生成和维护的。

这是有道理的,因为/dir可能是任意的-将设备重新安装到其他安装点。

/etc/fstab安装时也没有提到/在启动时内核文件系统一无所知的/etc/fstab。引用psusi的答案

最终,引导加载程序出现了,并且可以将命令行传递给内核。如果传递了root =参数,那么它将告诉内核根fs而不是内置值的位置。需要访问的驱动程序仍然必须内置在内核中

...

最后,今天我们有了initramfs。这类似于initrd,但是它不是压缩的文件系统映像,而是加载到ramdisk中,而是压缩的cpio归档文件。将tmpfs挂载为根,然后将归档文件提取到那里。initramfs引导脚本没有使用被认为是肮脏的hack的ivot_root,而是将真实的根安装在/ root中,删除tmpfs根中的所有文件,然后将chroot插入/ root,然后执行/ sbin / init

不需要fstab的文件系统

还要注意,Linux内核还有驻留在内存中的其他文件系统 -这些文件系统通常对用户不可用,其中一些根本没有安装点,而另一些则向用户公开。内核不必为此引用/etc/fstab。一个例子是/proc-这是一个虚拟文件系统,主要公开有关进程的信息,以及一些实际上应该包含的有关硬件和系统的信息/sys-另一个虚拟文件系统。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.