我有两个 SATA 驱动器托架(热插拔),我想安装驱动器的第一个分区/media/disk01/
并/media/disk02/
忽略所有其他分区。
应关闭所有(SATA 和 USB)设备的自动安装程序。
udevadm
/sys/devices/pci0000:00/0000:00:1f.2/ata5/host4/
给我/devices/pci0000:00/0000:00:1f.2/ata2/host1/
主板上的这些 SATA 端口。
我发现
https://www.axllent.org/docs/view/auto-mounting-usb-storage/
并尝试将其用作起点,但不幸的是,我一开始就被卡住了:无论我写什么 ACTION/RUN 行,驱动器都会自动安装usdisksd
...
有没有关于如何编写/调试 udev 规则的教程?如何用我自己的规则“替换” Ubuntu 的自动挂载功能?
答案1
通常,USB(可移动)媒体会在插入媒体时自动安装。如果您想要禁止安装,您可以配置/调整年份框:
- 打开终端(CTRL-ALT+T)并输入:
$ dconf-editor
- 前往
org.gnome.desktop.media-handling
并勾选automount
选项
上述操作应注意默认关闭所有可移动媒体设备的自动挂载程序。
转向 udev 规则,您需要:
- 检查 yr 设备的属性;在终端中执行以下操作:
$ udevadm info -q all -p $(udevadm info -q path -n /dev/sdXY)
其中对于每个设备,X 是一个字母,Y 是一个数字,它们对应于您要挂载的每个分区/media/disk01/
和/media/disk02/
。对于每个设备分区注意:DEVNAME
,以及和ID_MODEL_ID
。ID_VENDOR_ID
后两个各由 4 个字母数字字符组成。 - 检查 DEVNAME 是否与您要挂载的分区相对应。
- 在终端中,执行:其中
$ udevadm info -a -p $(udevadm info -q path -n /dev/sdXY)
代表/dev/sdXY
你的每一个 DEVNAME 值。 - 查找您识别出
ID_MODEL_ID
并ID_VENDOR_ID
记录的值的部分。它可能是“父设备”部分,紧接着输出的最顶部“设备”部分 - 将你的 udev 规则写入如下:
在/etc/udev/rules.d/70_hot-swap-mount.rules
:
# to create mount-points and mount devices
KERNEL=="sd[a-z][0-9]", ENV{ID_MODEL_ID}=="fill-in-model-id-here", ENV{ID_VENDOR_ID}=="fill-in-vendor-id-here", ACTION=="add", ENV{mount_options}="relatime", RUN+="/bin/mkdir -p /media/disk0Z", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/disk0Z"
# to unmount devices and remove mount-points
KERNEL=="sd[a-z][0-9]", ENV{ID_MODEL_ID}=="fill-in-model-id-here", ENV{ID_VENDOR_ID}=="fill-in-vendor-id-here", ACTION=="remove", RUN+="/bin/umount -l /media/disk0Z", RUN+="/bin/rmdir /media/disk0Z"
按照相同的规则,对要安装的两个设备重复上述所有操作。ENV{ID_VENDOR_ID}
和的值ENV{ID_MODEL_ID}
对于每个设备都会有所不同,并且 中的“Z”/dev/disk0Z
为 1 或 2,具体取决于所考虑的设备。
根据您提供的参考链接,您确实可以通过稍微不同地编写规则来提供更复杂的文件系统特定挂载选项。根据文件系统的不同,这可能包括所有权、rwx
访问权限等。
有关教程,请参阅这。
嗨嗨。