Calculate馃惂Forum

Construcci贸n y compilaci贸n manual del kernel (make menuconfig)

guide
#1

Fuente: https://rootsudo.wordpress.com/2014/10/09/construccion-y-compilacion-manual-del-kernel-en-gentoo-make-menuconfig/

La compilaci贸n manual es la recomendada en Gentoo, tanto por su versatilidad como por su sorprendente simplicidad, s铆, has le铆do bien, simplicidad. Que todo es dif铆cil en Gentoo es un falso mito. Gentoo no es dif铆cil, sino complejo, pero esa complejidad tan s贸lo es pureza y riqueza de posibilidades, no dificultad.

Vamos all谩:

descargamos un paquete de fuentes de kernel, podemos usar alguno de los que est谩n en Portage o cualquier otro. Hay que tener en cuenta que conviene usar fuentes que incluyan los parches para Gentoo. Como ejemplo podemos buscar kernels en Portage as铆:

emerge -s sources

lo que encontrar谩 fuentes del n煤cleo linux; en este ejemplo vamos a instalar las fuentes oficiales de Gentoo:

sys-kernel/gentoo-sources

las emergemos de Portage:

sudo emerge -a gentoo-sources

Hay que tener en cuenta que por defecto si emergemos 鈥済entoo-sources鈥 Portage descargar谩 la 煤ltima versi贸n del kernel que haya. Si queremos instalar un kernel determinado m谩s antiguo de los que hay aqu铆 /usr/portage/sys-kernel/gentoo-sources tenemos que emergerlo llam谩ndolo espec铆ficamente a 茅l anteponiendo un signo igual (=), as铆:

sudo emerge -a =sys-kernel/gentoo-sources-3.14.39

de esta manera emergemos espec铆ficamente la versi贸n 39 del kernel 3.14 (LTS).

Portage no instala el nuevo kernel, sino que se limita a crear su directorio de fuentes en:

/usr/src/linux-3.16.5-gentoo/

podemos comprobar que est谩n ah铆.

Lo primero es hacer que el enlace simb贸lico /usr/src/linux apunte a las nuevas fuentes, esto es necesario pues como luego usaremos el comando genkernel para instalar el 鈥渋nitramfs鈥 se necesita que apunte a las fuentes correctas.

eselect kernel list

sudo eselect kernel set 1 (o el n煤mero que sea)

entramos en el directorio de la fuentes, en nuestro caso:

/usr/src/linux-3.16.5-gentoo/

abrimos una terminal y nos hacemos root

su

make menuconfig

ahora se nos muestra el men煤 para determinar las opciones que queremos que compile nuestro kernel, las opciones que trae por defecto suelen funcionar, pero como es l贸gico conviene comprobar que compile el kernel para nuestra tarjeta de red ethernet, para la tarjeta wifi, para la tarjeta gr谩fica y para la tarjeta de sonido y ALSA.

Podemos encontrar informaci贸n sobre nuestros dispositivos de hardware con:

sudo lspci -k (encontraremos nuestros dispositivos de red, Ethernet y Wireless)

sudo lspci | grep -i audio (nuestra tarjeta de sonido)

sudo lspci | grep -i VGA (la tarjeta gr谩fica)

las opciones principales est谩n en 鈥淒evice Drivers鈥, podemos seleccionarlas con 鈥淵鈥 (se marca con un asterisco) lo cual supone que se compilar谩 dentro del kernel, o si la seleccionamos con 鈥淢鈥 (se marca con una letra M) se instalar谩 como m贸dulo. Sobre la famosa cuesti贸n de si es mejor instalar los controladores dentro del kernel o como m贸dulos hay mucha pol茅mica. Cada opci贸n tiene sus ventajas. Yo suelo integrar dentro del n煤cleo los principales, tarjeta gr谩fica, tarjeta ethernet, tarjeta wifi y sonido. Eso no hace mucho m谩s grande el kernel y, as铆 evito problemas de que sean cargados o no al inicio, evitando que tengan que ser reconocidos por udev, etc. Pero en esto, para gustos hay colores.


MAKE MENUCONFIG

Tarjeta Ethernet:

Device Drivers > Network device support > Ethernet driver support >

Tarjeta Wifi:

Device Drivers > Network device support > Wireless LAN >

Tarjeta Gr谩fica:

Device Drivers > Graphics support >

Tarjeta de Sonido:

Device Drivers > Sound card support > Advanced Linux Sound Architecture>

Web-Cam:

Device Drivers 鈥>
Multimedia support 鈥>
[*] Cameras/video grabbers support
[*] Media USB Adapters 鈥>
USB Video Class (UVC)
[*] UVC input events device support (NEW)

Pantalla T谩ctil (touchscreen):

Device Drivers > HID support > Special HID drivers 鈥>
<*> HID Multitouch panels


N贸tese que en el menuconfig se accede a los distintos apartados selecion谩ndolo y haciendo enter, y se retrocede un paso con cada 鈥渆xit鈥. Al hacer 鈥渆xit鈥 desde la p谩gina principal se sale de menuconfig. Ya hemos dicho que para entrar s贸lo hace falta 鈥渕ake menuconfig鈥 en la carpeta de las fuentes del kernel.
Una vez que hemos seleccionado nuestras opciones se guardan (Save) en el archivo .config ese archivo ser谩 el que compile despu茅s el comando 鈥渕ake鈥. Yo personalmente suelo guardar primero una copia con otro nombre, por ejemplo .config-01 para tener un control de las versiones compiladas, y despu茅s lo vuelvo a guardar como .config, pues ese ser谩 el que siempre se compile, y as铆 no sobreescribo las configuraciones previas si hago sucesivas compilaciones.

Salimos de menuconfig con 鈥渆xit鈥 (hacemos exit las veces necesarias).

Volvemos a estar en la terminal y ya s贸lo nos resta empezar la compilaci贸n propiamente dicha, con el comando est谩ndar 鈥渕ake鈥:

make

ahora toca esperar, pues dependiendo del microprocesador, as铆 como de la cantidad de opciones a compilar, puede tardar entre unos 20-30 minutos en ordenadores modernos y m谩s de una hora en equipos antiguos.

Nos tomamos un caf茅.

compilando

cafeCuando termine de compilar hacemos:

make modules_install

para instalar los controladores que hemos activado como m贸dulos, que se copiar谩n en el directorio /lib/modules

despu茅s:

make install

lo cual instalar谩 el nuevo kernel en /boot/

Instalamos genkernel si no est谩 instalado:

sudo emerge -a genkernel

y luego instalamos en /boot/ el 鈥渋nitramfs鈥 mediante genkernel.

genkernel --install initramfs

Ya est谩, s贸lo nos queda actualizar GRUB2 para poder arrancar con el nuevo kernel:

grub-mkconfig -o /boot/grub/grub.cfg

exit

reboot

Al arrancar el equipo elegimos en el men煤 de GRUB el nuevo kernel y lo probamos.
Si todo va bien, ya tenemos nuestro nuevo kernel personalizado y compilado por nosotros, si alguna cosa no funciona, puede que no hayamos compilado sus drivers en el kernel, por lo que habr铆a que activarlos en nuestro archivo .config (make menuconfig) y recompilar.

Depurar, compilar y recompilar en Gentoo, constituye unos de sus placeres viciosos y gozosos.

Mastodon Mastodon