Come compilare un driver di dispositivo Linux

March 1

Come compilare un driver di dispositivo Linux


I driver di periferica carichi Linux kernel ed è il cuore del sistema operativo in tutte le versioni di Linux. I driver di periferica vengono caricati automaticamente per l'hardware supportato nella maggior parte APT- e le distribuzioni basate su RPM. Se l'hardware non viene caricato automaticamente e il produttore fornisce un driver di periferica, è possibile installarlo manualmente. I moduli compilati possono essere caricati e aggiunti alla configurazione del kernel immediatamente. Il codice sorgente deve essere prima compilato utilizzando gli header del kernel o il codice sorgente completo.

istruzione

La compilazione di un modulo

1 Scarica il codice sorgente per il modulo del kernel.

2 Digitare il seguente comando in una finestra di terminale per installare gli header del kernel:

distribuzioni basate su RPM: su -c 'yum install kernel-devel'

distribuzioni basate su APT: sudo apt-get install linux-headers - $ (uname -r)

Utilizzare il comando corretto per la versione di Linux. Assicurarsi di digitare i comandi esattamente come mostrato, tra virgolette singole.

3 Digitare il seguente comando per modificare la directory del codice sorgente:

cd / home / myuser / modulecode

Change "/ home / myuser / modulecode" per la posizione del codice sorgente del modulo.

4 Digitare il seguente comando per creare un "makefile:"

VI Makefile

Si apre l'editor di testo vi e crea il makefile. Il "fare" comando utilizza il makefile per compilare il modulo.

5 Inserire le seguenti sei righe di codice nell'editor di testo:

obj-m = mymodule.o

KVERSION = $ (shell uname -r)

tutti:

make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules

pulito:

make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean

Sostituire "mymodule" con il nome del modulo che si sta compilando. Salvare il file e uscire VI.

6 Digitare il seguente comando per compilare il modulo:

rendere

7 Digitare i seguenti comandi per caricare e scaricare il modulo:

Carico: su -c 'mymodule.ko insmod'

Scaricare: su -c 'mymodule rmmod'

Sostituire "mymodule" con il nome del modulo viene caricato o scaricato.

Caricamento moduli automaticamente all'avvio

8 Digitare il seguente comando in una finestra di terminale:

su -c 'mkdir -p / lib / modules / $ (uname -r) / kernel / drivers / mymodule'

Sostituire "mymodule" con il nome del modulo. Questo comando crea una directory per memorizzare il modulo.

9 Digitare il seguente comando per copiare il modulo nella nuova directory:

su -c 'cp /modulepath/mymodule.ko / lib / modules / $ (uname -r) / kernel / drivers / mymodule /'

Sostituire "ModulePath" e "mymodule" con il percorso corretto e il modulo nome.

10 Digitare il seguente comando:

su -c 'vi / etc / modules'

Questo comando apre il file di configurazione del modulo a livello di sistema per l'editing.

11 Aggiungere quanto segue alla fine del file:

mymodule

Sostituire "mymodule" con il nome del modulo. Chiudere e salvare il file. Le modifiche entreranno in vigore la prossima volta che il sistema viene riavviato. Non sarà più necessario caricare e scaricare il modulo manualmente.