为热插拔 SATA 设备的固定挂载点编写 udev 规则 (Ubuntu 14.04)

Joh*_*vat 3 automount udev 14.04

我有两个 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 的自动挂载功能?

Cbh*_*ihe 6

通常在插入媒体时会自动安装 USB(可移动)媒体。如果你想抑制它,你可以配置/调整yr 框:

  • 打开终端(CTRL-ALT+T)并输入: $ dconf-editor
  • org.gnome.desktop.media-handling并勾选automount选项

以上应该注意默认情况下为所有可移动媒体设备关闭自动安装程序。

谈到 udev 规则,您需要:

  • 检查您的设备的属性是什么;做终端:
    $ udevadm info -q all -p $(udevadm info -q path -n /dev/sdXY)
    其中,为每个设备X是一个字母,将Y的一个数字,对应于要安装在每个分区/media/disk01//media/disk02/。对于每个设备分区,请注意:DEVNAME,以及ID_MODEL_IDID_VENDOR_ID。后两者各由 4 个字母数字字符组成。
  • 检查 DEVNAME 是否与您要挂载的分区相对应。
  • 在终端中,执行:
    $ udevadm info -a -p $(udevadm info -q path -n /dev/sdXY)
    where/dev/sdXY代表 yr 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" 
Run Code Online (Sandbox Code Playgroud)

按照相同的规则,为要安装的两个设备中的每一个重复上述所有操作。的值ENV{ID_VENDOR_ID}ENV{ID_MODEL_ID}将针对每个设备和“Z”在不同的/dev/disk0Z是1或2作为设备的功能正在考虑中。

根据您提供的链接作为参考,您确实可以通过稍微不同地编写 yr 规则来提供更复杂的特定于文件系统的挂载选项。根据文件系统,这可能包括所有权、rwx访问权等。

对于教程,看看这个

哈。