From 2203e654b389586650d553251b04544a34f189bf Mon Sep 17 00:00:00 2001 From: Sn4il Date: Mon, 2 Sep 2024 15:54:35 +0300 Subject: LFS 12.2 --- lfs-12.2-sysv/chapter09/symlinks.html | 430 ++++++++++++++++++++++++++++++++++ 1 file changed, 430 insertions(+) create mode 100644 lfs-12.2-sysv/chapter09/symlinks.html (limited to 'lfs-12.2-sysv/chapter09/symlinks.html') diff --git a/lfs-12.2-sysv/chapter09/symlinks.html b/lfs-12.2-sysv/chapter09/symlinks.html new file mode 100644 index 0000000..95d9b42 --- /dev/null +++ b/lfs-12.2-sysv/chapter09/symlinks.html @@ -0,0 +1,430 @@ + + + + + + 9.4. Управление устройствами + + + + + + + + +

+ 9.4. + Управление устройствами +

+
+
+

+ 9.4.1. Сетевые устройства +

+

+ Udev по умолчанию присваивает имена сетевым устройствам в + соответствии с данными прошивки, BIOS'а или физическими + характеристиками, такими как шина, слот или MAC-адрес. Целью такого + соглашения об именовании является обеспечение того, чтобы сетевые + устройства именовались последовательно, а не основывались на + времени обнаружения сетевой карты. Например, в более старых версиях + Linux—на компьютере с двумя сетевыми картами производства Intel и + Realtek, сетевая карта производства Intel могла стать eth0, а карта + Realtek — eth1. Иногда после перезагрузки карты именовались + наоборот. +

+

+ В новой схеме именования, типичными именами сетевых устройств + являются enp5s0 или wlp3s0. Если такие имена для вас нежелательны, + то может быть реализована традиционная схема именования или своя + собственная. +

+
+

+ 9.4.1.1. Отключение постоянного присвоения имен в параметрах + загрузки ядра +

+

+ Традиционная схема именования - eth0, eth1, и так далее, может + быть включена путем добавления параметра net.ifnames=0 в командную + строку ядра. Это решение подходит для систем, которые имеют + только одно сетевое устройство каждого типа. Часто в ноутбуках + несколько сетевых устройств с именами eth0 и wlan0; в таких + ноутбуках также может использоваться этот метод. Командная строка + указывается в файле конфигурации GRUB. Подробности смотрите на + странице Раздел 10.4.4, + «Создание файла конфигурации GRUB». +

+
+
+

+ 9.4.1.2. Создание пользовательских правил Udev +

+

+ Схему именования можно настроить, создав пользовательские правила + udev. В состав книги включен скрипт, который генерирует начальные + правила. Чтобы их сгенерировать, выполните команду: +

+
bash /usr/lib/udev/init-net-rules.sh
+

+ Теперь, проверьте файл /etc/udev/rules.d/70-persistent-net.rules, + чтобы узнать какое имя с каким сетевым устройством сопоставлено: +

+
cat /etc/udev/rules.d/70-persistent-net.rules
+
+ [Примечание] +

+ Примечание +

+

+ В некоторых случаях, например, когда MAC-адреса были назначены + сетевой карте вручную или в виртуальной среде, такой как Qemu + или Xen, возможно, файл сетевых правил не будет сгенерирован, + поскольку адреса назначаются не последовательно. В таких + случаях, этот способ не применим. +

+
+

+ Файл начинается с блока комментариев, далее следуют две строки + для каждой сетевой карты (NIC). Первая строка представляет собой + описание с комментариями и содержит аппаратные идентификаторы + (например, поставщика PCI и идентификаторы устройств, если это + PCI-карта), а также информацию о драйвере (если его удалось + обнаружить). Ни идентификатор оборудования, ни драйвер не + используются для определения того, какое имя присвоить + интерфейсу; эта информация предназначена только для справки. + Вторая строка - это правило udev, которое соответствует этому + сетевому адаптеру и фактически присваивает ему имя. +

+

