Estoy interesado en compilar un nuevo núcleo en Ubuntu 12.04 x86 64 bit.
Encontré esta página wiki que es básicamente un espejo para este blog y hay muchos pasos ( git , etc.) que me parecen inútiles.
Con versiones / distribuciones anteriores, solía crear un .config
archivo y modificarlo Makefile
si era necesario, luego solo lo ejecutaba make
y listo.
¿Hay una manera simple de hacer esto en Ubuntu?
Respuestas:
1. Use
apt-get source
para descargar la versión de Ubuntu del kernelda una carpeta que contiene, por ejemplo:
La diferencia en negrita incluye todas las personalizaciones de Ubuntu / Debian.
2. Para construir un kernel de stock con el suyo
.config
, use elmake-kpkg
método Debian "anticuado"Esta es la forma alternativa antigua que se describe en la wiki:
Si está compilando un núcleo por primera vez:
Luego,
cd
en el directorio de origen (aquí,linux-3.2.0
), y ejecutemake oldconfig
para crear un.config
archivo con la configuración de su núcleo en ejecución, o copie una tercera parte.config
en este directorio.Dependiendo de si desea una configuración de texto o gráfica, instale:
(Texto)
(Gráfico)
Y luego corre:
(Texto)
(Gráfico)
Cuando termine, simplemente ejecute:
dónde
N
es cuántos trabajos ejecutar en paralelo (generalmente la cantidad de CPU que tiene) ymy-very-own-kernel
es una cadena personalizada para identificar esta compilación.Cuando termine, la imagen del núcleo y los archivos de encabezado estarán listos como debs en el directorio principal; puede instalarlos con
sudo dpkg -i
, que también se encargará de agregar entradas GRUB, etc.fuente
linux-3.2.0
directorio y ejecutarpatch -p1 <../patch.diff
?apt-get source ...
ya lo hice por ti!fakeroot debian/rules editconfigs
,fakeroot debian/rules clean
,fakeroot debian/rules binary
Es la forma correcta, sin problemas.Aquí están los pasos. Este procedimiento se basa en nixCraft Es Cómo: Compilar kernel de Linux 2.6 --pero modernizado considerablemente.
Descargue y extraiga el código fuente del kernel que desea construir.
Puede obtener el código fuente del kernel ascendente en kernel.org . Aquí se utilizará la versión 3.16.1 (el último kernel estable a partir de este escrito). Por lo tanto, es posible que deba modificar estos comandos si está utilizando una versión diferente.
El código fuente del núcleo se proporciona actualmente en. alquitrán . xz archives, así que haga clic en el enlace "tar.xz" según la versión que desee:
Después de
cd
acceder al directorio donde descargó el archivo, puede extraerlo contar
:Instale las herramientas de compilación necesarias y realice la configuración del kernel.
Para llegar de Ubuntu cadena de herramientas (
gcc
,make
, etc.) instalar la build-essential metapaquete:Dos maneras bastante fáciles de usar para configurar lo que sucede en su núcleo son proporcionados por los
make
objetivosxconfig
ymenuconfig
.xconfig
ejecuta una utilidad de configuración gráfica, mientrasmenuconfig
está basada en texto (es decir, su interfaz aparece completamente dentro de su terminal). Cada uno requiere algún software adicional no proporcionado por build-essential .Para configurar gráficamente , instale libqt4-dev y pkg-config y ejecute
make xconfig
:Para configurar en el terminal , instale
libncurses5-dev
(gracias a Hannu por esta información) y ejecutemake menuconfig
:Construye el kernel configurado.
Primero ejecute esto para compilar el núcleo y crear
vmlinuz
:vmlinuz
es "el núcleo". Específicamente, es la imagen del kernel la que GRUB o cualquier otro cargador de arranque que utilices descomprimirá y cargará en la memoria .Luego construya los módulos del núcleo cargables :
Instale su kernel recién construido.
Suponiendo que esos
make
comandos se completaron con éxito, es hora de instalar el nuevo núcleo. Primero instale los módulos:Luego instale el núcleo en sí:
Eso coloca
vmlinuz-3.16.1
(una copia devmlinuz
),config-3.16.1
(un archivo de texto que almacena los parámetros de configuración del núcleo) ySystem.map-3.16.1
(la tabla de búsqueda de símbolos del núcleo ) en/boot
. Para más detalles, vea esta publicación comp.os.linux.misc de Hadron yman installkernel
.Configuración final, para que el núcleo se pueda iniciar y arrancar el sistema:
Esta sección se basa en parte en la información en Kernel / Compile .
Con el núcleo ahora donde debe estar, necesita:
una entrada en la configuración del gestor de arranque , para que pueda seleccionar e iniciar desde allí.
un sistema de archivos RAM inicial , el entorno desde el cual el núcleo carga los controladores y monta el
/
sistema de archivos .(Si está instalando un kernel antiguo o ha configurado su kernel para usar devfs en lugar del udev más nuevo , es posible que necesite o desee configurar un ramdisk inicial . Si sabe que lo necesita, vea
man initrd
).Genera tus initramfs con
mkinitramfs
:Cuando actualice la configuración del gestor de arranque GRUB2, que ha sido el predeterminado en Ubuntu desde la 9.10, debería detectar automáticamente el nuevo núcleo y agregar una opción para iniciarlo.
Prueba tu núcleo.
Ahora puede reiniciar para probar su nuevo núcleo. Es posible que deba mantener presionada Shifto presionar Escdurante el inicio para ver el menú de inicio de GRUB donde puede seleccionar entre los diferentes núcleos que están instalados.
Para hacer que su kernel (u otro) sea el predeterminado, consulte ¿Cómo cambio el orden de arranque de GRUB?
fuente
make menuconfig
requiereapt get install libncurses5-dev
Las instrucciones rápidas para construir un kernel de Ubuntu (en lugar de vanilla) se pueden encontrar aquí: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel .
No copiaré toda la wiki, pero enumeraré los pasos mínimos para compilar la versión del kernel de Ubuntu que tienes instalada actualmente. (Para obtener la versión más reciente, clone el repositorio de kernel git de la próxima versión de Ubuntu). Probado en Ubuntu 16.04.
fuente