Red de conocimiento informático - Material del sitio web - ¿Cómo instalar el código fuente correspondiente del kernel en Ubuntu para compilar el controlador?

¿Cómo instalar el código fuente correspondiente del kernel en Ubuntu para compilar el controlador?

¿Cómo instalar fuentes del kernel para compilar controladores en Ubuntu?

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

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?