Red de conocimiento informático - Conocimientos de programación - Error al compilar el módulo del kernel (linux)

Error al compilar el módulo del kernel (linux)

En estas versiones de gama alta de RedHat Linux, si necesita personalizar el kernel, no hay un código fuente directo rpm para instalar. Solo puede descargar el paquete tar.gz desde kernel.org e instalarlo manualmente, o compilar el kernel. a través de kernel-*.src.rpm: reinstale el paquete de código fuente. El último método puede disfrutar de la optimización de RedHat de algunos parámetros y código del kernel, por lo que es beneficioso para las personas que usan distribuciones de RedHat, especialmente la versión empresarial.

Sin embargo, muchas personas actualmente no pueden distinguir la relación entre el kernel, el desarrollo del kernel y algunos paquetes del código fuente del kernel, por lo que a menudo se desvían al compilar el kernel. Los funcionarios de RedHat no tienen información sobre si deben obtenerlo. kernel-source. Las instrucciones claras dejaron a mucha gente estancada.

En primer lugar, comprenda claramente el contenido y el propósito de cada paquete rpm.

núcleo-*. rpm: paquete binario del kernel sin el cual el sistema no arrancará.

Código fuente del kernel-*. rpm: paquete de código fuente del kernel, instalado en /usr/src/linux-*, contiene el código fuente del kernel. Es necesario compilar el kernel (por supuesto, no usando kernel.tar.gz), pero este rpm ya no está disponible en versiones posteriores de RedHat Linux. Ver oficial.

Desarrollo del kernel*. rpm: paquete de desarrollo del kernel, instalado en /usr/src/kernels, utilizado para el desarrollo del módulo del kernel. La forma de organización es similar al paquete de código fuente del kernel y contiene parte del código fuente del kernel. Tenga en cuenta que muchas personas piensan erróneamente que este es el paquete fuente del kernel y, por supuesto, es imposible usarlo para compilar el kernel directamente. Este paquete sólo se utiliza para el desarrollo de primer nivel de módulos del kernel, como controladores. Aunque menuconfig también se puede utilizar para producir dep, bzImage no se puede producir debido a la falta de código fuente central.

núcleo-*. src. rpm: el paquete de código fuente para compilar rpm proporcionado por Red Hat se instala en /usr/src/redhat. Todos los paquetes mencionados anteriormente se pueden compilar a partir de este paquete usando rpmbuild.

Ahora comience a compilar todos los paquetes anteriores desde src.rpm. Todos los paquetes, excepto el código fuente, se pueden compilar directamente sin modificar nada. Sólo el código fuente es más problemático, así que asegúrese de seguir los pasos a continuación. Tomo la versión que trae RedHat AS4 como ejemplo, otras versiones son iguales.

#Primero instale src.rpm

rpm -ivh kernel-2.6.9-5. Velocidad del motor

#Ingrese el directorio correspondiente para modificar el archivo de especificación.

cd /usr/src/redhat/SPECS

vi kernel-2.6.spec

#Los principales cambios son los siguientes:

1, Definir fuente de compilación 0: la línea 8 de la mía se cambia a 1, por lo que no hay ningún paquete de código fuente, porque no se genera de forma predeterminada.

2. Requisitos: Qt-devel, GTK 2-devel readline-devel ncurses-devel-mine en la línea 572. Si no usas

#Guardar y salir

Toque /etc/beehive-root

#Este comando no es necesario. Si no hace esto, el paquete compilado final se convertirá en kernel-*. *-root.rpm, hay una raíz adicional, que se dice que representa el compilador del paquete. Si tocas este archivo, no tendrás este problema. El nombre es el mismo que el rpm oficial.

rpmbuild -ba - target=i686. /kernel-2.6.spec

#Compile todos los paquetes para la plataforma i686, de modo que se generen los paquetes descritos anteriormente, o reemplácelos con rpmbuild-bb-target = I686. /kernel-2.6.spec solo compila archivos no src.rpm.

#Todos los paquetes se generarán en /usr/src/redhat/RPMS/i686.

#Si solo necesita el código fuente en lugar de todos los paquetes rpm, al modificar el archivo de especificaciones, debe modificar las siguientes líneas:

48% I arch no arch

49% define builddoc 1

50% define build source 0 - donde 0 se cambia a 1.

Al compilar, utilice rpmbuild-ba-target=noarch. /kernel-2.6.spec, solo compilar el código fuente y los paquetes de documentos ahorrará mucho tiempo.

Tenga en cuenta que todo el contenido de este artículo solo se aplica a la nueva versión de RedHat Linux que utiliza el kernel 2.6. La organización del código del kernel 2.4 es diferente, por lo que este artículo no se aplica.

El artículo anterior fue tomado de Internet. Olvidé la fuente, así que respeto al autor.