¿Cómo instalar el código fuente correspondiente del kernel en Ubuntu para compilar el controlador?
He estado estudiando el módulo de controlador en la plataforma ARM recientemente, porque la conferencia del profesor fue un poco superficial y quería estudiarla en profundidad.
Así que instalé ubuntu en la máquina virtual y planeé usarlo para seguir estudiando.
La versión actual es
# uname -a
Linux ubuntu-ldm 4.4.0-28-generic #47-Ubuntu SMP Vie 24 Jun 10: 09:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Instalé los siguientes paquetes
# dpkg -l | -setup-linux 1.108ubuntu15 toda la parte específica de Linux de la configuración de la consola
ii libselinux1:amd64 2.4-3build2 biblioteca compartida de tiempo de ejecución amd64 SELinux
ii linux-base 4.0ubuntu1 toda la imagen de Linux Básico paquete
ii linux- firmware 1.157.2 todo el firmware para los controladores del kernel de Linux
ii linux-generic 4.4.0.28.30 amd64 Kernel y encabezados genéricos completos de Linux
ii linux-headers-4.4.0-28 4.4.0-28.47 todos los archivos de encabezado relacionados con la versión 4.4.0 del kernel de Linux
ii linux-headers-4.4.0-28-generic 4.4.0 - 28.47 encabezados del kernel de Linux amd64 para la versión 4.4.0 en SMP x86 de 64 bits
ii linux-headers-generic 4.4.0.28.30 encabezados del kernel de Linux genéricos amd64
ii linux-image -4.4.0-28-generic 4.4.0-28.47 amd644.0-28.47 Imagen del kernel de Linux amd64 para la versión 4.4.0 en SMP x86 de 64 bits
ii linux-image-extra-4.4 .0-28- generic 4.4.0-28.30 encabezado del kernel de Linux genérico amd64
ii linux-image-extra-4.4.0-28- generic 4.4.0-28.47 kernel de Linux amd64 Módulos adicionales para versión 4.4.0 en SMP x86 de 64 bits
ii linux-image-generic 4.4.0.28.30 imagen genérica del kernel de Linux amd64
ii linux-libc-dev: amd64 4.4. 0-28.47 amd64 Archivos de encabezado del kernel de Linux para desarrollo
ii linux-sound-base 1.0.25 dfsg- 0ubuntu5 Todos los paquetes de software básicos para sistemas de sonido ALSA y OSS
p>ii linux -source 4.4.0.28.30 Todo el código fuente del kernel de Linux, incluidos los parches de Ubuntu
ii linux-source-4.4.0 4.4.0-28.47 Todo Linux
Código fuente del kernel, versión 4.4.
ii util-linux 2.27.1-6ubuntu3.1 amd64 utilidades diversas del sistema
Y /usr/src/linux-source-4.4. .tar.bz2 a /home/test/WorkSpace/Kernel/linux-source-4.4.0
y luego escriba un pequeño programa de prueba.
#include lt;linux/init.hgt;
#include lt;linux/module.hgt;
MODULE_LICENSE("Doble BSD/GPL") ;
static int hola _init (void) {
printk (KERN_ALERT "Hola mundo\n");
return 0;
}
static void hello_exit (void) {
printk (KERN_ ALERT "Adiós, mundo cruel\n");
}
módulo_init (hola_init);
módulo_exit (hola_salida);
Makefile
obj-m = módulo.o
módulo -objs := hola.o
todos:
crear módulos M=`pwd` -C /home/test/WorkSpace/Kernel/linux-source-4.4.0 p>
clean:
limpiar módulos M=`pwd` -C /home/test/WorkSpace/Kernel/linux-source-4.4.0
Lo que me desconcierta es
# sudo insmod module.ko
insmod: ERROR: no se pudo insertar el módulo module.ko: Formato de módulo no válido
No entiendo por qué No puedo cargar este módulo del kernel.
¿Es porque estoy usando una versión incorrecta del código fuente?
¿Tengo que usar mi propia uImage compilada para iniciar el sistema?
¿Cómo compilar y reemplazar manualmente el kernel de Ubuntu?