Co robi DKMS? Jak z tego korzystać?

23

Ostatnio widziałem kilka wzmianek o DKMS, ale nie jest jasne, co tak naprawdę robi w moim systemie.

Co właściwie robi DKMS i jak go używać?

użytkownik238204
źródło

Odpowiedzi:

25

Pakiet DKMS (Dynamic Kernel Module Support) ( http://linux.dell.com/dkms/ ) zapewnia obsługę instalowania dodatkowych wersji modułów jądra. Pakiet kompiluje się i instaluje w drzewie jądra. Odinstalowanie przywraca poprzednie moduły. Domyślnie instalacja odbywa się w bieżącym drzewie jądra, ale dowolne drzewo jądra można wybrać za pomocą opcji wiersza polecenia. Ponadto DKMS jest wywoływany automatycznie po instalacji nowych pakietów obrazu jądra Ubuntu, dlatego moduły dodane do DKMS będą automatycznie przenoszone między aktualizacjami.

Przegląd

Aby użyć modułu z DKMS, należy umieścić pliki instalacyjne modułu (może to być kod źródłowy lub binarny) w / usr / src / -, wraz z plikiem konfiguracyjnym dkms.conf, który informuje DKMS, jak zbudować / skonfigurować moduł i jakie są jego nazywa się W bardziej zaawansowanych scenariuszach instrukcje kompilacji warunkowej i łatania mogą być wykonywane przez system dkms, ale rozważenie twojego przypadku może nie być konieczne.

Walk-through

Powiedzmy, że chcesz zainstalować moduł dla swojego fantazyjnego „Awesome Adapter”. Dostałeś źródło tarball awesome-20091211-v1.1.tgz.

Dzięki DKMS informujemy DKMS, jak to zrobić, tworząc plik dkms.conf z odpowiednimi wpisami. Na przykład po rozpakowaniu archiwum:

# cd awesome-20091211-v1.1/
# touch dkms.conf 
# create dkms.conf file
# vi dkms.conf

Wewnątrz dkms.confmożemy dodać linie:

MAKE="make -C src/ KERNELDIR=/lib/modules/${kernelver}/build"
CLEAN="make -C src/ clean"
BUILT_MODULE_NAME=awesome
BUILT_MODULE_LOCATION=src/
PACKAGE_NAME=awesome
PACKAGE_VERSION=1.1
REMAKE_INITRD=yes

Wszystkie katalogi dotyczą lokalizacji pliku dkms.conf. To mówi DKMS

  1. Polecenie zbudowania modułu (uruchom polecenie make w katalogu src /).
  2. Polecenie czyszczenia drzewa źródłowego (uruchom make clean w katalogu src /).
  3. Nazwa modułu bez rozszerzenia .o lub .ko. Może to być tablica modułów, jeśli zbudowanych jest wiele modułów, patrz man dkms.
  4. Gdzie DKMS może znaleźć wbudowany moduł.
  5. Nazwa i wersja DKMS powinny być powiązane z modułami.
  6. Aby ponownie utworzyć obraz initrd po zainstalowaniu modułu.

Możesz także dodać opcje do wywoływania skryptów przed lub po kompilacji lub instalacji, zapewnienia dodatkowych (warunkowych) poleceń make, poleceń łatek itp. Plik dkms.conf jest w rzeczywistości pozyskiwany ze skryptu powłoki, więc można zrobić sporo sztuczek Jeśli to konieczne. Te i wiele innych opcji opisano w sekcji dkms.conf w man dkms.

Następnie instalujemy moduł w DKMS, kopiując pliki instalacyjne modułu do drzewa źródeł jądra / usr / src / - i informujemy DKMS o nowym module:

# ls
    README dkms.conf lib src
# sudo cp -R . /usr/src/awesome-1.1
# sudo dkms add -m awesome -v 1.1
    dkms does its thing...

To jest to! DKMS dodał teraz nasz moduł do swojej listy modułów, które mają być budowane do przyszłych instalacji jądra. Aby upewnić się, że działa i zainstalować moduł w naszym obecnym jądrze, możemy poinstruować dkms, aby zbudował i zainstalował moduł:

# sudo dkms build -m awesome -v 1.1
    dkms does its thing.... watch for build errors... you may need to tweak dkms.conf
# sudo dkms install -m awesome -v 1.1
    dkms does its thing.... module is copied into current kernel module tree

Przy odrobinie szczęścia moduł zostanie zainstalowany i ponownie zainstalowany w przyszłych aktualizacjach jądra.

Przykłady

Strona podręcznika DKMS zawiera przydatne informacje na temat konfigurowania ulubionego modułu jądra do użytku z DKMS. Nie jest to wyczerpująca dokumentacja, ale odpowie na wiele pytań. Pomoże ci to zanotować następujące przykłady, nawet jeśli używane moduły nie są tymi, które chcesz skonfigurować:

  • RocketRAID - Dwa przykłady, w jaki sposób, aby skonfigurować Punktem kulminacyjnym RocketRAID sterowniki RR26xx i RR62x z DKMS.

Od: help.ubuntu.com

Więcej informacji można znaleźć tutaj:

Rinzwind
źródło
2
FWIW, projekt DKMS ma nowy dom na Github github.com/dell/dkms
DDay