summaryrefslogtreecommitdiff
path: root/lfs-12.1-sysv/chapter09/symlinks.html
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.1-sysv/chapter09/symlinks.html')
-rw-r--r--lfs-12.1-sysv/chapter09/symlinks.html430
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">Раздел&nbsp;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 \
- &gt; /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. Взаимодействие с устройствами и модулями">Раздел&nbsp;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. Настройка сети">Раздел&nbsp;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 &gt; /etc/udev/rules.d/83-duplicate_devs.rules &lt;&lt; "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>