/etc/udev/rules.d/81-external-disk.rulesに次のコンテンツが含まれています。
ENV{ID_FS_UUID}=="6826692e-79f4-4423-8467-cef4d5e840c5", RUN{program}+="/bin/mount -o nofail,x-systemd.device-timeout=1 -t ext4 -U 6826692e-79f4-4423-8467-cef4d5e840c5 /backup/external"
実行後:
udevadm control --reload ; udevadm trigger /dev/sdb1
何もしません。ただし、IIが/ bin/touch/tmp/xyzなどのマウントコマンドを変更した場合、動作します。
バージョン:
[root@helsinki rules.d]# rpm -qa | grep udev
libgudev1-219-19.el7_2.12.x86_64
python-pyudev-0.15-7.el7_2.1.noarch
[root@helsinki rules.d]# rpm -qa | grep systemd
systemd-libs-219-19.el7_2.12.x86_64
systemd-219-19.el7_2.12.x86_64
systemd-sysv-219-19.el7_2.12.x86_64
[root@helsinki rules.d]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
これはsystemdの機能です。元のudev
コマンドはsystemd-udevd
に置き換えられました(そのmanページを参照してください)。違いの1つは、独自のファイルシステム名前空間を作成するため、マウントは行われますが、プリンシパル名前空間には表示されません。 (これを確認するには、systemctl status systemd-udevd
を実行してサービスのメインPIDを取得し、/proc/<pid>/mountinfo
の内容を調べてファイルシステムを確認します)。
プライベートファイルシステムの名前空間ではなく共有に戻す場合は、コンテンツを含むファイル/etc/systemd/system/systemd-udevd.service
を作成します
.include /usr/lib/systemd/system/systemd-udevd.service
[Service]
MountFlags=shared
または、最後の2行だけを含む新しいディレクトリとファイル/etc/systemd/system/systemd-udevd.service.d/myoverride.conf
、つまり.
[Service]
MountFlags=shared
そして、systemd-udevdサービスを再起動します。私はこれを行うことの意味を見つけていません。
これと同じ問題がUbuntu 18.04でも同じ根本的な原因で発生します。これを修正するには、systemd-udevd
のオーバーライドファイルを作成します。
Sudo systemctl edit systemd-udevd
そしてそれに挿入します:
[Service]
MountFlags=shared
ファイルを保存して実行します。
Sudo systemctl daemon-reload
Sudo service systemd-udevd --full-restart
ENV {ID_FS_UUID}はマウントする前は不明です。
ATTR {SerialNumber}またはATTR {Vendor}やATTR {ProdID}などのハードウェアに近い属性を使用する必要があります。
usb-devices
は、デバイスを識別するためのより良い方法を見つけるのに役立ちます。