Cos'è DKMS in Linux

Cos'è DKMS in Linux
DKMS o il supporto del modulo del kernel dinamico è un sistema che consente ai moduli del kernel discreti di aggiornare senza la necessità di modificare l'intero kernel. È un software gratuito sotto GPL V2 e scritto dal team di ingegneria Linux di Dell. DKMS è stato inizialmente sviluppato per Dell Computer Corporation per distribuire patch software ai propri clienti in modo ben definito.

DKMS ha molti vantaggi per le comunità di fornitori di servizi Linux, E.G.:

  1. Dal punto di vista dello sviluppatore del conducente, aiuta ad aggiungere driver che non sono già nel kernel di base. Inoltre, gli sviluppatori di driver che sono tenuti a rendere disponibili driver di dispositivi aggiornati per i test e l'uso comune su una grande varietà di kernel benefici. Un altro vantaggio di DKMS è che gli sviluppatori possono testare l'esecuzione del codice del proprio driver su macchine diverse. In effetti, questo accelera il processo di sviluppo del conducente.
  2. Dal punto di vista dell'amministratore di sistema, DKMS semplifica il processo di installazione degli aggiornamenti del driver del dispositivo al kernel attivo senza aggiungere alcuna modifica ad esso. Quindi non hanno bisogno di aspettare l'arrivo di un nuovo kernel.
  3. Le correzioni o le patch di bug selezionate possono essere lanciate tra gli aggiornamenti di grandi dimensioni.
  4. Il nuovo hardware che richiede la modifica in un singolo modulo può essere facilmente integrata. Ancora una volta questo può essere ottenuto senza testare interamente i nuovi kernel.

Cosa copriremo?

Questa guida discuterà varie terminologie relative al kernel e in particolare ciò che è DKMS.

Una rapida revisione delle terminologie

Cos'è il kernel Linux?

È la parte principale di un sistema operativo Linux. È l'interfaccia principale tra i processi in esecuzione sul sistema operativo e il suo hardware. Gestisce le principali funzioni come la gestione della memoria, la gestione dei processi, la gestione della CPU, la gestione dei driver dei dispositivi e le chiamate di sistema e la gestione della sicurezza.

Spazio del kernel
Il kernel è effettivamente nascosto dall'utente e funziona nella propria area chiamata kernel Space. L'utente interagisce con il kernel utilizzando le applicazioni utente come browser di file, browser Web, ecc. Queste interazioni utilizzano un costrutto di programmazione specifico chiamato chiamata di sistema.

Albero di sorgente del kernel
Ha tutto il codice sorgente per i driver del kernel e del dispositivo. È costituito da molte directory e sottodirectory come Arch, Block, Crypto, Include, Init, Lib, USR, ECT.

Moduli del kernel Linux
I moduli del kernel Linux sono fondamentalmente pezzi di codice. Questi possono essere aggiunti e rimossi dal kernel secondo i requisiti. Possono essere integrati o carichi. Il modulo del kernel aumenta le funzioni del kernel senza richiedere un riavvio del sistema. A differenza dei microkernel, in cui l'aggiunta di nuovi componenti nel kernel richiede la configurazione e la costruzione di un nuovo kernel, possiamo caricare e scaricare componenti o moduli del sistema operativo in fase di esecuzione. Questi moduli sono driver di dispositivi, file system, ecc.

Dopo aver caricato un modulo, è proprio come un pezzo di codice kernel. Ha gli stessi privilegi e doveri di un normale codice del kernel.

Definizione DKMS

Ecco un estratto della definizione DKMS che ho trovato qui:

“DKMS è un framework in cui la fonte del driver del dispositivo può risiedere al di fuori dell'albero della sorgente del kernel in modo che sia molto facile ricostruire i moduli mentre si aggiornano i kernel."

Elaborare su quanto sopra. Il sistema DKMS è un albero fuori dall'albero del kernel di base sul terreno. Contiene la sorgente del modulo e i binari del modulo compilato. Come risultato di questa replica, i moduli non sono accoppiati al kernel. (Sebbene i moduli non siano completamente disaccoppiati).

