如何在启动后自动挂载驱动器?

如何在启动后自动挂载驱动器?

https://askubuntu.com/a/119818/5032qbi 说:

将 noauto 添加到您的 fstab:

...

因此文件系统不会在启动时自动挂载。此外,你还需要编写一个脚本,该脚本基本上会挂载你的 mhddfs,并在启动过程的某个后期点添加它。

但是你该怎么做呢?我的 mergerfs 从不在启动时挂载所有驱动器,大概是因为在启动之前它们没有挂载?它是 fstab 中的最后一项,如下所示(但有更多驱动器):

/mnt/EXT4_drive/drivepool:/mnt/NTFS_drive/drivepool:/mnt/anotherdrive/drivepool /mnt/drivepool fuse.mergerfs defaults,allow_other,minfreespace=100M 0 0

当我df在启动后运行时,驱动器名称仅显示包含部分挂载点,以及所有挂载点应具有的一小部分空间,因此如果它们尚未准备好,则不会包含在内?我必须sudo umount /mnt/drivepool ; sudo mount /mnt/drivepool在启动后手动运行以修复它并显示所有挂载点。

此外,当计算机尝试安装时,其中一个驱动器被自动 fscked,计算机不止一次启动到“欢迎使用紧急模式!” /mnt/drivepool。最近没有发生这种情况,可能是因为 mergerfs 发生了变化,让它忽略未就绪的驱动器,而不是因为它们而停止运行?

我将如何/mnt/drivepool尽快自动安装fstab 中的其他所有内容是否均已成功挂载并进行 fsck 处理?

答案1

好的,经过大量阅读后:

从 Ubuntu 15.04 开始,fstab条目被转换为systemd单元(*.mount在下找到的文件/run/systemd/generatorsystemd-fstab-generator,然后以无特定顺序安装,这就是我失败的原因。

但是systemd支持依赖项,可以使用 fstab 选项指定这些依赖项x-systemd.requires

x-systemd.requires=
配置已创建的挂载单元与另一个 systemd 单元(例如设备或挂载单元)之间的 Requires= 和 After= 依赖关系。参数应为单元名称,或设备节点或挂载点的绝对路径。此选项可以多次指定。此选项对于需要附加设备(例如日志文件系统的外部日志设备)或需要附加挂载的挂载点声明特别有用(例如合并多个挂载点的覆盖文件系统). 请参阅 systemd.unit(5) 中的 After= 和 Requires= 了解详情。

因此,对于每个先决条件挂载,您都需要向 fstab 挂载添加单独的条目,并且它可以理解路径名:

x-systemd.requires=/mnt/XP,x-systemd.requires=/mnt/NTFS_3TB,...

在我的第一次尝试中,我遗漏了 ,/mnt/结果我的电脑拒绝启动并变为只读。ಠ_ಠ 为了防止这种情况,您还应该添加nofail。这会使挂载点成为“想要”local-fs.target而不是“需要”,因此即使发生故障,计算机仍会启动。

然后当你这样做的时候mount -a它会抱怨

fuse: unknown option `nofail'

但它仍然有效。ಠ_ಠ

这是我的完整 fstab 行,自从我更改它以来,它每次都有效:

/mnt/EXT4_backup/drivepool:/mnt/WIN7_BACKUP/drivepool:/mnt/XP/drivepool:/mnt/NTFS_3TB/drivepool /mnt/drivepool fuse.mergerfs nofail,defaults,allow_other,minfreespace=100M,x-systemd.requires=/mnt/XP,x-systemd.requires=/mnt/NTFS_3TB,x-systemd.requires=/mnt/EXT4_backup,x-systemd.requires=/mnt/WIN7_BACKUP 0 0

相关内容