+ Все правила udev состоят из нескольких ключевых слов, разделенных + запятыми и необязательными пробелами. Ниже приведены ключевые + слова и пояснения по каждому из них: +

+
+
    +
  • +

    + SUBSYSTEM=="net" - указывает + Udev игнорировать устройства, которые не являются сетевыми + картами. +

    +
  • +
  • +

    + ACTION=="add" - указывает Udev + игнорировать правила для событий, отличных от добавления + (события "удалить" и "изменить" также происходят, но не + требуют переименования сетевых интерфейсов). +

    +
  • +
  • +

    + DRIVERS=="?*" - существует для + того, чтобы Udev проигнорировал подинтерфейсы VLAN или + моста (потому что эти подинтерфейсы не имеют драйверов). + Эти подинтерфейсы пропускаются, потому что назначенные им + имена будут конфликтовать с именами их родительских + устройств. +

    +
  • +
  • +

    + ATTR{address} - значением + этого ключевого слова является MAC-адрес сетевой карты. +

    +
  • +
  • +

    + ATTR{type}=="1" - этот ключ + гарантирует выполнение правила соответствующего только + основному интерфейсу, при использовании определенных + беспроводных драйверов, которые создают несколько + виртуальных интерфейсов. Дополнительные интерфейсы + пропускаются по той же причине, что и подинтерфейсы VLAN и + мост, в ином случае произошел бы конфликт имен. +

    +
  • +
  • +

    + NAME - значением этого + ключевого слова является имя, которое udev присвоит этому + интерфейсу. +

    +
  • +
+
+

+ Значение NAME является очень важным. + Прежде чем продолжить, убедитесь, что вы знаете, какое имя + назначено каждой из сетевых карт и обязательно используйте это + значение NAME при создании файлов + конфигурации сети. +

+

+ Даже если создан пользовательский файл правил udev, udev все + равно может назначить одно или несколько альтернативных имен для + сетевой карты на основе физических характеристик. Если + пользовательское правило udev переименовывает какой-либо сетевой + адаптер, используя имя, уже назначенное в качестве + альтернативного имени другого сетевого адаптера, это правило udev + не будет выполнено. Если возникает эта проблема, вы можете + создать файл конфигурации /etc/udev/network/99-default.link с пустой + альтернативной политикой назначения, переопределяющей файл + конфигурации по умолчанию /usr/lib/udev/network/99-default.link: +

+
sed -e '/^AlternativeNamesPolicy/s/=.*$/=/'  \
+       /usr/lib/udev/network/99-default.link \
+     > /etc/udev/network/99-default.link
+
+
+
+

+ 9.4.2. Символические ссылки CD-ROM +

+

+ Некоторое программное обеспечение, которое вы, возможно, захотите + установить позже (например, различные медиаплееры) ожидают, что + устройства /dev/cdrom или + /dev/dvd и символические ссылки на + CD-ROM или DVD-ROM устройства должны существовать. Кроме того, + может быть удобно использовать эти символические ссылки в + /etc/fstab. Udev поставляется с + файлом сценария, который будет генерировать правила для создания + этих символических ссылок, в зависимости от возможностей каждого + устройства, но вам нужно решить, какой из двух режимов работы вы + хотите использовать. +

+

+ Во-первых, скрипт может работать в режиме «by-path» (используется + по умолчанию для USB и FireWire устройств), где создаваемые им + правила зависят от физического пути к CD или DVD устройству. + Во-вторых, он может работать в режиме «by-id» (по умолчанию для + устройств IDE и SCSI), где создаваемые им правила зависят от строк + идентификации, хранящихся в самом устройстве CD или DVD. Путь + определяется сценарием Udev path_id, а идентификационные + строки считываются с оборудования командами ata_id или scsi_id, в зависимости от того, + какой тип устройства у вас есть. +

+