Io stesso ho incontrato per la prima volta il concetto DKMS quando ho comprato un laptop HP e installato Ubuntu 18.04 su di esso. Tutto funzionava bene tranne il mio wifi. Il mio laptop non è stato in grado di individuare alcun adattatore wifi. Nelle impostazioni, il menu WiFi ha visualizzato un messaggio "Nessun adattatore wifi trovato". Ho iniziato a cercare forum su Internet e ho scoperto che molte persone stavano vivendo lo stesso problema. Ho trovato molte soluzioni che suggeriscono l'installazione di file di intestazione, driver e altri pacchetti.

Ho appena seguito ciecamente quelle guide senza sapere davvero cosa volevano trasmettere. Comunque, quelle guide mi hanno aiutato e ho lavorato in qualche modo wifi. Ma il problema era che ogni volta che ho aggiornato il mio sistema Ubuntu, si è verificato lo stesso problema e ho dovuto ripetere gli stessi passaggi per ricompilare i driver scaricati. Inoltre, devo risolvere il problema del segnale basso ogni volta dopo aver installato il driver. Ho persino installato il sistema operativo Windows e, con mia sorpresa, il WiFi stava effettivamente lavorando in modo impeccabile. Ma devo comunque usare Ubuntu per il mio lavoro. Così ho deciso di vivere con la patch temporanea che ho avuto prima.

DKMS viene in soccorso

Una soluzione recente che mi sono appena imbattuto in cui non mi importava in passato ha usato il DKMS Way. Invece di usare il Fare O Installa l'installazione Comando, DKMS esegue tre operazioni sul codice sorgente: Aggiungi, build e installa.

Usando DKMS

Affinché DKMS funzioni, la fonte del modulo dovrebbe essere presente sul sistema in cui stiamo costruendo il modulo e il percorso di posizione dovrebbe essere come '/usr/src/-/' E ricorda che questo è il primo requisito di DKMS. Un altro requisito è un file chiamato 'dkms.conf ', che guiderà come costruire e installare un modulo. E solo per menzionare, i DKM dovrebbero essere già installati sul sistema. Una volta che tutto è a posto, possiamo aggiungere un modulo all'albero DKMS.

Vediamo questi passaggi installando un modulo demo 'Demo-V0.1.catrame.gz ' con DKMS. Stiamo facendo questo campione è solo allo scopo di capire come funziona DKMS. Dopo aver estratto il file, dobbiamo farlo 'CD' dentro:

# cd demo-v0.1/

Ora crea un dkms.conf File che contiene le seguenti righe:

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
Pacchetto_version = 0.1
Remake_initrd = "Sì"
Autoinstall = sì

Ora che il nostro dkms.conf Il file è pronto, possiamo aggiungere il nostro modulo demo come:

# dkms add -m demo -v 0.1

La bellezza del DKMS è che possiamo specificare la versione del kernel rispetto alla quale vogliamo costruire o modulo come mostrato qui:

# dkms build -m demo -v 0.1 -k 5.13.0-27

Se non specifichiamo il kernel, DKMS costruirà il modulo con la versione del kernel corrente.

Se tutto va bene, ora possiamo installare il modulo usando:

# dkms installa -m demo -v 0.1

Se aggiorniamo il nostro kernel o cambiamo l'architettura hardware, un modulo deve essere ricostruito manualmente di nuovo. Con l'aiuto di DKMS, questa procedura diventa ridondante poiché il DKMS costruisce dinamicamente questi moduli del kernel per ciascun kernel presente sul sistema.

Conclusione

Strumenti come DKMS hanno aiutato molto gli amministratori, gli sviluppatori di driver e altri riducono l'attività di gestione del kernel. Mentre gli utenti finali non si preoccupano di come il sistema sottostante funzioni fino a quando i loro obiettivi non vengono raggiunti, DKMS consente agli sviluppatori e agli amministratori di concentrarsi sul proprio lavoro.