it-swarm-pt.tech

Como criar arquivos .ko no Linux

Eu escrevi um driver para um dispositivo no Linux. Como posso criar (usando gcc) um .ko arquivo para que eu possa inseri-lo no kernel?

9
Renjith G

Crie um Makefile como este.

ifneq ($(KERNELRELEASE),)
obj-m   := mymodule.o
else
KDIR    := /lib/modules/$(Shell uname -r)/build
PWD     := $(Shell pwd)
all:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
install:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules_install
%:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) [email protected]
endif

Supondo que a fonte do seu módulo esteja em mymodule.c, executando make criará mymodule.ko.

9
ephemient

Resposta curta: você não pode. Um arquivo .ko é mais do que apenas uma versão compilada de sua fonte de driver. O sistema de construção do kernel inclui algumas informações extras por exemplo (versão do compilador, dependências do módulo, ...).

Você provavelmente pode vasculhar o sistema de compilação do kernel para encontrar todas as operações necessárias, mas não deveria. É quase certo que será interrompido com o próximo lançamento do kernel, ou depois dele. Você deve usar o epemiente makefile fornecido.

2
Kristof Provost