summaryrefslogtreecommitdiff
path: root/lfs-12.0-sysv/chapter09/symlinks.html
diff options
context:
space:
mode:
Diffstat (limited to 'lfs-12.0-sysv/chapter09/symlinks.html')
-rw-r--r--lfs-12.0-sysv/chapter09/symlinks.html412
1 files changed, 412 insertions, 0 deletions
diff --git a/lfs-12.0-sysv/chapter09/symlinks.html b/lfs-12.0-sysv/chapter09/symlinks.html
new file mode 100644
index 0000000..04da0d0
--- /dev/null
+++ b/lfs-12.0-sysv/chapter09/symlinks.html
@@ -0,0 +1,412 @@
+<!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 V1.79.1" />
+ <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.0">
+ <div class="navheader">
+ <h4>
+ Линукс с нуля - Версия 12.0
+ </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.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ <div class="sect1" lang="en" xml:lang="en">
+ <h1 class="sect1">
+ <a id="ch-config-symlinks" name="ch-config-symlinks"></a>9.4.
+ Управление устройствами
+ </h1>
+ <div class="sect2" lang="en" xml:lang="en">
+ <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>
+ </div>
+ </div>
+ <div class="sect2" lang="en" xml:lang="en">
+ <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="en" xml:lang="en">
+ <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.0/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.0">Начало</a>
+ </li>
+ </ul>
+ </div>
+ </body>
+</html>