Jak działają sterowniki Linuksa i gdzie je znajdę? (zwłaszcza sterownik karty sieciowej)

11

Zastanawiam się, jak sterownik działa w systemie Linux. Czy sterowniki to pojedynczy plik, który można edytować? Czy istnieje lista aktualnie używanych sterowników lub istnieje inne miejsce, w którym można je znaleźć dla każdego urządzenia?

Jestem szczególnie zainteresowany poznaniem sterownika mojej karty sieciowej.

Jeśli wiesz, gdzie jest dobra dokumentacja, chciałbym ją również przeczytać.

Usagi
źródło

Odpowiedzi:

6

Sterowniki są bardzo podobne do każdego innego programu, mogą się składać z wielu plików źródłowych. Sterowniki urządzeń Linux mogą być bezpośrednio wkompilowane w jądro lub moduł jądra. Zalety modułów jądra polegają na tym, że można je ładować dynamicznie (tzn. Nie trzeba kompilować nowego jądra, aby z nich korzystać).

Oczywiście zawsze możesz spojrzeć na kod źródłowy Linuksa, ale na początku może to być trudne zadanie. Jednak, podobnie jak w przypadku innych elementów w systemie Linux, sterowniki to pliki. Oznacza to, że inne programy uzyskują do nich dostęp za pośrednictwem interfejsu VFS. Na przykład możesz kontrolować CDROM za ioctl()pomocą połączeń za pomocą pliku urządzenia.

Gorąco polecam sprawdzenie sterowników urządzeń Linux . Jest dostępny bezpłatnie i odpowie na twoje pytania. W szczególności możesz przeczytać rozdział 2, który pokazuje, jak utworzyć prosty moduł „Hello, Kernel”. To może być znacznie więcej, niż chcesz, ale możesz przeczytać fragmenty, które Cię interesują. I to za darmo. ; P

Pan Shickadance
źródło
3

Sterowniki systemu Linux są budowane z jądrem, kompilowane w lub jako moduł. Alternatywnie, sterowniki mogą być budowane na podstawie nagłówków jądra w drzewie źródłowym. Możesz zobaczyć listę aktualnie zainstalowanych modułów jądra, pisząc lsmodi, jeśli są zainstalowane, spójrz na większość urządzeń podłączonych przez magistralę za pomocą lspci.

Jeśli bieżąca wersja jądra nie obsługuje sterowników dla twojej karty sieciowej, musisz znaleźć sterowniki u dostawcy i musisz skompilować moduł jądra ze źródła (na podstawie nagłówków twojego jądra).

Sean C.
źródło
1

Przez większość czasu, jeśli coś takiego jak twoja karta sieciowa nie wyświetla się automatycznie, musisz przejść do strony producenta sprzętu i sprawdzić, czy mają wersję linux.

Mówiąc bardziej ogólnie, sterowniki linuksa mają zwykle postać bibliotek lub modułów.

rfelsburg
źródło