Я знаю, что modprobe может быть использован для загрузки модулей, но как он решает
какие модули загружать?
Когда ядру нужна возможность, которая не является резидентной в ядре, демон модуля ядра [119441]kmod1[119444] выполняет [119445]modprobe[119446] для загрузки модуля. [119447]modprobe[119448] передаёт строку в одной из двух форм.
Имя модуля типа softdog или ppp.Более общий идентификатор типа char-major-10-30
Итак, позвольте мне объяснить, что я нашёл в своей системе, а не вставлять из ссылки.
cat /proc/modules[119454] - Эта команда перечисляет, какие модули загружены и список довольно большой.
Теперь, во время запуска системы, как я уже упоминал, демон [119455]kmod[119456] выполняет [119457]modprobe[119458] для загрузки модулей. Как уже было сказано, мы могли указать модуль для загрузки любым из 2 способов. Если мы указали общий идентификатор, то он будет искать эту запись в [119459]/etc/modprobe.conf[119460] для псевдонима. Итак, в моей [119461]/etc/modprobe.conf[119462], у меня есть псевдоним, как показано ниже. Итак, я выполнил команду ниже, чтобы проверить, что такое tg3 в моей системе.
kill -s SIGHUP [pid]
Далее, [119463]modprobe[119464] просматривает файл [119465]/lib/modules/version/modules.dep[119466], чтобы посмотреть, должны ли быть загружены другие модули до того, как запрошенный модуль может быть загружен. Этот файл создан [119467]depmod -a[119468] и содержит зависимости от модуля.
Наконец, [119469]modprobe[119470] использует [119471]insmod[119472], чтобы сначала загрузить все необходимые модули в ядро, а затем в запрошенный модуль. [119473]modprobe[119474] направляет [119475]insmod[119476] в [119477]/lib/modules/version/
, стандартную директорию для модулей. [119479]insmod[119480] предназначен для того, чтобы быть достаточно тупым о расположении модулей, в то время как [119481]modprobe[119482] знает о расположении модулей по умолчанию, знает, как вычислить зависимости и загрузить модули в правильном порядке.
Но как определяется новое аппаратное обеспечение?
Эти кольца создаются процессором, а не операционной системой. Любое ядро операционной системы работает в Ring 0, который является наиболее привилегированным уровнем и может напрямую взаимодействовать с аппаратным обеспечением и процессором. Кольца 1 и 2 обычно используются для драйверов устройств. А кольцо 3 используется для приложений пользовательского пространства (медиаплееры, веб-серверы и все остальное, с чем пользователь может взаимодействовать напрямую). Драйверы устройств являются "мостом" между приложениями пользовательского пространства и аппаратным обеспечением.
Ядро Linux постоянно сканирует всю компьютерную шину на предмет изменений и нового аппаратного обеспечения. Как только обнаруживаются изменения на любой шине, начинается "волшебство".
Волшебство
ЭКСПОРТНОЕ ЖЕСТКОЕ ОБЕСПЕЧЕНИЕ ПОЛЬЗОВАТЕЛЯ (SYSFS)*НЕОБХОДИМЫЕ ИНФОРМАЦИИ ПОЛЬЗОВАТЕЛЯ, ЧТО ЖЕСТКОЕ ОБЕСПЕЧЕНИЕ ДОСТУПЛЕННО (УВЕДОМЛЕНИЕ И УДЕВД) Да, ваше предположение верно. Удев имеет какое-то отношение к магии :)*УВЕНЬТЫ ПРОЦЕССА, СООТВЕТСТВУЮЩИЕ ПРАВИЛАМЫ СОГЛАШЕНИЯ В /ETC/UDEV/RULES.D/ AND ДИРЕКТОРИЯ НАСЕЛЕНИЯ / ДИРЕКТОР ОБРАЗОВАНИЯ (УДЕВД И УДЕВД)ДИРЕКТОР ОБРАЗОВАНИЯ УДЕВИДА (УДЕВД, МОДПРОБЛЕЙ)
NOTIFY USERSPACE APPLICATIONS (THROUGH D-BUS)
$ ls -l
drwx------- 1 root root [...] root_only
Udevd - всего лишь демон, стоящий между ядром и всем УДЕВДОМ. и выполнять некоторые важные функции (о них я расскажу позже). Демон udev (udevd) запускается при запуске, затем читает и разбирает все правила, найденные в /etc/udev/rules.d/, и хранить их в память (база данных udev) для дальнейшего использования udev. Позже udevd начнет прослушать сетевую ссылку на события из ядра драйвера ядра.
$ ls -l root_only
-rw-rw-rw-- 2 root root [...] hopefully_private_file
Ссылки
http://www.tldp.org/LDP/lkmpg/2.6/html/x44.html
$ ls -l root_only
-rw-rw-rw-- 2 root root [...] hopefully_private_file
^
|
http://blogas.sysadmin.lt/?p=141
Это можно сделать с помощью правил включения / исключения. Что-то вроде (непроверено):
rsync -a --include=*/foo/*** --exclude=* user@remote:/usr/ /foo-1.2.3/usr
***
введен в rsync 2.6.7
. Без него вам понадобится одно включение для каталога ( foo /
), а другое - для содержимого ( foo / **
). Обратите внимание, что когда вы используете подобное включение, вам необходимо иметь подходящее широкое исключение в качестве последнего правила, поскольку все включается по умолчанию, а файлы включаются / исключаются в соответствии с первым совпадением в списке правил (добавление - -exclude = *
сначала ничего не копирует).