IngoberWiki

Omnia sunt communia

Herramientas de usuario

Herramientas del sitio


dispositivos_ingobernables_kernel

Kernel

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

Descarga e configuración:

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.

Kernel: Configuración y compilació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.

Configuración de las fuentes

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

#

Configuración del kernel

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

Menú de configuración del kernel

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:

dispositivos_ingobernables_kernel.txt · Última modificación: 2018/11/05 16:56 por pietre