El kernel de linux, se han escrito cientos de libros sobre el tema, kernel significa núcleo, en este caso es el controlador de procesos, accesos a memoria, usuarios, permisos, seguridad y de todas las capacidades del sistema operativo.
El kernel se ubica normalmente en la carpeta /boot del sistema, puede aparecer con distintos formatos de archivo por cuestiones de memoria y eficiencia el kernel se puede comprimir en diferentes formatos que pasan a descomprimirse en memoria RAM una vez se inicia el sistema, estos son algunos ejemplos:
vmlinuz
uImage
zImage
Dependiendo de la configuración este archivo de núcleo varia entre 3 a 15 mb
Todo empieza por descargarse un kernel, ciertamente existen cientos de repositorios y comunidades que modifican o , simplemente compilan de una determinada manera el kernel, vamos a elegir el oficial la rama oficial del kernel, estas fuentes se ubican en kernel.org. en el terminal podermos descargar la ultima versión oficial (4.19) con este comando:
sudo wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.tar.xz
Esto nos descarga el código fuente de linux comprimido en un archivo llamado linux-4.19.tar.xz
Descomprimimos con:
sudo tar -Jxf linux-4.19.tar.xz
Entramos a la carpeta:
cd linux-4.19
y ya estamos en la carpeta del código fuente del núcleo de linux, ahora empezamos la configuración.
los siguientes comandos determinan absolutamente todo en referente al kernel, normalmente no sale a la primera y tienes que recompilar cambios a posteriori, ten paciencia, es la mejor habilidad para conseguir realizar estos procesos.
Las configuraciones del kernel se quedan en ficheros .config donde están todas las opciones del kernel pre configurado para algunas arquitecturas y modelos, en caso de sunxi (allwinner) tenemos una plantilla que se denomina sunxi_defconfig
y que la invocaríamos de esta manera:
make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig
Si todo va bien tiene que paraecer un mensaje como este:
#
#configuration written to .config
#
Ya hemos preparado las fuentes kernel para compilar con las opciones de sunxi preconfiguradas en la plantilla, pero, estas opciones nunca están configuradas para hacer funcionar el hardware de una tablet concreta.
Ahora vamos a configurar correctamente el kernel para una tablet tipo allwinner a33:
Hardware objetivo
Allwinner a33
1Gb DDR3
Pantalla 7 pulgadas 1024×600
Táctil silead gsl1680
Wi-Fi Realtek 8723au
Sonido
Acelerometro mi3rda (se que suena a broma)
Cámaras
una vez que estamos dentro de la carpeta de linux-4.19 y hemos cargado la plantilla base de sunxi vamos a iniciar el menú gráfico para poder configurar partes esenciales del kernel
Con el comando:
sudo make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xconfig
Se nos abre menú de configuración de kernel:
Ahora en este menú os voy a dar unas indicaciones para compilar un kernel para un dispositivo allwinner a33, hay cosas que se comparten con otros SoC, pero otras no, cuando seleccionas una opción del kernel si este es un modulo al darle un click se pasa a estado modulo ·
y cuando le das otro click pasa a estado modulo instalado dentro del kernel con un check v
para buscar en el menú solo pulsar Ctrl+f
y buscar lo que os indico:
Ctrl+f y teclear neon y marcar Support for NEON in kernel mode
teclear Ctrl+f sun8 y marcar como modulo Allwinner SUN8I audio codec
teclear wireless y marcar la casilla Wireless
Ahora salir de menú de búsqueda y fijaos que se ha activado de bajo de wireless un flecha hacia abajo pulsarla y activar cfg80211 - wireless configuration API y Generic IEEE 802.11 Networking Stack (mac80211)
Se queda de la siguiente manera:
Ahora volvemos a buscar, buscamos LAN y aparecen un montán de opciones bajar hasta seleccionar Wireless LAN
Ahora cerramos la pantalla de búsqueda, (no olvidaos de guardar regularmente) y veremos que debajo de Wireless LAN vemos que se despliegan otro menú de opciones con la mayoría de adaptadores de WI-Fi del mercado:
Si disponemos de un Arm existen 90% de posibilidades de que tengas realtek o ralink, por lo que normalmente dejo la configuración de dispositivos wi-Fi mas o menos así
Es posible que nuestra Wi-Fi se encuentre en fase stagging, es decir que no es muy estable, como mi tarjeta Wi-Fi 8723, para activarla ve al menú de buscar (Ctrl+f) y busca stagi
Aparece la opción de Staging drivers marca la opcion y se despliegan otras opciones referentes a drivers en este estado: