compilacion kernel 2.6.xx
Horst von Brand
vonbrand en inf.utfsm.cl
Mar Feb 15 00:31:19 CLST 2005
"Muad'Dib" <muaddib en interaccess.cl> dijo:
> Hace muuuuuuucho tiempo que no compilo un kernel, pero te adjunto un
> "howto" propio que generé en esos tiempos.
>
> Está basado en Kernel 2.4, pero imagino que las cosas no han cambiado
> tanto, espero te sirva.
Han cambiado un buen resto...
> Compilación y actualización de nuevos Kernel y patches ....
>
> a) Bajar Kernel y patches que se desean actualizar, en este caso:
> ( Se pueden bajar de la dirección: http://kernel.org/ )
> linux-2.4.17.tar.gz
> patch-2.4.18-pre2
> patch-2.4.18-pre3
No. Los patch-2.4.18-xyz son siempre directamente contra 2.4.17 (el
inmediatamente previo).
> b) Cambiar nombre al patch para dejarlo con extensión de comprimido
> mv patch-2.4.18-pre2{,gz}
> mv patch-2.4.18-pre3{,gz}
Si no estan comprimidos, no sacas nada con esto. Si estan comprimidos,
vienen con el nombre correcto... y bzip2(1) es mucho mejor comprimiendo.
Pero alla tu.
Y tambien esta scripts/patch_kernel...
> c) Descomprimir el Kernel y el patch
> tar zxvf linux-2.4.17.tar.gz
v es para marearse por el listado de archivos extraidos...
> gunzip patch-2.4.18-pre2.gz
> gunzip patch-2.4.18-pre3.gz
Bajas no comprimidos, cambias de nombre para hacerlos comprimidos,
descomprimes...
> d) Actualizar los patch en el kernel "pre2"
> patch -p0 < patch-2.4.18-pre2
En el directorio raiz del nucleo desempaquetado:
zcat /donde/sea/esta/patch-2.4.18-pre2.gz | patch -p1
(o bzcat(1) segun sea). Ver patch(1).
> e) Desactualizar los patch "pre2" en el kernel y actualizar "pre3"
> patch -R -p0 < patch-2.4.18-pre2
> patch -p0 < patch-2.4.18-pre3
patch(1)
> f) Cambiar el nombre del directorio que se crea de "linux" a
> "linux-2.4.18" ( linux-{version} ) y moverlo a /usr/src
> mv linux linux-2.4.18
> mv linux-2.4.18 /usr/src
Mejor desempaquetar directamente alli... y no estar cambiando nombres, usar
-p1. patch(1).
> g) Opcionalmente, generar un nuevo link simbólico de linux a el
> directorio que se acaba de mover. Si ya existe un directorio
> o link llamado "linux", debe borrarse primero.
> ln -s linux-2.4.18 linux
ln -sf (ln(1))
> h) Copiar archivo con la configuración para usarlo de base.
> cp /usr/src/linux-2.2.16/configs/kernel-2.2.16-i686.config .
Eso suponiendo p.ej. Red Hat (que deja sus configuraciones en el fuente del
nucleo de la distro alli). No es universal.
> i) Abrir configuración del kernel y hacer "load" del archivo de
> configuración copiado. A partir de él hacer las modificaciones
> deseadas y/o necesarias.
> make xconfig
make menuconfig # Curses
make xconfig # X11
Si ya tienes una configuracion previa:
make oldconfig
solo consulta por las opciones que son nuevas.
> j) Seguir con los otros pasos de la compilación e instalación.
> (Verificar que cada paso termine sin errores, antes de ejecutar
> el siguiente).
> make dep
> make clean (Si ya se ha instalado anteriormente)
> make bzImage
> make modules
> make modules_install
En 2.6 el dep no es necesario (no existe, creo), y clean es (casi)
superfluo. Para compilar en nucleo &c, "make all".
> Nota: si se está seguro, se pueden colocar todas en una sola
> orden: make dep clean bzImage modules modules_install
Urgh.
make modules_install install
en FC3 al menos corre un script que genera el initrd y demas automaticamente.
> k) Copiar kernel compilado y comprimido a su ubicación.
> cp arch/i386/boot/bzImage /boot/kernel-2.4.18{-pre3}.bz
>
> l) Generación del RAMdisk para el booteo
> mkinitrd /boot/initrd-2.4.18{-pre3}.img 2.4.18{-}{pre3} (/lib/modules/2.4.)
Innecesario.
> m) Modificar /etc/lilo.conf, agregando nuevo punto de booteo.
> image = /boot/kernel-2.4.18{-pre3}.bz
> label = linux-2.4.18{-p3}
> root = /dev/hda
Idem. Por lo demas, grub(8) es mucho mas funcional...
> p) Para eliminar la versión de Kernel "2.4.18-pre2" que ya no se ocupará,
> se deben borrar los siguientes archivos
> rm /boot/kernel-2.4.18-pre2.bz
> rm /boot/initrd-2.4.18-pre2.img
> rm -R /lib/modules/2.4.18pre2
De donde sacas esto?! La lista real (tambien 2.6) es:
/boot/{vmlinuz,System.map}-2.4.18-pre2
/boot/initrd-2.4.18-pre2.img
/lib/modules/2.4.18-pre2
Y posiblemente algun *.old que quede por alli.
Y generalmente copio .config a /boot/config-2.4.18-pre2, asi que...
No olvidar eliminar de la configuracion del bootloader.
> Notas:
> En caso de querer disponer de varias configuraciones experimentales
> a partir de un módulo de Kernel, pudiendo "bootear" de ellas de
> manera independiente, se debe modificar el archivo "Makefile" que se
> encuentra en el dorectorio desde donde se compila el Kernel, agregando
> a la variable "EXTRAVERSION =" el nombre deseado,
Cuidado, no es "variable", es una macro.
> Ej. EXTRAVERSION = db1
Cuidado, EXTRAVERSION contiene lo que va despues de 2.4.18. Se puede dar un
nombre especial al configurar 2.6 ("General setup" --> "Local version").
--
Dr. Horst H. von Brand User #22616 counter.li.org
Departamento de Informatica Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria +56 32 654239
Casilla 110-V, Valparaiso, Chile Fax: +56 32 797513
Más información sobre la lista de distribución Linux