UDEVルールの一部のRUNコマンドは無視されます。

UDEVルールの一部のRUNコマンドは無視されます。

Raspberry Piを起動し、Raspberry Pi Destroyerにアップデートしてください。 Jessieの場合、同じファイルが正常に動作します。以下のudevルールを使用しました。

# Idea from https://www.axllent.org/docs/view/auto-mounting-usb-storage/
KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"
# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"
# Get a label if present, otherwise specify one
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"
# Global mount options
ACTION=="add", ENV{mount_options}="relatime"
# Filesystem-specific mount options
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"
# Mount the device
ACTION=="add", RUN+="/bin/date >> /tmp/xx"
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}",  RUN+="/bin/date >> /tmp/xx"
# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"
# Exit
LABEL="media_by_label_auto_mount_end"

MP3プレーヤーを追加すると、/media/MP3_INTENSOディレクトリが作成され、削除するとそのディレクトリも削除されます。

これはルールファイルがある場合にのみ発生します。だから確かに文書化の効果のようです。

私は試してみてudevadm monitor、予想される結果を見つけました。 UDEV [2378.210993] add /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1 (block)

実行してudevadm test /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1返します。

dir_name=MP3_INTENSO
mount_options=relatime,utf8,gid=100,umask=002
TAGS=:systemd:
USEC_INITIALIZED=2377859838
run: '/bin/date >> /tmp/xx'
run: '/bin/mkdir -p /media/MP3_INTENSO'
run: '/bin/mount -o relatime,utf8,gid=100,umask=002 /dev/sda1 /media/MP3_INTENSO'
run: '/bin/date >> /tmp/xx'
Unload module index
Unloaded link configuration context.

予想していたようです。コマンドラインからすべてのコマンドを正常に実行できます。ただし、デバイスを接続するだけでデバイスがマウントされていないと、/ tmp / xxにそのエントリが見つかりません。

/var/log/messages または dmesg には何も見つかりません。

何が間違っていて、さらなる分析のためにどうすればよいですか?

ベストアンサー1

追加の分析、編集、および/etc/udev/udev.conf追加にはudev_log=debugrestart udev を使用しますsystemctl restart udev

これにより、次の情報が提供されます。

'/bin/date >> /tmp/xx'(err) '/bin/date: extra operand '/tmp/xx''
'/bin/date >> /tmp/xx'(err) 'Try '/bin/date --help' for more information.'

だから">>"が動作しないようです。単純な/usr/local/bin/log.shがこれを行います。その後、MP3プレーヤーが正常にインストールされたことを確認しました。今興味深い質問は、誰がデバイスをすばやく削除するかということです。しかし、それは別の質問です。

失敗したインストールの説明は次のとおりです。アーチLinuxウィキ

おすすめ記事