Драйвер не имеет никакого отношения к этому, он просто управляет устройством и позволяет ядру связываться с ним. То, что Вы хотите, является намного более высокой функцией рычага.
способ сделать это использует udev
, диспетчер устройств для ядра Linux:
Создают сценарий, который отправит уведомления. Сохраните следующие строки в файле в Вашем корневом каталоге, например ~/usbnotify.sh
:
#!/bin/bash
export DISPLAY=":0"
notify-send "New device plugged in: $@"
Делают исполняемый файл сценария путем выполнения chmod +x ~/usbnotify.sh
, Создают новый файл, названный /etc/udev/rules.d/95-usbnotify.rules
со следующим содержанием (адаптированный от здесь ):
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*
должен работать.