Отредактируйте драйвер запоминающего устройства USB

Я хочу отредактировать USB MSD, чтобы при каждом подключении устройства (например, флэш-накопителя) к компьютеру отображалось сообщение. Как мне это сделать? Какой именно файл нужно редактировать и как?

1 ответ

Драйвер не имеет к этому никакого отношения, он просто управляет устройством и позволяет ядру взаимодействовать с ним. То, что вы хотите, это гораздо более высокая функция рычага.

Способ сделать это с помощью udev, менеджер устройств для ядра Linux:

  1. Создайте скрипт, который будет отправлять уведомления. Сохраните следующие строки в файле в вашем домашнем каталоге, например ~/usbnotify.sh:

    #!/bin/bash
    export DISPLAY=":0"
    notify-send "New device plugged in: $@"
    

    Сделайте скрипт исполняемым, запустив chmod +x ~/usbnotify.sh

  2. Создайте новый файл с именем /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* должно сработать.

Другие вопросы по тегам