Una de las mayores ventajas de utilizar una distribución para «usuarios avanzados» como es el caso de Gentoo, Arch, Slackware y Debian, son las opciones de flexibilidad. Donde flexibilidad significa las infinitas posibilidades para modificar el sistema creando un sistema único y acorde a necesidades especificas. En este rubro Gentoo Linux tiene una participación destacada ya que el mismo ofrece opciones interesantes para desarrolladores que solo son posibles a través de la compilación de paquetes y el kernel Linux no es la excepción.
Desde hace varios años Gentoo ofrece la posibilidad de utilizar diferentes versiones del kernel Linux para nuestro sistema operativo y aunque los desarrolladores de Gentoo separan los kernel disponibles en dos grandes grupos (soportados y no soportados) experimentar es gratis ;-).
¿Cuales versiones de kernel existen?
Cuando el kernel comun de Gentoo (gentoo-sources) no es suficiente o se necesitan más opciones, es bastante común optar por versiones experimentales. Para ver todas las versiones disponibles basta con hacer un emerge –search sources y obtener el listado completo, entre estas puedo destacar:
- vanilla-sources (codigo fuente integro publicado en kernel.org)
- ck-sources (una variante de vanilla-sources con los parches de Con Kolivas)
- tuxonice-sources (una variante de gentoo-sources con soporte para los parches tuxonice)
- pf-sources (una variante del kernel vanila-sources, incluyendo los parches ck, ukms, bfq y tuxonice)
- hardened-sources (una variante de gentoo-sources como parte del proyecto Gentoo Hardened)
¿Porque geek-sources es especial?
Uno de los problemas de elegir entre una u otra implementación es que los subconjuntos de características son mutuamente excluyentes entre kernels. Por ejemplo (como fue mi caso) al elegir pf-sources se gana el escalonador BFQ (nuevo rockstar del desempeño), pero se pierden los parches específicos del proyecto Gentoo, o si se opta por tuxonice-sources se gana la hibernación mejorada pero se pierden los parches de alto desempeño presentes en pf. Es aqui donde geek-sources llega al rescate.
geek-sources es un proyecto creado por el equipo del overlay init6 cuyo objetivo es tener lo mejor de todos los kernels en una sola instalación. Dicho de otra forma es un kernel diseñado para crear hibridos entre las versiones tradicionales de kernels presentes en Gentoo acorde a nuestras necesidades.
¿Como instalo geek-sources?
El primer paso es instalar el soporte para init 6 con layman:
1 | layman -a init6 |
Luego verificamos las use flags que tiene disponibles, con emerge (buscar con eix y/o gentoolkit tambien es opción)
1 | emerge --pretend --verbose geek-sources |
Al momento de este articulo, geek sources contiene las siguientes flags:
1 | [ebuild R ] sys-kernel/geek-sources-3.10.17:3.10::init6 USE="-brand -gentoo -pf -reiser4 -aufs -bfq -bld -build -cjktty -ck -deblob -fedora -grsec -ice -lqx -mageia -optimization -pax -rsbac -rt -suse -symlink -uksm -zen -zfs" 0 kB |
Como se puede observar en la información del emerge, geek-sources soporta varias use flags donde cada use flag habilita variantes de kernel (pf,ck,fedora,lqx,mageia,gentoo) o características individuales (reiser4,brand,bfq,build,deblob). Así pues el kernel resultante dependerá de cuales use flags queramos activar. La descripción completa se encuentra en el repositorio de Github del proyecto, del cual copio el diagrama de módulos:
Como se observa en la gráfica variantes como pf, ck o gentoo funcionan como conjuntos de otros parches que a su vez pueden ser activados de forma individual y la elección dependerá de nosotros. Vale la pena resaltar que si por ejemplo se activa la variante pf y el parche tuxonice (incluido en pf) el ebuild se encargara automáticamente de aplicar los parches por prioridad que puede ser sobreescrita con la variable GEEKSOURCES_PATCHING_ORDER en el archivo /etc/portage/kernel.conf. El orden predeterminado es el siguiente:
GEEKSOURCES_PATCHING_ORDER=»zfs optimization pax lqx pf zen bfq rifs ck cjktty gentoo grsec rsbac ice rh reiser4 exfat rt bld uksm aufs mageia fedora suse ubuntu xenomai brand fix upatch squeue»
Es asi que, para crear nuestro kernel, basta con activar las use flags ya sea globalmente o en el archivo package.use. Por ejemplo si se desea la variante pf, con los parches de Gentoo y el logo de larry the cow al inicio del proceso de arranque, se han de activar las flags gentoo, pf y brand usando package.use
1 | echo "sys-kernel/geek-sources pf gentoo brand" >> /etc/portage/package.use |
Luego se procede a instalar el código fuente con
1 | emerge sys-kernel/geek-sources |
Es aqui que el emerge preparara el código fuente y preparar un archivo .config si fuera posible, para que posteriormene el kernel sea compilado con los pasos habituales en Gentoo.
Y si todo sale bien, al reiniciar nuestro computador la salida debería ser similar a la siguiente :D:
Un motivo más para utilizar Gentoo Linux y sus hijos.
Mozilla/5.0 (X11; Linux i686; rv:52.9) Gecko/20100101 Goanna/3.4 Firefox/52.9 PaleMoon/27.9.3
¿Alguna idea de que paso con el proyecto o si actualmente existe algo parecido? Por que me estuve fijando hace poco pero todo desapareció y lo único que pude encontrar fue esta vieja copia del overlay.
Mozilla/5.0 (X11; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0
@Swicher hasta donde tengo entendido, el proyecto y el overlay fueron abandonados por los autores. Gentoo ha estado limpiando el arbol de portage y ya no es posible encontrar muchos paquetes que se quedaron sin upstream.