Библиотека сайта rus-linux.net
Linux From Scratch (version 6.8) | ||
Назад | Глава 7. Настройка скриптов загрузки системы | Вперед |
7.10. Создание пользовательских символических ссылок на устройства
7.10.1. Символические ссылки на CD-ROM
Некоторые программы, которые вы, возможно, захотите установить позже (например, различные медиа-плееры), предполагают, что есть символические ссылки /dev/cdrom
и /dev/dvd
, которые указывают на устройство CD-ROM или DVD-ROM. Кроме того, такими символическими ссылками удобно пользоваться в таблице /etc/fstab
. Udev поставляется со скриптом, который будет создавать файлы с правилами, позволяющие создавать символические ссылки в зависимости от возможностей каждого устройства, но вам следует решить, какой из двух имеющихся режимов работы скрипта нужно использовать.
Во-первых, скрипт может использовать режим "by-path" (по умолчанию используется для устройств USB и FireWire), когда правила создаются в зависимости от физического пути к устройству CD или DVD. Во-вторых, скрипт может работать в режиме "by-id" (по умолчанию для устройств IDE и SCSI), когда правила создаются в зависимости от идентификационных строк, хранящихся в самих устройствах. Путь определяется с помощью скрипта path_id, имеющегося в Udev, а идентификационные строки считываются из аппаратного обеспечения при помощи программы ata_id или scsi_id в зависимости от того, устройство какого типа у вас есть
У каждого подхода есть свои преимущества; правильный выбор будет зависеть от того, какие виды изменений возможны для вашего устройства. Если вы предполагаете, что может меняться физический путь к устройству (то есть, порты и / или слоты, к которым устройство подключено), например, поскольку вы планируете переключать диск к другому порту IDE или другому разъему USB, то вы должны использовать режим "by-id". С другой стороны, если вы предполагаете, что может изменяться идентификации устройства, например, поскольку устройство может выйти из строя и вам потребуется заменить его другим устройством с теми же возможностями, которое будет подключено к тем же самым разъемам, вы должны использовать режим "by-path".
Если для вашего устройства возможны изменения обоих видов, то выберите режим, соответствующий изменениям, которые, как вы ожидаете, происходят чаще.
ВажноДля внешних устройств (например, устройства CD, подключаемого к USB) не следует пользоваться режимом "by-path", поскольку каждый раз, когда вы подключаете устройство к новому внешнему порту, его физический путь будет меняться. Если вы пишете правила Udev, использующие физический путь, эта проблема будет возникать со всеми устройствами с внешним подключением; проблема не ограничивается только устройствами CD и DVD. |
Если вы хотите увидеть значения, которые будут использовать скрипты Udev, найдите в /sys
для интересующего вас устройства CD-ROM соответствующий директорий (например, это может быть /sys/block/hdd
) и запустите команду, подобную следующей:
udevadm test /sys/block/hdd
Взгляните на строки, содержащие выходные данные вида *_id. В режиме "by-id" будет использоваться значение ID SERIAL если оно существует и не пустое, в противном случае он будет использоваться сочетание ID_MODEL и ID_REVISION. В режиме "by-path" будет использоваться значение ID_PATH.
Если режим, предлагаемый по умолчанию, не подходит в вашей ситуации, то в файле /lib/udev/rules.d/75-cd-aliases-generator.rules
можно сделать изменение следующим образом (где mode
может быть "by-id" или " by-path"):
sed -i -e 's/"write_cd_rules"/"write_cd_rules mode"/' \ /lib/udev/rules.d/75-cd-aliases-generator.rules
Обратите внимание, что сейчас не нужно создавать файлы с правилами или символические ссылки, поскольку есть директорий /dev хост системы, которые примонтирован к системе LFS, и мы предполагаем, что в хост системе символические ссылки имеются. Правила и символические ссылки будут созданы, когда вы первый раз загрузите систему LFS.
Однако, если у вас есть несколько устройств CD-ROM, то символические ссылки, создаваемые сейчас, могут указывать не на те устройства, которые есть в хост системе, поскольку обнаружение происходит в непредсказуемом порядке. Назначение устройств, которое будет выполнено, когда вы первый раз загружаете систему LFS, будет стабильным, так что проблема лишь в том, если вам требуется, чтобы символические ссылки на обеих системах указывали на одни и те же устройство. Если вам это необходимо, то проверьте (и, возможно, измените) файл /etc/udev/rules.d/70-persistent-cd.rules
, сгенерированный после загрузки, и обеспечьте, чтобы назначаемые символические ссылки указывали туда, куда нужно.
7.10.2. Несколько одинаковых устройств
Как объясняется в разделе 7.9 "Управление устройствами и модулями в системе LFS", порядок, в котором устройства, имеющие одинаковые функции, появятся в /dev
, по существу, является случайным. Например, если у вас есть USB веб-камера и ТВ-тюнер, то иногда /dev/video0
указывает на камеру, а /dev/video1
— на тюнер, а иногда после перезагрузки порядок изменяется на противоположный. Для всех классов аппаратных средств, кроме звуковых и сетевых карт, эту проблему можно скорректировать с помощью создания правил udev, которые будут создавать стабильные символические ссылки. Случай, относящийся к сетевым картам, рассматривается отдельно в разделе 7.13 "Конфигурирование скрипта network", а описание конфигурирования звуковых карт можно найти в BLFS.
Для каждого из ваших устройств, для которых, скорее всего, возможна эта проблема (даже если в текущем дистрибутиве Linux эта проблема отсутствует), найдите соответствующий директорий в /sys/class
или в /sys/block
. Для видеоустройств, это может быть /sys/class/video4linux/videoX
. Найдите в атрибутах значения, которые однозначно определяют устройство (как правило, идентификаторы поставщика и изделия и / или серийные номера):
udevadm info -a -p /sys/class/video4linux/video0
Затем напишите правила, которые создают символические ссылки, например:
cat > /etc/udev/rules.d/83-duplicate_devs.rules < "EOF" # Persistent symlinks for webcam and tuner KERNEL=="video*", ATTRS{idProduct}=="1910", ATTRS{idVendor}=="0d81", \ SYMLINK+="webcam" KERNEL=="video*", ATTRS{device}=="0x036f", ATTRS{vendor}=="0x109e", \ SYMLINK+="tvtuner" EOF
В результате этого, устройства /dev/video0
и /dev/video1
по-прежнему случайным образом указывают на тюнер и веб-камеру (и, следовательно, ими никогда не следует пользоваться непосредственно), но есть символические ссылки /dev/tvtuner
и /dev/webcam
, которые всегда указывают на правильное устройство.
Предыдущий раздел: | Оглавление | Следующий раздел: |
Управление устройствами и модулями в системе LFS | Конфигурирование скрипта localnet |