Вопрос или проблема
Я хочу написать скрипт для монтирования внешнего устройства в определенную точку монтирования, например, скажем /mnt
. Позвольте мне уточнить мой вопрос, предположим, что я запускаю fdisk -l
в терминале, я получаю следующий вывод:
Идентификатор диска: 0x00000000
Устройство Загрузка Начало Конец Блоки Id Система
/dev/sdb1 * 1 493 3956672 6 FAT16
Итак, я хочу написать скрипт, который, когда я его запущу, проверяет, где смонтировано внешнее устройство (в моем случае sdb1), и автоматически берет этот раздел и монтирует его в /mnt
.
У меня Scientific Linux 6.4 (32 бита).
Я думаю, что udev
может помочь.
Сначала вам нужно получить серийный номер вашего устройства:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb) | grep -i serial
Затем добавьте правило в /etc/udev/rules.d/:
SUBSYSTEMS=="usb",ACTION=="add",KERNEL=="sd?1", ATTRS{serial}=="HARDDRIVESERIAL", RUN+="/bin/mount /dev/%k /mnt/",OPTIONS="last_rule"
Ответ или решение
Чтобы создать оболочку скрипта, который позволяет автоматически монтировать внешнее устройство в определённую директорию, например, в /mnt
, мы можем использовать udev
для автоматизации процесса на уровне ядра. В данном ответе мы рассмотрим, как это можно сделать на примере операционной системы Scientific Linux 6.4 (32 бита).
Шаг 1: Определение устройства
Сначала необходимо определить, какое именно устройство вы хотите смонтировать. Запустите команду fdisk -l
, чтобы найти нужное устройство:
fdisk -l
Например, вы можете увидеть такое устройство:
/dev/sdb1 * 1 493 3956672 6 FAT16
В данном случае нас интересует /dev/sdb1
.
Шаг 2: Получение серийного номера устройства
Чтобы использовать udev
для автоматической настройки монтирования, необходимо получить серийный номер вашего устройства. Это можно сделать с помощью следующей команды:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb) | grep -i serial
Основное внимание следует уделить значению серийного номера, так как оно будет использоваться в правилах udev
.
Шаг 3: Создание правила для udev
Теперь нам необходимо создать правило, которое будет исполняться при каждом подключении вашего внешнего устройства. Следуйте следующим шагам:
- Откройте текстовый редактор с правами суперпользователя и создайте файл правил
udev
. Например, используйтеnano
илиvim
:
sudo nano /etc/udev/rules.d/99-usb-mount.rules
- Вставьте следующее правило, заменив
HARDDRIVESERIAL
на фактический серийный номер вашего устройства:
SUBSYSTEM=="block", ACTION=="add", KERNEL=="sdb1", ATTRS{serial}=="HARDDRIVESERIAL", RUN+="/bin/mount /dev/%k /mnt", OPTIONS+="last_rule"
Шаг 4: Применение правила
После создания файла правил нужно сообщить udev
, что он должен загрузить новые правила. Для этого выполните следующую команду:
sudo udevadm control --reload-rules
sudo udevadm trigger
Шаг 5: Тестирование и решение проблем
Теперь, когда вы подключите ваше внешнее устройство, оно должно автоматически монтироваться в /mnt
. Если что-то пошло не так, проверьте логи системы с помощью:
dmesg | tail
Это может помочь диагностировать, почему устройство не монтируется автоматически.
Заключение
Создание скрипта для автоматического монтирования устройств — это полезный инструмент, который может значительно упростить работу с USB-накопителями и внешними дисками. Используя udev
, вы можете минимизировать вмешательство пользователя и улучшить общий пользовательский опыт. Далее, для оптимизации процессов, рекомендуется периодически проверять и обновлять правила udev
, чтобы избежать конфликтов и обеспечить надежную работу с новыми устройствами.