我有一个 USB 硬盘,我想在启动时将其安装到特定位置。如何让该驱动器安装并保持可用状态(例如用于本地备份等),即使没有人登录?
似乎 udev 或类似程序控制了磁盘。如果我在 /etc/fstab 中放入一个条目,尝试专门挂载此磁盘(通过 UUID),那么该挂载过程和 udev 挂载过程似乎会相互争斗,导致磁盘无法挂载。
答案1
使用 udev 安装磁盘。从此处放置规则维基百科进入/etc/udev/user.rules
并重新启动(或重新连接 USB HDD)。Wiki 中有几种规则(这就是我没有在这里列出它们的原因),请选择最适合您需求的规则(例如,您需要特定的普通用户才能卸载它)。
仔细阅读/lib/udev/rules.d/80-udisks.rules
将帮助你理解 udev 正在做什么你的硬盘。
除了我上面提到的 udev 规则之外,我认为您还可以采取另一种方法:指示 udisks(通过 udev)不要管您的磁盘,然后通过 fstab 挂载它。
此代码适用于我的系统
ACTION!="add|change", GOTO="my_udisks_end"
SUBSYSTEM!="block", GOTO="my_udisks_end"
ENV{ID_TYPE}!="disk", GOTO="my_udisks_end"
ENV{ID_BUS}!="ata", GOTO="my_udisks_end"
ENV{DEVTYPE}!="partition", GOTO="my_udisks_end"
KERNEL=="sd*|hd*", ENV{UDISKS_PRESENTATION_NOPOLICY}="1"
LABEL="my_udisks_end"
但它是通用的,包括所有分区。为了能够针对您的特定硬盘/分区使用udevadm info --query=all -n /dev/sdX
,然后在 udev 规则中匹配某些特定属性。
可以帮助您解决此问题的良好资源是编写 udev 规则。不幸的是,它包含一些过时的信息(udevinfo
已被替换udevadm indo
)。但我向你保证,这是值得一读的——udev 是当今架构的核心部分,你可以使用它完成很多事情。它也非常灵活。
udev 规则也很容易出错 :)。用来udevadm test $(udevadm info -q path -n /dev/sdX)
“查看” udev 正在做什么。
答案2
您可以尝试通过 /dev/... 而不是 UUID 来引用它。它最有可能是 /dev/sdb*,您可以通过转到系统 -> 管理 -> 系统监视器并单击“文件系统”选项卡来检查。您需要先插入 USB 驱动器并让它自动挂载。将 /etc/fstab 中的“UUID=uuid”替换为“/dev/sdb*”。在编辑 fstab 之前备份它总是一个好主意。