DKMS ha molti vantaggi per le comunità di fornitori di servizi Linux, E.G.:
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"Ora che il nostro dkms.conf Il file è pronto, possiamo aggiungere il nostro modulo demo come:
# dkms add -m demo -v 0.1La 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-27Se 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.1Se 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.