Hva er DKMS i Linux

Hva er DKMS i Linux
DKMS eller Dynamic Kernel Module Support er et system som lar diskrete kjernemoduler oppdatere uten behov for å endre hele kjernen. Det er gratis programvare under GPL V2 og skrevet av Dells Linux Engineering Team. DKMS ble opprinnelig utviklet for Dell Computer Corporation for å distribuere programvareoppdateringer til kundene sine på en veldefinert måte.

DKMS har mange fordeler for Linux -tjenesteleverandørens samfunn, e.g.:

  1. Fra sjåførutviklerens synspunkt hjelper den med å legge til sjåfører som ikke allerede er i basekjernen. Driverutviklerne som er pålagt å gjøre tilgjengelige oppdaterte enhetsdrivere for testing og vanlig bruk på et stort utvalg av kjerner, har også fordel. En annen fordel med DKMS er at utviklerne kan teste kjøre sin førerkode på forskjellige maskiner. Dette fremskynder faktisk driverutviklingsprosessen.
  2. Fra et systemadministrator synspunkt forenkler DKMS prosessen med å installere enhetsdriveroppdateringer til den aktive kjernen uten å legge til noen endringer i den. Derfor trenger de ikke å vente på ankomsten av en ny kjerne.
  3. Utvalgte feilrettinger eller lapper kan rulles ut mellom store oppdateringer i stor størrelse.
  4. Ny maskinvare som krever modifisering i en enkelt modul kan enkelt integreres. Igjen kan dette oppnås uten å teste de nye kjernene helt.

Hva vil vi dekke?

Denne guiden vil diskutere forskjellige kjernerelaterte terminologier og spesifikt hva som er DKMS.

En rask gjennomgang av terminologier

Hva er Linux -kjernen?

Det er kjernedelen av et Linux OS. Det er hovedgrensesnittet mellom prosessene som kjører på OS og dets maskinvare. Den administrerer hovedfunksjoner som minnestyring, prosessstyring, CPU -styring, enhetsdriverstyring og systemanrop og sikkerhetsstyring.

Kjerneplass
Kjernen er faktisk skjult for brukeren og jobber i sitt eget område som heter Kernel Space. Brukeren samhandler med kjernen ved å bruke brukerapplikasjonene som filer nettleser, nettleser osv. Disse interaksjonene bruker en spesifikk programmeringskonstruksjon som heter System Call.

Kernel kilde tre
Den har alle kildekoden for kjerne- og enhetsdrivere. Den består av mange kataloger og underkataloger som Arch, Block, Crypto, inkluderer, init, lib, usr, etc.

Linux -kjernemoduler
Linux Kernel -moduler er i utgangspunktet biter av kode. Disse kan legges til og fjernes fra kjernen i henhold til krav. De kan være innebygd eller lastbare. Kjernemodulen øker funksjonene til kjernen uten å kreve en system omstart. I motsetning til mikrokerneller, der å legge til nye komponenter i kjernen krever å konfigurere og bygge en ny kjerne, kan vi laste og losse komponenter eller moduler av OS ved kjøretid. Disse modulene er enhetsdrivere, filsystemer osv.

Etter at en modul er lastet, er det akkurat som et stykke kjernekode. Den har de samme privilegiene og pliktene som en normal kjernekode.

Definisjon av DKMS

Her er et utdrag av DKMS -definisjonen jeg fant her:

“DKMS er et rammeverk der enhetsdriverkilde kan ligge utenfor kjernetreet, slik at det er veldig enkelt å gjenoppbygge moduler når du oppgraderer kjerner.”

La oss utdype ovennevnte. DKMS -systemet er et tre ut av basekjernetreet på bakken. Den inneholder modulkilden og kompilerte modulbinarier. Som et resultat av denne replikasjonen er ikke moduler koblet til kjernen. (Selv om moduler ikke er helt koblet fra).

