Например, у вас есть внешний USB HDD и внешняя же флэшка. В зависимости от того, в каком порядке их втыкать, у них будут разные имена. Например, у одного /dev/sda, у другого /dev/sdb. Или наоборот. Что еще хуже, диск может быть разбит на разделы, и у него надо монтировать /dev/sd?1, а флэшка используется вся целиком, как дискета, и у нее надо монтировать собственно /dev/sd?.
Или, скажем, сетевые карты при загрузке обнаруживаются в разном порядке, и получается, что eth1 - это иногда wifi, а иногда firewire. А иногда наоборот.
В результате настраивать точки монтирования или параметры сетевых интерфейсов становится очень неудобно. Но есть выход.
Подключаем диск, смотрим в /var/log/messages, как его нынче назвали. Предположим, sda. И на нем есть раздел sda1.
Запускаем
и видим что-то вроде:
Выбираем из этой кучки параметров что-нибудь достаточно уникальное. Например, размер.
Создаем файл /etc/udev/rules.d/10_local.rules, в который пишем
Проверяем:
Если в выдаче есть строчка
значит, все хорошо. Если не появилась, ищем ошибку в параметрах проверки.
Перегружать машину после этого не обязательно, правила начинают действовать сразу. Достаточно отключить диск и подключить его обратно - и магическим образом появится /dev/usbdisk, который отныне можно смело использовать в /etc/fstab.
Для дисков, которые используются целиком, без разбивки на разделы (типично для флэшек с FAT), удобно проверять ATTRS{vendor}, ATTRS{model}, ATTRS{rev} и другие более уникальные вещи, чем размер.
То же самое можно делать и для сетевых карт - у них уникальным параметром является MAC-адрес. Учтите, что в правилах для udev буквы в мак-адресах надо писать маленькими, тогда как ifconfig показывает их большими.
Например:
Отныне проводной интерфейс всегда будет называться lan, wifi-интерфейс - wlan, а firewire - eth1394, и они больше не перепутаются.
А еще можно при повялении девайса выполнять некоторые команды, например, поднимать bluetooth'ный интерфейс, если он почему-то не поднимается сам.
Ну и так далее - аудиокарты, принтеры, фотокамеры...
А как в такой же ситуации явно назначить букву для диска или точку монтирования в Windows - я не знаю.
Или, скажем, сетевые карты при загрузке обнаруживаются в разном порядке, и получается, что eth1 - это иногда wifi, а иногда firewire. А иногда наоборот.
В результате настраивать точки монтирования или параметры сетевых интерфейсов становится очень неудобно. Но есть выход.
Подключаем диск, смотрим в /var/log/messages, как его нынче назвали. Предположим, sda. И на нем есть раздел sda1.
Запускаем
# udevinfo -a -p /sys/block/sda/sda1
и видим что-то вроде:
looking at device '/block/sda/sda1':
KERNEL=="sda1"
SUBSYSTEM=="block"
DRIVER==""
ATTR{stat}==" 89 178 0 0"
ATTR{size}=="195366402"
ATTR{start}=="63"
ATTR{dev}=="8:1"Выбираем из этой кучки параметров что-нибудь достаточно уникальное. Например, размер.
Создаем файл /etc/udev/rules.d/10_local.rules, в который пишем
KERNEL=="sd?1", SUBSYSTEM=="block", ATTR{size}=="195366402", SYMLINK+="usbdisk"Проверяем:
# udevtest /sys/block/sda/sda1
Если в выдаче есть строчка
udev_node_add: creating symlink '/dev/usbdisk' to 'sda1'
значит, все хорошо. Если не появилась, ищем ошибку в параметрах проверки.
Перегружать машину после этого не обязательно, правила начинают действовать сразу. Достаточно отключить диск и подключить его обратно - и магическим образом появится /dev/usbdisk, который отныне можно смело использовать в /etc/fstab.
Для дисков, которые используются целиком, без разбивки на разделы (типично для флэшек с FAT), удобно проверять ATTRS{vendor}, ATTRS{model}, ATTRS{rev} и другие более уникальные вещи, чем размер.
То же самое можно делать и для сетевых карт - у них уникальным параметром является MAC-адрес. Учтите, что в правилах для udev буквы в мак-адресах надо писать маленькими, тогда как ifconfig показывает их большими.
Например:
KERNEL=="eth*", SYSFS{address}=="00:0b:5d:xx:xx:xx", NAME="lan"
KERNEL=="eth*", SYSFS{address}=="00:0e:35:xx:xx:xx", NAME="wlan"
KERNEL=="eth*", SYSFS{address}=="00:00:0e:10:01:xx:xx:xx", NAME="eth1394"Отныне проводной интерфейс всегда будет называться lan, wifi-интерфейс - wlan, а firewire - eth1394, и они больше не перепутаются.
А еще можно при повялении девайса выполнять некоторые команды, например, поднимать bluetooth'ный интерфейс, если он почему-то не поднимается сам.
KERNEL=="hci*", RUN+="/usr/sbin/hciconfig %k up".
Ну и так далее - аудиокарты, принтеры, фотокамеры...
А как в такой же ситуации явно назначить букву для диска или точку монтирования в Windows - я не знаю.
не только