diff options
Diffstat (limited to 'lfs-12.1-sysv/chapter09/symlinks.html')
-rw-r--r-- | lfs-12.1-sysv/chapter09/symlinks.html | 430 |
1 files changed, 0 insertions, 430 deletions
diff --git a/lfs-12.1-sysv/chapter09/symlinks.html b/lfs-12.1-sysv/chapter09/symlinks.html deleted file mode 100644 index 25c0faf..0000000 --- a/lfs-12.1-sysv/chapter09/symlinks.html +++ /dev/null @@ -1,430 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> - <title> - 9.4. Управление устройствами - </title> - <link rel="stylesheet" type="text/css" href="../stylesheets/lfs.css" /> - <meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /> - <link rel="stylesheet" href="../stylesheets/lfs-print.css" type= - "text/css" media="print" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - </head> - <body class="lfs" id="lfs-12.1"> - <div class="navheader"> - <h4> - Линукс с нуля - Версия 12.1 - </h4> - <h3> - Глава 9. Системные настройки - </h3> - <ul> - <li class="prev"> - <a accesskey="p" href="udev.html" title= - "Взаимодействие с устройствами и модулями">Пред.</a> - <p> - Взаимодействие с устройствами и модулями - </p> - </li> - <li class="next"> - <a accesskey="n" href="network.html" title= - "Настройка сети">След.</a> - <p> - Настройка сети - </p> - </li> - <li class="up"> - <a accesskey="u" href="chapter09.html" title= - "Глава 9. Системные настройки">Наверх</a> - </li> - <li class="home"> - <a accesskey="h" href="../index.html" title= - "Линукс с нуля - Версия 12.1">Начало</a> - </li> - </ul> - </div> - <h1 class="sect1"> - <a id="ch-config-symlinks" name="ch-config-symlinks"></a>9.4. - Управление устройствами - </h1> - <div class="sect1" lang="ru" xml:lang="ru"> - <div class="sect2" lang="ru" xml:lang="ru"> - <h2 class="sect2"> - 9.4.1. Сетевые устройства - </h2> - <p> - Udev по умолчанию присваивает имена сетевым устройствам в - соответствии с данными прошивки, BIOS'а или физическими - характеристиками, такими как шина, слот или MAC-адрес. Целью такого - соглашения об именовании является обеспечение того, чтобы сетевые - устройства именовались последовательно, а не основывались на - времени обнаружения сетевой карты. Например, в более старых версиях - Linux—на компьютере с двумя сетевыми картами производства Intel и - Realtek, сетевая карта производства Intel могла стать eth0, а карта - Realtek — eth1. Иногда после перезагрузки карты именовались - наоборот. - </p> - <p> - В новой схеме именования, типичными именами сетевых устройств - являются enp5s0 или wlp3s0. Если такие имена для вас нежелательны, - то может быть реализована традиционная схема именования или своя - собственная. - </p> - <div class="sect3"> - <h3 class="sect3"> - 9.4.1.1. Отключение постоянного присвоения имен в параметрах - загрузки ядра - </h3> - <p> - Традиционная схема именования - eth0, eth1, и так далее, может - быть включена путем добавления параметра <strong class= - "userinput"><code>net.ifnames=0</code></strong> в командную - строку ядра. Это решение подходит для систем, которые имеют - только одно сетевое устройство каждого типа. Часто в ноутбуках - несколько сетевых устройств с именами eth0 и wlan0; в таких - ноутбуках также может использоваться этот метод. Командная строка - указывается в файле конфигурации GRUB. Подробности смотрите на - странице <a class="xref" href="../chapter10/grub.html#grub-cfg" - title= - "10.4.4. Создание файла конфигурации GRUB">Раздел 10.4.4, - «Создание файла конфигурации GRUB»</a>. - </p> - </div> - <div class="sect3"> - <h3 class="sect3"> - 9.4.1.2. Создание пользовательских правил Udev - </h3> - <p> - Схему именования можно настроить, создав пользовательские правила - udev. В состав книги включен скрипт, который генерирует начальные - правила. Чтобы их сгенерировать, выполните команду: - </p> - <pre class="install"><kbd class= - "command">bash /usr/lib/udev/init-net-rules.sh</kbd></pre> - <p> - Теперь, проверьте файл <code class= - "filename">/etc/udev/rules.d/70-persistent-net.rules</code>, - чтобы узнать какое имя с каким сетевым устройством сопоставлено: - </p> - <pre class="userinput"><kbd class= - "command">cat /etc/udev/rules.d/70-persistent-net.rules</kbd></pre> - <div class="admon note"> - <img alt="[Примечание]" src="../images/note.png" /> - <h3> - Примечание - </h3> - <p> - В некоторых случаях, например, когда MAC-адреса были назначены - сетевой карте вручную или в виртуальной среде, такой как Qemu - или Xen, возможно, файл сетевых правил не будет сгенерирован, - поскольку адреса назначаются не последовательно. В таких - случаях, этот способ не применим. - </p> - </div> - <p> - Файл начинается с блока комментариев, далее следуют две строки - для каждой сетевой карты (NIC). Первая строка представляет собой - описание с комментариями и содержит аппаратные идентификаторы - (например, поставщика PCI и идентификаторы устройств, если это - PCI-карта), а также информацию о драйвере (если его удалось - обнаружить). Ни идентификатор оборудования, ни драйвер не - используются для определения того, какое имя присвоить - интерфейсу; эта информация предназначена только для справки. - Вторая строка - это правило udev, которое соответствует этому - сетевому адаптеру и фактически присваивает ему имя. - </p> - <p> - Все правила udev состоят из нескольких ключевых слов, разделенных - запятыми и необязательными пробелами. Ниже приведены ключевые - слова и пояснения по каждому из них: - </p> - <div class="itemizedlist"> - <ul> - <li class="listitem"> - <p> - <code class="literal">SUBSYSTEM=="net"</code> - указывает - Udev игнорировать устройства, которые не являются сетевыми - картами. - </p> - </li> - <li class="listitem"> - <p> - <code class="literal">ACTION=="add"</code> - указывает Udev - игнорировать правила для событий, отличных от добавления - (события "удалить" и "изменить" также происходят, но не - требуют переименования сетевых интерфейсов). - </p> - </li> - <li class="listitem"> - <p> - <code class="literal">DRIVERS=="?*"</code> - существует для - того, чтобы Udev проигнорировал подинтерфейсы VLAN или - моста (потому что эти подинтерфейсы не имеют драйверов). - Эти подинтерфейсы пропускаются, потому что назначенные им - имена будут конфликтовать с именами их родительских - устройств. - </p> - </li> - <li class="listitem"> - <p> - <code class="literal">ATTR{address}</code> - значением - этого ключевого слова является MAC-адрес сетевой карты. - </p> - </li> - <li class="listitem"> - <p> - <code class="literal">ATTR{type}=="1"</code> - этот ключ - гарантирует выполнение правила соответствующего только - основному интерфейсу, при использовании определенных - беспроводных драйверов, которые создают несколько - виртуальных интерфейсов. Дополнительные интерфейсы - пропускаются по той же причине, что и подинтерфейсы VLAN и - мост, в ином случае произошел бы конфликт имен. - </p> - </li> - <li class="listitem"> - <p> - <code class="literal">NAME</code> - значением этого - ключевого слова является имя, которое udev присвоит этому - интерфейсу. - </p> - </li> - </ul> - </div> - <p> - Значение <code class="literal">NAME</code> является очень важным. - Прежде чем продолжить, убедитесь, что вы знаете, какое имя - назначено каждой из сетевых карт и обязательно используйте это - значение <code class="literal">NAME</code> при создании файлов - конфигурации сети. - </p> - <p> - Даже если создан пользовательский файл правил udev, udev все - равно может назначить одно или несколько альтернативных имен для - сетевой карты на основе физических характеристик. Если - пользовательское правило udev переименовывает какой-либо сетевой - адаптер, используя имя, уже назначенное в качестве - альтернативного имени другого сетевого адаптера, это правило udev - не будет выполнено. Если возникает эта проблема, вы можете - создать файл конфигурации <code class= - "filename">/etc/udev/network/99-default.link</code> с пустой - альтернативной политикой назначения, переопределяющей файл - конфигурации по умолчанию <code class= - "filename">/usr/lib/udev/network/99-default.link</code>: - </p> - <pre class="userinput"><kbd class= - "command">sed -e '/^AlternativeNamesPolicy/s/=.*$/=/' \ - -i /usr/lib/udev/network/99-default.link \ - > /etc/udev/network/99-default.link</kbd></pre> - </div> - </div> - <div class="sect2" lang="ru" xml:lang="ru"> - <h2 class="sect2"> - 9.4.2. Символические ссылки CD-ROM - </h2> - <p> - Некоторое программное обеспечение, которое вы, возможно, захотите - установить позже (например, различные медиаплееры) ожидают, что - устройства <code class="filename">/dev/cdrom</code> или - <code class="filename">/dev/dvd</code> и символические ссылки на - CD-ROM или DVD-ROM устройства должны существовать. Кроме того, - может быть удобно использовать эти символические ссылки в - <code class="filename">/etc/fstab</code>. Udev поставляется с - файлом сценария, который будет генерировать правила для создания - этих символических ссылок, в зависимости от возможностей каждого - устройства, но вам нужно решить, какой из двух режимов работы вы - хотите использовать. - </p> - <p> - Во-первых, скрипт может работать в режиме <span class= - "quote">«<span class="quote">by-path</span>»</span> (используется - по умолчанию для USB и FireWire устройств), где создаваемые им - правила зависят от физического пути к CD или DVD устройству. - Во-вторых, он может работать в режиме <span class= - "quote">«<span class="quote">by-id</span>»</span> (по умолчанию для - устройств IDE и SCSI), где создаваемые им правила зависят от строк - идентификации, хранящихся в самом устройстве CD или DVD. Путь - определяется сценарием Udev <span class= - "command"><strong>path_id</strong></span>, а идентификационные - строки считываются с оборудования командами <span class= - "command"><strong>ata_id</strong></span> или <span class= - "command"><strong>scsi_id</strong></span>, в зависимости от того, - какой тип устройства у вас есть. - </p> - <p> - У каждого подхода есть свои преимущества; правильный подход к - использованию будет зависеть от того, какие изменения устройств - могут произойти. Если вы ожидаете, что физический путь к устройству - (порты и/или слоты, в который оно подключено), изменится, например, - потому, что вы планируете переместить диск в другой порт IDE или - другой разъем USB, то вы должны использовать режим <span class= - "quote">«<span class="quote">by-id</span>»</span>. С другой - стороны, если вы ожидаете, что идентификация устройства изменится, - например, потому, что оно может выйти из строя, и вы замените его - другим устройством с теми же характеристиками и подключите к тем же - разъемам, тогда вы должны использовать режим <span class= - "quote">«<span class="quote">by-path</span>»</span>. - </p> - <p> - Если с вашим устройством возможен любой из вариантов, выберите тот, - который по вашему мнению случается чаще. - </p> - <div class="admon important"> - <img alt="[Важно]" src="../images/important.png" /> - <h3> - Важно - </h3> - <p> - Внешние устройства (например, привод компакт-дисков, подключенный - через USB) не следует подключать методом <span class= - "quote">«<span class="quote">by-path</span>»</span>, потому что - каждый раз, когда устройство подключено в новый внешний порт, - изменится его физический путь. Все внешние устройства подвержены - этой проблеме, если при написании правил Udev применять режим - распознавания по их физическому пути. К тому же, эта проблема не - ограничивается CD и DVD-приводами. - </p> - </div> - <p> - Если вы хотите увидеть значения, которые будут использовать скрипты - udev, то для требуемого устройства CD-ROM найдите соответствующий - каталог в <code class="filename">/sys</code> (например, это может - быть <code class="filename">/sys/block/hdd</code>) и выполните - команду, аналогичную следующей: - </p> - <pre class="userinput"><kbd class= - "command">udevadm test /sys/block/hdd</kbd></pre> - <p> - Обратите внимание на строки, содержащие вывод различных - идентификаторов *_id. Режим <span class="quote">«<span class= - "quote">by-id</span>»</span> будет использовать значение ID_SERIAL - если оно существует и не пустое, иначе будет использована - комбинация ID_MODEL и ID_REVISION. Режим <span class= - "quote">«<span class="quote">by-path</span>»</span> будет - использовать значение ID_PATH. - </p> - <p> - Если режим по умолчанию не подходит для вашей ситуации, то в файл - <code class= - "filename">/etc/udev/rules.d/83-cdrom-symlinks.rules</code> можно - внести следующие изменения (где <em class= - "replaceable"><code>mode</code></em> является одним из значений - <span class="quote">«<span class="quote">by-id</span>»</span> или - <span class="quote">«<span class="quote">by-path</span>»</span>): - </p> - <pre class="userinput"><kbd class= - "command">sed -e 's/"write_cd_rules"/"write_cd_rules <em class= - "replaceable"><code>mode</code></em>"/' \ - -i /etc/udev/rules.d/83-cdrom-symlinks.rules</kbd></pre> - <p> - Обратите внимание, что на данный момент, нет необходимости - создавать файлы правил или символические ссылки, так как вы - смонтировали каталог <code class="filename">/dev</code> хоста в - систему LFS, и мы предполагаем, что символические ссылки уже - существуют. Правила и символические ссылки будут создаваться при - первой загрузке LFS системы. - </p> - <p> - Однако, если у вас есть несколько устройств CD-ROM, то - символические ссылки, сгенерированные в это время, могут указывать - на другие устройства, и иметь различия от хост системы, потому что - устройства не будут обнаружены в предсказуемом порядке. Назначения, - созданные при первой загрузке системы LFS, будут правильными, - проблема возникнет только в том случае, если символические ссылки в - обеих системах указывают на одно и то же устройство. Если - потребуется, проверьте (и, возможно, отредактируйте) - сгенерированные правила в файле <code class= - "filename">/etc/udev/rules.d/70-persistent-cd.rules</code> после - загрузки, чтобы убедиться, что назначенные символические ссылки - соответствуют тому, что вам нужно. - </p> - </div> - <div class="sect2" lang="ru" xml:lang="ru"> - <h2 class="sect2"> - 9.4.3. Работа с дубликатами устройств - </h2> - <p> - Как поясняется в <a class="xref" href="udev.html" title= - "9.3. Взаимодействие с устройствами и модулями">Раздел 9.3, - «Взаимодействие с устройствами и модулями»</a>, порядок отображения - устройства с одинаковой функциональностью в <code class= - "filename">/dev</code> является, как правило, случайным. Например, - если у вас есть веб камера и TV тюнер, иногда <code class= - "filename">/dev/video0</code> ссылается на камеру, а <code class= - "filename">/dev/video1</code> ссылается на TV тюнер, а иногда, - например, после перезагрузки системы, порядок поменяется на - противоположный. Для всех классов оборудования, за исключением - звуковых и сетевых карт, это можно исправить, написав правила udev - для создания постоянных символических ссылок. Случай с сетевыми - картами описан отдельно в <a class="xref" href="network.html" - title="9.5. Настройка сети">Раздел 9.5, «Настройка сети»</a>, - инструкции по настройке звуковых карт можно найти в <a class= - "ulink" href= - "https://mirror.linuxfromscratch.ru/blfs/view/12.1/postlfs/devices.html"> - BLFS</a>. - </p> - <p> - Для каждого из ваших устройств, которые могут иметь такую проблему - (даже если проблема не существует в текущем дистрибутиве Linux ), - найдите соответствующий каталог в <code class= - "filename">/sys/class</code> или <code class= - "filename">/sys/block</code>. Для видеоустройств это может быть - <code class="filename">/sys/class/video4linux/video<em class= - "replaceable"><code>X</code></em></code>. Определите атрибуты, - которые однозначно идентифицируют устройство (обычно это - идентификаторы поставщика и продукта и/или серийные номера): - </p> - <pre class="userinput"><kbd class= - "command">udevadm info -a -p /sys/class/video4linux/video0</kbd></pre> - <p> - Затем напишите правила, которые создают символические ссылки, - например: - </p> - <pre class="userinput"><kbd class= - "command">cat > /etc/udev/rules.d/83-duplicate_devs.rules << "EOF" -<code class="literal"> -# 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" -</code> -EOF</kbd></pre> - <p> - В результате устройства <code class="filename">/dev/video0</code> и - <code class="filename">/dev/video1</code> по-прежнему случайным - образом ссылаются на TV тюнер и веб-камеру (и, следовательно, - никогда не должны использоваться напрямую), но есть символические - ссылки /dev/tvtuner и /dev/webcam, которые всегда указывают на - правильное устройство. - </p> - </div> - </div> - <div class="navfooter"> - <ul> - <li class="prev"> - <a accesskey="p" href="udev.html" title= - "Взаимодействие с устройствами и модулями">Пред.</a> - <p> - Взаимодействие с устройствами и модулями - </p> - </li> - <li class="next"> - <a accesskey="n" href="network.html" title= - "Настройка сети">След.</a> - <p> - Настройка сети - </p> - </li> - <li class="up"> - <a accesskey="u" href="chapter09.html" title= - "Глава 9. Системные настройки">Наверх</a> - </li> - <li class="home"> - <a accesskey="h" href="../index.html" title= - "Линукс с нуля - Версия 12.1">Начало</a> - </li> - </ul> - </div> - </body> -</html> |