Selv møtte jeg først DKMS -konseptet da jeg kjøpte en HP -bærbar PC og installerte Ubuntu 18.04 på det. Alt fungerte bra bortsett fra wifi min. Den bærbare datamaskinen min klarte ikke å finne noen wifi -adapter. I innstillingene viste WiFi -menyen en melding "Ingen wifi -adapter funnet”. Jeg begynte å søke på forum på internett og oppdaget at mange mennesker opplevde det samme problemet. Jeg fant mange løsninger som antydet å installere overskriftsfiler, drivere og andre pakker.

Jeg fulgte bare blindt på guidene uten å vite hva de faktisk ønsket å formidle. Uansett, disse guidene hjalp meg ut, og jeg fikk WiFi på en eller annen måte. Men problemet var at hver gang jeg oppdaterte Ubuntu -systemet mitt, oppsto det samme problemet, og jeg måtte gjenta de samme trinnene med å kompilere de nedlastede driverne. Jeg må også fikse det lave signalproblemet hver gang etter å ha installert sjåføren. Jeg installerte til og med Windows OS, og til min overraskelse fungerte WiFi faktisk feilfritt. Men jeg må bruke Ubuntu til arbeidet mitt uansett. Så jeg bestemte meg for å leve med den midlertidige lappen jeg fikk tidligere.

DKMS kommer til unnsetning

En nylig løsning som jeg nettopp kom over som jeg ikke brydde meg om tidligere, brukte DKMS -måten. I stedet for å bruke gjøre eller lage installasjon Kommando utfører DKMS tre operasjoner på kildekoden: Legg til, bygg og installer.

Bruke DKMS

For at DKMer skal fungere, bør modulkilden være til stede på systemet der vi bygger modulen, og stedsveien skal være som '/usr/src/-/' Og husk at dette er det aller første kravet til DKMS. Et annet krav er en fil som heter 'DKMS.Conf ', som vil guide hvordan du bygger og installerer en modul. Og bare for å nevne, bør DKMer allerede installeres på systemet. Når alt er på plass, kan vi legge til en modul til DKMS -treet.

La oss se disse trinnene ved å installere en demomodul 'Demo-V0.1.tjære.gz ' med DKMS. Vi gjør denne prøven er bare for å forstå hvordan DKM -er fungerer. Etter å ha trukket ut filen, må vi 'CD' inni det:

# CD Demo-V0.1/

Nå opprette en DKMS.konf Fil som inneholder følgende linjer:

Make = "make -c src/kerneldir =/lib/modules/$ Kernelver/build"
Clean = "Make -C $ Kernel_Source_Dir m = $ dkms_tree/$ package_name/$ package_version/build clean"
Build_module_name = ”Demo”
Build_module_location = ”src”
Package_name = demo
Package_version = 0.1
Remake_initrd = ”ja”
AutoInstall = ja

Nå som vår DKMS.konf Filen er klar, vi kan legge til vår demomodul som:

# dkms add -m demo -v 0.1

Det fine med DKM -ene er at vi kan spesifisere kjerneversjonen som vi ønsker å bygge eller modul som vist her:

# dkms build -m demo -v 0.1 -K 5.1. 3.0-27

Hvis vi ikke spesifiserer kjernen, vil DKMer bygge modulen med den nåværende kjerneversjonen.

Hvis alt går bra, kan vi nå installere modulen ved å bruke:

# dkms install -m demo -v 0.1

Hvis vi oppgraderer kjernen vår eller endrer maskinvarearkitekturen, må en modul gjenoppbygges igjen. Ved hjelp av DKM -er blir denne prosedyren overflødig når DKM -ene dynamisk bygger disse kjernemodulene for hver kjerne som er til stede på systemet.

Konklusjon

Verktøy som DKM har hjulpet administratorer, sjåførutviklere og andre reduserer kjernehåndteringsoppgaven i stor grad. Mens sluttbrukerne ikke bryr seg om hvordan det underliggende systemet fungerer til målene deres er oppfylt, lar DKMS utviklere og administratorer fokusere på arbeidet sitt.