+ У каждого подхода есть свои преимущества; правильный подход к + использованию будет зависеть от того, какие изменения устройств + могут произойти. Если вы ожидаете, что физический путь к устройству + (порты и/или слоты, в который оно подключено), изменится, например, + потому, что вы планируете переместить диск в другой порт IDE или + другой разъем USB, то вы должны использовать режим «by-id». С другой + стороны, если вы ожидаете, что идентификация устройства изменится, + например, потому, что оно может выйти из строя, и вы замените его + другим устройством с теми же характеристиками и подключите к тем же + разъемам, тогда вы должны использовать режим «by-path». +

+

+ Если с вашим устройством возможен любой из вариантов, выберите тот, + который по вашему мнению случается чаще. +

+
+ [Важно] +

+ Важно +

+

+ Внешние устройства (например, привод компакт-дисков, подключенный + через USB) не следует подключать методом «by-path», потому что + каждый раз, когда устройство подключено в новый внешний порт, + изменится его физический путь. Все внешние устройства подвержены + этой проблеме, если при написании правил Udev применять режим + распознавания по их физическому пути. К тому же, эта проблема не + ограничивается CD и DVD-приводами. +

+
+

+ Если вы хотите увидеть значения, которые будут использовать скрипты + udev, то для требуемого устройства CD-ROM найдите соответствующий + каталог в /sys (например, это может + быть /sys/block/hdd) и выполните + команду, аналогичную следующей: +

+
udevadm test /sys/block/hdd
+

+ Обратите внимание на строки, содержащие вывод различных + идентификаторов *_id. Режим «by-id» будет использовать значение ID_SERIAL + если оно существует и не пустое, иначе будет использована + комбинация ID_MODEL и ID_REVISION. Режим «by-path» будет + использовать значение ID_PATH. +

+

+ Если режим по умолчанию не подходит для вашей ситуации, то в файл + /etc/udev/rules.d/83-cdrom-symlinks.rules можно + внести следующие изменения (где mode является одним из значений + «by-id» или + «by-path»): +

+
sed -e 's/"write_cd_rules"/"write_cd_rules mode"/' \
+    -i /etc/udev/rules.d/83-cdrom-symlinks.rules
+

+ Обратите внимание, что на данный момент, нет необходимости + создавать файлы правил или символические ссылки, так как вы + смонтировали каталог /dev хоста в + систему LFS, и мы предполагаем, что символические ссылки уже + существуют. Правила и символические ссылки будут создаваться при + первой загрузке LFS системы. +

+

+ Однако, если у вас есть несколько устройств CD-ROM, то + символические ссылки, сгенерированные в это время, могут указывать + на другие устройства, и иметь различия от хост системы, потому что + устройства не будут обнаружены в предсказуемом порядке. Назначения, + созданные при первой загрузке системы LFS, будут правильными, + проблема возникнет только в том случае, если символические ссылки в + обеих системах указывают на одно и то же устройство. Если + потребуется, проверьте (и, возможно, отредактируйте) + сгенерированные правила в файле /etc/udev/rules.d/70-persistent-cd.rules после + загрузки, чтобы убедиться, что назначенные символические ссылки + соответствуют тому, что вам нужно. +

+
+
+

+ 9.4.3. Работа с дубликатами устройств +

+

+ Как поясняется в Раздел 9.3, + «Взаимодействие с устройствами и модулями», порядок отображения + устройства с одинаковой функциональностью в /dev является, как правило, случайным. Например, + если у вас есть веб камера и TV тюнер, иногда /dev/video0 ссылается на камеру, а /dev/video1 ссылается на TV тюнер, а иногда, + например, после перезагрузки системы, порядок поменяется на + противоположный. Для всех классов оборудования, за исключением + звуковых и сетевых карт, это можно исправить, написав правила udev + для создания постоянных символических ссылок. Случай с сетевыми + картами описан отдельно в Раздел 9.5, «Настройка сети», + инструкции по настройке звуковых карт можно найти в + 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 по-прежнему случайным + образом ссылаются на TV тюнер и веб-камеру (и, следовательно, + никогда не должны использоваться напрямую), но есть символические + ссылки /dev/tvtuner и /dev/webcam, которые всегда указывают на + правильное устройство. +

+
+
+ + + -- cgit v1.2.3