Hvordan å kompilere et Linux enhetsdriver

Hvordan å kompilere et Linux enhetsdriver


Driverne Linux kernel laster enhets og er kjernen i operativsystemet i alle Linux-versjoner. Enhetsdrivere er lastet automatisk for støttet maskinvare i de fleste APT- og RPM-baserte distribusjoner. Hvis maskinvaren ikke er lastet automatisk og produsenten gir en enhetsdriver, kan du installere det manuelt. Kompilerte moduler kan legges inn og lagt til kjernen konfigurasjons umiddelbart. Kildekoden må først bli utarbeidet etter kjerne overskrifter eller full kildekode.

Bruksanvisning

Kompilere en modul

1 Last ned kildekoden til kjernen modulen.

2 Skriv inn følgende kommando i et terminalvindu for å installere kjerne overskrifter:

RPM baserte distribusjoner: su -c 'yum install kernel-devel'

APT baserte distribusjoner: sudo apt-get install linux-overskrifter - $ (uname -r)

Bruk riktig kommando for din versjon av Linux. Pass på at du skriver kommandoene nøyaktig som vist, inkludert enkle anførselstegn.

3 Skriv inn følgende kommando for å gå til katalogen av kildekoden:

cd / home / gammelbruker / modulecode

Change "/ home / gammelbruker / modulecode" til plasseringen av modulen kildekoden.

4 Skriv inn følgende kommando for å opprette en "Makefile:"

VI Makefile

Dette åpner vi teksteditor og skaper Makefile. Den "make" kommandoen bruker Makefile å kompilere modulen.

5 Skriv inn følgende seks linjer med kode i teksteditor:

obj-m = mymodule.o

KVERSION = $ (shell uname -r)

alle:

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

rengjøre:

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

Erstatt "mymodule" med navnet på modulen du kompilere. Lagre filen og avslutt vi.

6 Skriv inn følgende kommando for å kompilere modulen:

lage

7 Skriv inn følgende kommandoer å laste og losse modulen:

Load: su -c 'insmod mymodule.ko'

Losse: su -c 'rmmod mymodule'

Erstatt "mymodule" med navnet på modulen som lastes eller losses.

Laster moduler automatisk ved oppstart

8 Skriv inn følgende kommando i et terminalvindu:

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

Erstatt "mymodule" med navnet på modulen. Denne kommandoen oppretter en katalog for å lagre modulen.

9 Skriv inn følgende kommando for å kopiere modulen til den nye katalogen:

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

Erstatt "modulepath" og "mymodule" med riktig bane og modulnavn.

10 Skriv inn følgende kommando:

su -c 'vi / etc / modules'

Denne kommandoen åpner hele systemet modul konfigurasjonsfilen for redigering.

11 Legg til følgende til slutten av filen:

mymodule

Erstatt "mymodule" med navnet på modulen. Lukk og lagre filen. Endringene trer i kraft neste gang systemet starter på nytt. Det vil ikke lenger være nødvendig å laste og losse modulen manuelt.