среда, 25 марта 2015 г.

Автоматическое монтирование USB-накопителя при его подлючении

Мне надоело монтировать файловую систему MP3-плеера каждый раз, когда я подключаю его к домашнему компьютеру, и я настроил автоматическое монтирование при каждом подключении. С удовольствием делюсь своим опытом.


В первую очередь определяем имя устройства. Для этого подключаем его и ищем в выводе dmesg строки вида

[99671.276077] usb-storage 2-4:1.0: USB Mass Storage device detected
[99671.276176] scsi23 : usb-storage 2-4:1.0
[99672.498796] scsi 23:0:0:0: Direct-Access Samsung YP-U2 0100 PQ: 0 ANSI: 4
[99672.509134] sd 23:0:0:0: [sdd] 511616 2048-byte logical blocks: (1.04 GB/999 MiB)

[...]
[99672.511400]  sdd: sdd1


Убеждаемся, что в /etc/fstab есть строка для монтирования, причём в первом поле должно быть указано не имя устройства, а UUID (например для файловых систем ext*) или метка файловой системы (как раз наш случай, т.к. FAT не поддерживает UUID). Вообще это хорошая идея отказаться от имён устройств в fstab в пользу UUID/LABEL, но это уже другая история. Итак:

LABEL=mp3player /media/mp3player vfat noauto,async,noatime,nodiratime,user 0 0


Чтобы узнать метку файловой системы:

# fatlabel /dev/sdd1

Если метки нет, её можно установить:

# fatlabel /dev/sdd1 mp3player


Теперь ищем информацию об устройстве в udev:

# udevadm info -a /dev/sdd | less

Вывод достаточно объёмный, потому что в нём вся иерархия начиная от файловой системы на /dev/sdd1. Чтобы не терять время ищите по строке idVendor, это как раз наш плеер:

looking at parent device '/devices/pci0000:00/0000:00:13.2/usb2/2-4':
    [...]
    SUBSYSTEMS=="usb"

    [...]
    ATTRS{idVendor}=="04e8"
    [...]
    ATTRS{serial}=="4002FA9304AA0AA2"
    [...]
    ATTRS{idProduct}=="5050"
    [...]


В выводе команды udevadm я убрал лишнюю информацию и оставил только то, что нам необходимо. Эту информацию мы указываем в правиле udev, для чего создаём файл в соответствующем каталоге (в моём случае это /etc/udev/rules.d/80-ddo.rules, можете назвать иначе). В файл добавляем такую вот строчку, беря информацию из предыдущего шага:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="5050", ATTRS{serial}=="4002FA9304AA0AA2", RUN+="/root/bin/mount.mp3player"

Создаём скрипт /root/bin/mount.mp3player, который запускается в последнем параметре строки нашего правила udev:

#!/bin/bash
/bin/mount /media/mp3player/


Перезагружаем демон udev:

# service udev reload

Всё! Наслаждаемся плодами нашего труда. Только не забывайте размонтировать.

Комментариев нет:

Отправить комментарий