Як працюють драйвери Linux і де їх знайти? (особливо драйвер NIC)


11

Мені цікаво, як працює драйвер під Linux. Чи є у драйверів один файл, який можна редагувати? Чи є список поточних драйверів, які використовуються, чи є їх місце для кожного пристрою?

Мені особливо цікаво дізнатися про драйвер мережевого адаптера.

Якщо ви знаєте, де є якась хороша документація, я також хотів би прочитати це.

Відповіді:


6

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

Ви, очевидно, завжди можете шукати вихідний код Linux, але це може бути важким завданням спочатку. Однак, як і у будь-якого драйвера Linux, це файли. Це означає, що інші програми отримують доступ до них через інтерфейс VFS. Наприклад, ви можете керувати CDROM за допомогою ioctl()дзвінків, використовуючи його файл пристрою.

Я настійно рекомендую перевірити драйвери пристроїв Linux . Він доступний у вільному доступі і відповість на ваші запитання. Зокрема, ви можете прочитати розділ 2, де показано, як створити простий модуль "Привіт, ядро". Це може бути набагато більше, ніж ви просите, але ви можете прочитати шматочки та фрагменти, які вас цікавлять. І це безкоштовно. ; P


3

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

Якщо в поточній версії ядра немає підтримки для драйверів для вашого NIC, вам потрібно буде знайти драйверів у постачальника, і вам потрібно буде скласти модуль ядра з джерела (проти заголовків вашого ядра).


1

У більшості випадків, якщо щось на зразок вашого NIC не відображається автоматично, вам потрібно перейти на сайт виробника обладнання та подивитися, чи є у них версія Linux.

Більш загально кажучи, драйвери Linux мають тенденцію приймати форму бібліотек або модулів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.