Современные ядра Linux поддерживают файл DEVTMPFS
Система (не путайте с древними devfs
) , что создает все узлы устройства, как только ядро обнаруживает их. (Фактически, последние релизы
требуют этого; вы обнаружите, что UDEV больше не создает узлы устройства, только SymLinks.)
Аналогично, загрузка прошивки была Перемещенные в ядро, а также только оставшиеся задачи UDEV
выполняют нагрузку модулей (в соответствии с модальными) и применение разрешений на устройство и другие правила UDEV.
Так что в теории полностью монолитное ядро должно быть загрузки просто отлично без Удева.
Однако настоящая проблема здесь - это то, что происходит позже.
Довольно несколько программ пользователей полагаются на UDEV, поддерживая свою базу данных устройства, доступную через Libudev
. Во время перечисления устройств и прослушивания к добавленным / удаленным событиям могут быть выполнены непосредственно с использованием интерфейсов ядра (SYSFS и NETLink), вы все равно останетесь без всех метаданных, которые прикреплены различные правила UDEV.
Правила UDEV также поддерживают различные «настойчивые» симлизованные ссылки в / dev / disk / by - *
, / dev / Mapper
, / dev / input / by-path
, / dev / snd / by-path
, и так далее. Например, если у вас подключены два диска, нет никакой гарантии, что первый всегда будет SDA
или SDB
, но UDEV гарантирует, что SymLinks в / dev / disk / by-uuid
продолжит указывать на правильный.
В то время как узлы устройства теперь создаются ядром и, следовательно, не ваша проблема больше, все равно важно отметить, что некоторые типы устройств начали использовать динамически назначенные основные / незначительные числа, поэтому, даже если у вас есть / dev / Предохранитель
Как 10 228 и / dev / hpet
Как 10,229 сегодня они будут имеют разные числа после каждой перезагрузки, поэтому либо devtmpfs
или (на более старых системах ) требуется программа, которая слушает UEVENT, это требуется .
Многие из этих вещей могут быть легко сделаны другими программами, такими как MDEV
, конечно. Моя точка зрения является то, что статическое / etc / makedev
больше не собирается работать ...
Итак, в основном, когда дело доходит до загрузки сложности, Удев вполне вероятно, что ваших проблем.
Высокий глянец этих двух строк заключается в том, что они извлекают номер заголовка и главы из вывода [117684]lsdvd[117685] и хранят их в массиве с именами [117686]ячеек [117687].
Скорее всего, приведенный код не работает, так как [117688]to_cell=${ячейка[title_num]}[117689] в последней строке должна быть [117690]to_cell=${ячейки[title_num]}[117691].
Думаю, вас также смущает синтаксис [117710]$((10#x))[117711]. Вот и разбивка: [117712]$((выражение))[117713] в слове bash означает "относиться к [117714] выражению [117715] как к арифметическому выражению и оценивать его", в то время как [117716]y#x[117717] является арифметическим выражением, означающим "относиться к [117718]x[117719] как к базовому [117720]y[117721] числу и преобразовывать его в десятичное число". Так, например, [117722]2#10[117723] вычисляется в [117724]2[117725] (поскольку 10 означает 2 в базе 2), [117726]10#10[117727] вычисляется в [117728]10[117729] (так как преобразование числа 10 в десятичное ничего не делает) и [117730]3#4[117731] выдает ошибку (так как "4" не является юридическим символом в базе 3). Более подробная информация доступна в разделе [117732]ARITHMETIC EVALUATION[117733] в [117734]man bash[117735].Вот более подробная разбивка:
Команда [117692]sed[117693] ищет номера, следующие за [117694]Title:[117695] и [117696]Chapters:[117697] в выводе из [117698]lsdvd[117699]. Затем [117700]sed[117701] запоминает эти номера в [117702]\1[117703] и [117704]\2[117705] соответственно. [117706]sed[117707] выводит строку вида [117708]ячеек[$((10#\1))]=$((10#\2))[117709], заменяя обратный слеш на заголовок и номера глав.