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?
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
.
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.