USB MSDを編集して、デバイス(フラッシュドライブなど)をコンピューターに接続するたびにメッセージを表示します。どうすればいいのですか?正確にどのファイルを編集するのですか?
ドライバはこれとは何の関係もありません。デバイスを管理し、カーネルがデバイスと通信できるようにするだけです。あなたが望むのははるかに高いレバー機能です。
これを行う方法は、Linuxカーネルのデバイスマネージャである udev
を使用することです。
通知を送信するスクリプトを作成します。次の行をホームディレクトリのファイルに保存します(例:~/usbnotify.sh
)。
#!/bin/bash
export DISPLAY=":0"
notify-send "New device plugged in: $@"
chmod +x ~/usbnotify.sh
を実行して、スクリプトを実行可能にします
以下の内容で/etc/udev/rules.d/95-usbnotify.rules
という新しいファイルを作成します( here から変更):
KERNEL!="sd[a-z]*", GOTO="media_by_label_auto_mount_end"
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="media_by_label_auto_mount_end"
# Get label
PROGRAM=="/sbin/blkid -o value -s LABEL %N", ENV{dir_name}="%c"
# use basename to correctly handle labels such as ../mnt/foo
PROGRAM=="/usr/bin/basename '%E{dir_name}'", ENV{dir_name}="%c"
ENV{dir_name}=="", ENV{dir_name}="usbhd-%k"
ACTION=="add", ENV{dir_name}!="", RUN+="/home/akshay/usbnotify.sh %c", GOTO="media_by_label_auto_mount_end"
# Exit
LABEL="media_by_label_auto_mount_end"
必ずスクリプトへの正しいパスを使用してください。私は/home/akshay/usbnotify.sh
を使用しましたが、ホームディレクトリを指すように編集してください。
スクリプトを保存すればそれだけです。ドライブとしてマウントされている、接続するすべてのデバイスの通知を受け取るはずです。これはおそらくカメラなどでは機能しませんが、/dev/sd*
として接続されているストレージデバイスは機能するはずです。