Как init определяет который устройства к modprobe?

Как @slm уже записал, интерфейс TUN является обратной петлей программного обеспечения, которая эмулирует сетевой интерфейс то же как интерфейс TAP. На практике интерфейс TUN является эмуляцией интерфейса уровня 3. Таким образом, это - устройство эмуляции сетевого уровня, которое может туннелировать пакеты данных варьировавшейся природы, быть ею необработанный TCP, UDP, SCTP или инкапсулированные пакеты, такие как PPP, PPTP, AH/IPSEC, безотносительно. С другой стороны, интерфейс TAP является эмуляцией интерфейса уровня 2, который является этим, устройство эмуляции канала передачи данных, которое может работать необработанным Ethernet, arcnet, кольцом с маркерным доступом, и т.д.

Это имеет различные практические последствия. Например, при разработке брандмауэра, если бы Вы хотите создать внутреннюю сеть NATed с адресами non-routable, Вы использовали бы интерфейсы БОЧКИ для создания моста фильтрации. Если у Вас есть ряд общедоступных IP-адресов, которые можно присвоить внутренним узлам, но все еще хотеть к брандмауэру весь трафик, Вы использовали бы интерфейсы TAP для эмуляции моста Ethernet, на котором можно отфильтровать пакеты данных. Это, btw, является основанием того, что называют "прозрачным брандмауэром".

5
29.04.2014, 04:38
1 ответ
Я знаю, что 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

7
27.01.2020, 20:37

Теги

Похожие вопросы