Co to jest DKM w Linux

Co to jest DKM w Linux
Obsługa modułu DKMS lub dynamicznego jądra to system, który umożliwia aktualizację modułów jądra dyskretnego bez potrzeby modyfikacji całego jądra. Jest to bezpłatne oprogramowanie w ramach GPL V2 i napisane przez Dell's Linux Engineering Team. DKMS został początkowo opracowany dla Dell Computer Corporation w celu rozpowszechniania łatek oprogramowania dla swoich klientów w dobrze zdefiniowany sposób.

DKMS ma wiele korzyści dla społeczności dostawcy usług Linux, E.G.:

  1. Z punktu widzenia dewelopera kierowcy pomaga w dodawaniu sterowników, których nie ma jeszcze w jądrze podstawowym. Również programiści sterowników, którzy są zobowiązani do udostępnienia zaktualizowanych sterowników urządzeń do testowania i powszechnego użytku w wielu różnych jądrach, również korzystają. Kolejną zaletą DKM jest to, że programiści mogą testować kod sterownika na różnych maszynach. W rzeczywistości przyspiesza proces rozwoju kierowcy.
  2. Z punktu widzenia administratora systemu DKMS upraszcza proces instalowania aktualizacji sterownika urządzenia do aktywnego jądra bez dodawania do niego żadnych zmian. Stąd nie muszą czekać na przybycie nowego jądra.
  3. Wybrane poprawki lub łatki można wprowadzić pomiędzy aktualizacją dużych rozmiarów.
  4. Nowy sprzęt, który wymaga modyfikacji w jednym module, można łatwo zintegrować. Ponownie można to osiągnąć bez całkowitego testowania nowych jądra.

Co obejmiemy?

W tym przewodniku omówi różne terminologie związane z jądrem, a konkretnie DKMS.

Szybki przegląd terminologii

Jakie jest jądro Linux?

Jest to podstawowa część systemu systemu systemu linii. Jest to główny interfejs między procesami działającymi na systemie operacyjnym a jego sprzętem. Zarządza głównymi funkcjami, takimi jak zarządzanie pamięcią, zarządzanie procesami, zarządzanie procesorem, zarządzanie sterownikami urządzeń oraz połączenia systemowe i zarządzanie bezpieczeństwem.

Przestrzeń jądra
Jądro jest faktycznie ukryte przed użytkownikiem i działa na swoim obszarze o nazwie Kernel Space. Użytkownik wchodzi w interakcje z jądrem za pomocą aplikacji użytkownika, takich jak przeglądarka plików, przeglądarka internetowa itp. Te interakcje wykorzystują określoną konstrukcję programowania o nazwie System Call.

Drzewo źródła jądra
Ma cały kod źródłowy dla sterowników jądra i urządzeń. Składa się z wielu katalogów i podkatalogów, takich jak Arch, blok, krypto, w tym init, lib, usr itp.

Moduły jądra Linux
Moduły jądra Linux to w zasadzie fragmenty kodu. Można je dodać i usuwać z jądra zgodnie z wymogiem. Mogą być wbudowane lub załadowane. Moduł jądra zwiększa funkcje jądra bez konieczności ponownego uruchomienia systemu. W przeciwieństwie do Micokernels, gdzie dodanie nowych komponentów do jądra wymaga konfiguracji i budowy nowego jądra, możemy ładować i rozładowywać komponenty lub moduły systemu operacyjnego w czasie wykonywania. Te moduły to sterowniki urządzeń, systemy plików itp.

Po załadowaniu modułu jest to jak kawałek kodu jądra. Ma takie same przywileje i obowiązki jak normalny kod jądra.

Definicja DKMS

Oto fragment definicji DKMS, którą znalazłem tutaj:

„DKMS to struktura, w której źródło sterownika urządzenia może znajdować się poza drzewem źródłowym jądra, dzięki czemu bardzo łatwo jest odbudować moduły podczas aktualizacji ziaren."

Opracujmy powyższe. System DKMS jest drzewem z podstawowego drzewa jądra na ziemi. Zawiera źródło modułu i skompilowane binaria modułu. W wyniku tej replikacji moduły nie są sprzężone z jądrem. (Chociaż moduły nie są całkowicie oddzielone).

