我可以在 fstab 中使用大于 2 的传递值吗?

我可以在 fstab 中使用大于 2 的传递值吗?

fstab 的手册页对此值有这样的说明pass

pass(fsck命令) fsck命令是告诉fsck用​​什么命令来检查文件系统,如果设置为“0”则忽略文件系统。

通常会造成混乱,只有 3 个选项:

0 == 不检查。 1 == 首先检查该分区。 2 == 接下来检查此分区 实际上,使用“1”作为根分区,使用 / 并使用 2 表示其余分区。所有标有“2”的分区都会按顺序检查,您无需指定顺序。

使用“0”禁用在启动时检查文件系统或网络共享。

它没有明确提及大于 2 的值,但暗示012是唯一可用的值。

其他来源(例如fsck 手册页) 意味着以上值0将按升序处理(“passno 大于零的值将按顺序检查”)

是否可以使用大于 2 的值?

答案1

答案是……这取决于情况,但可能不是。

长话短说如果您使用systemd,非零通过数字将按照它们在 中出现的顺序进行检查fstab。如果不是systemd,则将按升序顺序检查通过编号,并且可以使用大于 2 的值。

在大多数 Linux 发行版上,fsck二进制文件由util-linux。这fsck 接受大于 2 的通行证号码,并且这些将按顺序处理。

任何直接调用的系统fsck都会理解 中大于 2 的“pass number”值fstab

事实证明util-linuxsfsck并不总是用于检查fstabsystemd维护自己的内部fsck副本systemd-fsck,它对待任何非零fstab,它按照出现的顺序不是在其他人之前扫描您的通行证号码1条目)。

在使用的 Linux 发行版上systemd,systemd-fsck用于自动文件系统检查,在这些情况下通行证号码是被视为布尔值0is 表示“假”或“不验证”,!= 0is 表示“真”或“验证”)。

另外,不要忘记有时/会单独检查根驱动器(安装)。

非常感谢内德64,他们做了很多研究回答

答案2

不,只有 0、1 和 2 是可能的。

从手册页(man fstab):

第六字段(fs_passno)。 fsck(8) 使用该字段来确定引导时执行文件系统检查的顺序。根文件系统的 fs_passno 应该指定为 1。其他文件系统的 fs_passno 应该为 2。驱动器内的文件系统将按顺序检查,但不同驱动器上的文件系统将同时检查,以利用硬件中可用的并行性。如果不存在,则默认为零(不进行 fsck)。

如今(即在那个systemd时代),似乎对 0pass_no中的条目进行了测试(以禁用检查),只有,然后将首先检查(根)文件系统(就好像/etc/fstab/pass_no == 1)。所有其他人都受到平等对待。请参见systemd/fsck.c 源systemd//fstab-generator.c 源了解详细信息(或者更确切地说,缺少pass_noexcept 针对 0 的测试)。

这意味着虽然您可以编写其他数字(例如 17),但这些数字只会针对 0 进行测试,否则精确值将被忽略。

相关内容