it-swarm-es.tech

Cómo crear archivos .ko en Linux

He escrito un controlador para un dispositivo en Linux. ¿Cómo puedo crear (usando gcc) un .ko archivo para que pueda insertarlo en el kernel?

9
Renjith G

Crea un 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

Suponiendo que la fuente de su módulo está en mymodule.c, ejecutar make creará mymodule.ko.

9
ephemient

Respuesta corta: no puedes. Un archivo .ko es más que una versión compilada de la fuente de su controlador. El sistema de compilación del kernel incluye información adicional, por ejemplo (versión del compilador, dependencias del módulo, ...).

Probablemente pueda examinar el sistema de compilación del kernel para encontrar todas las operaciones necesarias, pero no debería hacerlo. Es casi seguro que se romperá con la próxima versión del kernel, o con la siguiente. Debería utilizar el archivo MAKE ephemient proporcionado.

2
Kristof Provost