Hay dos formas principales de compilar y depurar el controlador
1. Instale linux-devel, linux-headers, descargue el código fuente en el firmware de centos para compilar
2. Use directamente el código fuente del kernel de Linux para una nueva compilación.
1. Método 1
1.1 Instale las dependencias del kernel y del archivo de cabecera
sistema CentOS
|
sistema ubuntu
|
1.2 Descarga el código fuente del kernel
uname -r Ver información de la versión del kernel
/cat /etc/*lease Ver información del sistema de archivos
Ampliar el código fuente
Sistema Centos: Índice de /
Linux SRC: https://vault.centos.org/7.8.2003/os/Source/SPackages/kernel-3.10.0-1127.el7.src.rpm descarga
1.3 Construyendo el código fuente
Cree la estructura de directorio básica requerida para compilar rpm como un usuario normal
|
Instale los paquetes necesarios para compilar el kernel
|
Instalar la fuente del kernel
|
Configuración de compilación del kernel
|
Copie la configuración del núcleo actual en el directorio del código fuente,
Reutilice directamente la configuración del kernel actual (evite volver a compilar todo el kernel y el problema de la verificación de la versión del kernel que causa errores de carga de nuevos módulos).
|
1.4 Prueba de verificación
|
hola/hola.c
Ampliar el código fuente
hola/Makefile
|
|
cargar quitar módulo
|
1.5 Compilar el módulo
|
Enlace de referencia: CentOS7 compila su propio módulo kernel - libro breve
2. Método 2
2.1 Descarga el código fuente del kernel
|
2.2 Preparar el entorno de compilación
|
2.3 Compilar
|
2.4 Establecer el kernel habilitado por defecto
awk -F\' '$1=="menuentry " {print i++ " : " $2}' $(find /boot -name grub.cfg)
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
0 : CentOS Linux (4.4.241.test.x86_64+) 7 (Core)
1 : CentOS Linux (3.10.0-1160.25.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (4.4.241-1.el7.elrepo.x86_64) 7 (Core)
3 : CentOS Linux (3.10.0-1127.19.1.el7.x86_64) 7 (Core)
4 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
5 : CentOS Linux (0-rescue-f6b59b458a184fd3a3bc8bed678e1a52) 7 (Core)
grub2-set-default 1
grub2-editenv list
cat /etc/default/grub
|
三,配置内核启动项
GRUB配置: GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt"
awk -F\' '$1=="menuentry " {print i++ " : " $2}' $(find /boot -name grub.cfg)
0 : CentOS Linux (4.4.241-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1127.19.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-f6b59b458a184fd3a3bc8bed678e1a52) 7 (Core)
grub2-set-default 1
grub2-editenv list
cat /etc/default/grub
" http://vault.centos.org"去下载内核源码。https://vault.centos.org/7.8.2003/正在上传…重新上传取消
下载地址:Index of /7.8.2003/updates/Source/SPackages
找到当前内核版本
内核源码安装参考: CentOS安装相应版本的内核源码 - AlexAlex - 博客园
模块编译参考: CentOS7编译自己的内核模块 - 简书
yum install kernel-headers kernel-devel
内核编译:
cd /root/rpmbuild/BUILD/kernel-3.10.0-1160.25.1.el7/linux-3.10.0-1160.25.1.el7.x86_64
$ make M=modules/hello
$ sudo cp modules/hello/hello.ko /lib/modules/`uname -r`/extra
$ cd /lib/modules/`uname -r`/extra
$ sudo insmod hello.ko
$ sudo rmmod hello
$ tail -f /var/log/messages
参考链接
CentOS7编译内核 详细步骤_飙风的蜗牛博客-CSDN博客_centos 内核编译
其它参考链接
[1] SystemTap en CentOS, https://sourceware.org/systemtap/wiki/SystemTapOnCentOS
[2] Necesito el código fuente del kernel, https://wiki.centos.org/zh/HowTos/I_need_the_Kernel_Source
[3] Necesito Crear un kernel personalizado, https://wiki.centos.org/zh/HowTos/Custom_Kernel
[4] Crear sus propios módulos de kernel, https://wiki.centos.org/zh/HowTos/BuildingKernelModules
[5] Building Fuente RPM como no root en CentOS, http://www.owlriver.com/tips/non-root/