Po raz pierwszy spotkałem koncepcję DKMS, kiedy kupiłem laptopa HP i zainstalowałem Ubuntu 18.04 na nim. Wszystko działało dobrze, z wyjątkiem mojego Wi -Fi. Mój laptop nie był w stanie zlokalizować żadnego adaptera Wi -Fi. W ustawieniach menu Wi -Fi wyświetliło wiadomość „Nie znaleziono adaptera Wi -Fi". Zacząłem szukać forów w Internecie i odkryłem, że wiele osób doświadczyło tego samego problemu. Znalazłem wiele rozwiązań sugerujących instalację plików nagłówka, sterowników i innych pakietów.

Po prostu ślepo śledziłem tych przewodników, nie wiedząc, co tak naprawdę chcieli przekazać. W każdym razie ci przewodnicy mi pomogli i jakoś dostałem WIFI. Ale problem polegał na tym, że za każdym razem, gdy aktualizowałem mój system Ubuntu, powstał ten sam problem i musiałem powtórzyć te same kroki polegające na ponownej kompilacji pobranych sterowników. Muszę też naprawić problem z niskim sygnałem za każdym razem po zainstalowaniu sterownika. Nawet zainstalowałem system systemu Windows i, ku mojemu zaskoczeniu, Wi -Fi faktycznie działało bezbłędnie. Ale i tak muszę użyć Ubuntu do mojej pracy. Postanowiłem więc żyć z tymczasową łatką, którą dostałem wcześniej.

DKM przychodzi na ratunek

Niedawne rozwiązanie, na którym właśnie się natknąłem. Zamiast używać robić Lub Zrób instalację Polecenie, DKM wykonuje trzy operacje w kodzie źródłowym: Dodaj, zbuduj i zainstaluj.

Za pomocą DKMS

Aby DKM działał, źródło modułu powinno być obecne w systemie, w którym budujemy moduł, a ścieżka lokalizacji powinna być jak '/usr/src/-/' I pamiętaj, że jest to pierwszy wymóg DKMS. Innym wymogiem jest plik o nazwie „DKMS.conf ', który poprowadzi sposób budowy i instalacji modułu. I po prostu wspomnieć, DKMS powinien być już zainstalowany w systemie. Gdy wszystko zostanie na miejscu, możemy dodać moduł do drzewa DKMS.

Zobaczmy te kroki, instalując moduł demo „Demo-v0.1.smoła.GZ ' Z DKMS. Robimy tę próbkę, służy tylko do zrozumienia, jak działa DKMS. Po wyodrębnianiu pliku musimy 'płyta CD' w środku tego:

# CD Demo-V0.1/

Teraz utwórz DKMS.conf Plik zawierający następujące wiersze:

Make = "make -c src/kerneldir =/lib/module/$ kernelver/build"
Clean = "Make -c $ kernel_source_dir m = $ dkms_tree/$ package_name/$ pakiet_version/build czysty"
Budowany_module_name = ”demo”
Budowany_module_location = ”SRC”
PACKT_NAME = DEMO
PACKT_VERSION = 0.1
Remake_initrd = ”tak”
AutoInstall = Tak

Teraz nasz DKMS.conf Plik jest gotowy, możemy dodać nasz moduł demo jako:

# DKMS Dodaj -m demo -v 0.1

Piękno DKMS polega na tym, że możemy określić wersję jądra, na podstawie której chcemy zbudować lub moduł, jak pokazano tutaj:

# DKMS Build -m Demo -v 0.1 -K 5.13.0-27

Jeśli nie określimy jądra, DKMS zbuduje moduł z bieżącą wersją jądra.

Jeśli wszystko pójdzie dobrze, możemy teraz zainstalować moduł za pomocą:

# DKMS instaluj -m demo -v 0.1

Jeśli uaktualnimy nasze jądro lub zmienimy architekturę sprzętu, moduł musi zostać ponownie odbudowany ręcznie. Za pomocą DKMS procedura ta staje się zbędna, ponieważ DKM dynamicznie buduje te moduły jądra dla każdego jądra obecnego w systemie.

Wniosek

Narzędzia takie jak DKMS bardzo pomogły administratorom, programistom kierowcy i in. Podczas gdy użytkownicy końcowi nie dbają o to, jak działają system podstawowy, dopóki ich cele nie zostaną osiągnięte, DKMS pozwala programistom i administratorom skupić się na pracy.