Compilando el kernel GNU Linux-libre

El kernel predefinido que viene con Trisquel es un kernel genérico cuyo objetivo es ejecutar el máximo número de configuraciones de hardware. Cuando usted compila su propio kernel, puede optimizarlo para "su propio" hardware y deja fuera todos los controladores que no necesita. También es muy educativo echarle un vistazo a las entrañas de GNU Linux-libre.

Primero haga una carpeta dentro de su directorio home para compilar allí el kernel:

 mkdir ~/kernel_compiling/
Para saber qué kernel tiene el sistema, digite en un terminal
 uname -r
Adquiera el código fuente del nuevo kernel en http://www.fsfla.org/ikiwiki/selibre/linux-libre/ y guardelo en la carpeta recién creada kernel_compiling.

Instalamos los paquetes necesarios para realizar la tarea:

 sudo apt-get install kernel-package ncurses-dev bzip2 module-init-tools initramfs-tools procps fakeroot build-essential lzop unp bc
Si planea usar las herramientas de configuración gráfica, gconfig o xconfig, se necesitarán paquetes adicionales, respectivamente libgtk2.0-dev libglib2.0-dev libglade2-dev para gconfig o libqt3-mt-dev para xconfig. Podría haber también otras dependencias y si no están satisfechas será notificado una vez que intente invocar el configurador gráfico.

Vamos al directorio kernel_compiling, digitando en una terminal:

 cd ~/kernel_compiling
Ahora extraemos el archivo del nuevo kernel, v.g.
 unp linux-libre-3.18.8-gnu.tar.xz
Luego entramos a la carpeta del nuevo kernel:
 cd linux-3.18.8
Ahora usted podría aplicar cualquier parche que desee.

Entonces comenzamos la etapa de configuración. Esto requiere una gran cantidad de trabajo de su parte y tomará bastante tiempo. Hay muchas formas interesantes de seleccionar algunas de las opciones; usted podría querer leer el archivo README.

 less README
EL localmodconfig es bastante laborioso, y probablemente necesita agregar y quitar algunas cosas.

Tal vez se puede comenzar copiando el config del kernel que está usando actualmente.

 make oldconfig
Entonces seleccione una de las herramientas de configuración interactivas
 make config
(basado en texto, lineal)
 make menuconfig
(basado en texto, interface ncurses)
 make gconfig
(gráfico basado en GTK) (GTK=gnome toolkit)
 make xconfig
(gráfico basado en QT) (QT=toolkit used in KDE)

Pienso que menuconfig es probablmente el más rápido, gconfig es el más bonito y xconfig tiene de lejos la mejor función de búsqueda.

  • Y significa integrado al kernel y (teóricamente) siempre activo
  • M significa compilado como un módulo y activado si se requiere
  • N significa no incluido de ninguna manera

Es posible obtener información acerca de su procesador con

 cat /proc/cpuinfo
To get info about the rest of your hardware, run
 lspci
and
 lsusb
Comience cambiando las cosas obvias, aquellas sobre las que tiene 300% de certeza. Habra de repetir este proceso muchas veces y llegará a conocer cosas que eparecen muy esotéricas. Si es su primera vez, ¡no se sobrecargue demasiado! Una vez que haya terminado, guarde los cambios y salga.

Limpie el entorno para compilar el kernel

 make-kpkg clean
Puede obtener el número actual de CPUs por medio del comando
 grep -c '^processor' /proc/cpuinfo
Si tiene un computador con varios procesadores, querrá lograr que todos los procesadores funciones, haciendo p. ej.
 export CONCURRENCY_LEVEL=2
La documentación sugiere usar "un entero (pequeño)".

Llevar a cabo la compilación como tal, tomará aproximadamente entre 10 minutos y 5 horas, dependiendo de su hardware y de sus elecciones de configuración (entre más haya configurado, más tiempo tardará). presencia no es necesaria. Necesita incluir las cabeceras del kernel (kernel_headers) si desea compilar más tarde algunos módulos más para su kernel.

 make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers
Recibirá todo tipo de parloteo, mensajes de advertencia y avisos: es bastante normal. Solamente los mensajes de error son serios, así como si el proceso se detiene. Si recibe un error acerca de zlib.h faltante, necesitará instalar el paquete zlib1g-dev. Si recibe otro error, probablemente necesitará instalar un paquete relacionado -dev.

Una vez ha terminado sin errores, vaya a la carpeta de más bajo nivel donde acabamos de crear los archivos .deb

 cd ..
Si no eligió soporte del kernel para el tipo gzip de compresión initrd necesitará editar el parámetro COMPRESS del archivo initramfs.conf para que se corresponda con su selección. Gzip se usará para comprimir el initrd a menos que usted especifique algo distinto en initramfs.conf. Si su kernel no soporta la compresión usada para hacer el initrd, obtendrá un mensaje kernel panic cuando reinicie (indicado por hang + más el parpadeo de la luz de mayúsculas sostenidas).
 sudo nano /etc/initramfs-tools/initramfs.conf
Instale los paquetes .deb
 sudo dpkg -i *.deb
Ahora llega el momento de la verdad, ¡la prueba de fuego!. Ahora es una buena idea tener a la mano un CD o una memoria USB para hacer una sesión en vivo. Reinicie y mantenga oprimida la tecla shift para mostrar el menú del grub y seleccione el nuevo kernel en la lista que se presenta.

Si arranca el sistema, genial, todo salió bien, ¡felicitaciones!

Lista de verificación

  • Red (Wireless and Ethernet)
  • Audio
  • USB Sticks
  • Contorladores de CD-DVD
  • Cualquier periférico raro

Si no, reinicie y seleccione otro kernel del menú. De nuevo al tablero de dibujo...

Si quiere pulir más el kernel, regrese a la carpeta donde extrajo los archivos fuente. Si todo funcionó sin contratiempos, haga una copia de respaldo de su archivo .config. Si llegara a fallar espectacularmente, puede que usted quiera cargar un archivo .config que funcione y comenzar trabajando de nuevo desde él.

Entonces realice las configuraciones que sean del caso, limpie el entorno, recompile... y ¡repita hasta que lo logre! :)

Sugerencias y consejos:

  • Dele un vistazo al comanto time para cronometrar su compilación de modo que pueda saber cuanto demora.
  • Puede que usted desee disfrutar su compulación, de modo que puede usar su computador mientras compila.
  • Intente parchear su kernel con algo como por ejemplo, http://tuxonice.net/
  • Y usé xxdiff para comparar diferentes archivos .config.
  • Hay muy buena informacióni disponible en http://kernelnewbies.org/FAQ

Si tiene preguntar o comentarios, por favor abra un nuevo hilo en los foros.

Revisiones

11/27/2019 - 23:17
alejandro_blue