Как работают драйверы Linux и где их найти? (особенно драйвер NIC)


11

Мне интересно, как работает драйвер под Linux. Являются ли драйверы одним файлом, который можно редактировать? Есть ли список используемых драйверов или есть разные места для их поиска для каждого устройства?

Мне особенно интересно узнать о драйвере моего сетевого адаптера.

Если вы знаете, где находится хорошая документация, я бы с удовольствием ее прочитал.

Ответы:


6

Драйверы очень похожи на любую другую программу, они могут состоять из нескольких исходных файлов. Драйверы устройств Linux могут быть непосредственно скомпилированы в ядро ​​или модуль ядра. Преимущество модулей ядра заключается в возможности их динамической загрузки (т. Е. Для их использования не требуется компилировать новое ядро).

Очевидно, что вы всегда можете взглянуть на исходный код Linux, но на первый взгляд это может оказаться сложной задачей. Тем не менее, как и все, что в Linux, драйверы являются файлами. Это означает, что другие программы получают к ним доступ через интерфейс VFS. Например, вы можете управлять CDROM через ioctl()вызовы, используя его файл устройства.

Я настоятельно рекомендую проверить драйверы устройств Linux . Он находится в свободном доступе и ответит на ваши вопросы. В частности, вы можете прочитать главу 2, в которой показано, как создать простой модуль «Hello, Kernel». Это может быть гораздо больше, чем вы просите, но вы можете прочитать интересующие вас кусочки. И это бесплатно. ;П


3

Драйверы Linux построены с ядром, скомпилированы в или как модуль. В качестве альтернативы, драйверы могут быть построены против заголовков ядра в дереве исходных текстов. Вы можете увидеть список установленных модулей ядра, набравlsmod и, если установлено, взглянуть на большинство устройств, подключенных через шину с помощью lspci.

Если текущая версия ядра не поддерживает драйверы для вашей сетевой карты, вам нужно найти драйверы у поставщика и вам необходимо скомпилировать модуль ядра из исходного кода (по заголовкам вашего ядра).


1

В большинстве случаев, если что-то вроде вашей сетевой карты не появляется автоматически, вам нужно перейти на сайт производителя оборудования и посмотреть, есть ли у него версия для Linux.

В более общем плане драйверы Linux, как правило, принимают форму библиотек или модулей.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.