Que es el kernel?
El kernel es el componente mas importante del sistema operativo, es Linux en si mismo, el sistema, el núcleo, como controla la memoria, la cpu, la compatibilidad con dispositivos, todo
El kernel de Linux lo hizo inicialmente Linus torvalds en 1991 que es una copia de unix por supuesto, el sistema se hizo famoso y miles de personas empezaron a contribuir para que aumentase su compatibilidad.
Actualmente la ultima versión estable del kernel es la 4.4.5 publicada el 9 de marzo
Puedes descargarlo desde
https://www.kernel.org
Pero para procesadores allwinner existe un kernel modificado y optimizado de sunxi,
¿que es sunxi?
Pues hasta donde yo se, es un grupo de personas que han hecho posible que exista Linux en procesadores allwinner, todos los recursos, la información la tienen ellos.
Lo primero que tenemos que hacer es instalar las toolchain de compilación cruzada
Las toolchain son un conjunto de archivos binarios, bibliotecas y herramientas que permiten construir (en nuestro caso, mediante una compilación cruzada) el u-boot y el kernel para una plataforma de destino en concreto.
Para instalar las toolchain y las dependencias de compilación del nucleo escribe lo siguiente:
$ sudo apt-get install -y build-essential bin86 git kernel-package libqt4-dev wget libncurses5 libncurses5-dev qt4-dev-tools libqt4-dev zlib1g-dev libssl-dev gcc-arm-linux-gnueabihf
Con esto ya tenemos lo necesario para compilar el kernel de sunxi:
Primero descargamos el código fuente:
$ git clone -b sunxi-3.4
https://github.com/linux-sunxi/linux-sunxi.git
Clonar en «linux-sunxi»...
Esto ocupa como 1,7 Gb, tomaros un café
Una vez se descarga el código fuente tendremos una carpeta llamada linux-sunxi
$ cd linux-sunxi
Ahora si quereis hay que configurar el kernel. cosa que no aconsejo y ahora explico el por que, para abrir el menu de opciones del kernel teclea:
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xconfig
esto abre un menú gráfico muy chulico que nos permite añadir o quitar cosas del kernel, podéis toquetear y probar, pero lo mejor es usar una plantilla definida para el procesador de la Woxter PC97, es decir, una plantilla para el procesador A10
Escribir:
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun4i_defconfig
Ahora el código sabe que tiene que compilar para una cpu A10
Y ahora a compilar el núcleo:
$ make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules
Con esto tenemos el kernel, en este caso en formato uImage este archivo se ubica en:
linux-sunxi/arch/arm/boot/uImage
4.3Mb de nada Xdd
Ahora toca compilar los modulos, estos son los drivers del nucleo,para compilarlos ejecuta la siguiente orden:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=output modules_install
Esto genera los modulos a cargar, estos se ubican en el directorio linux-sunxi/output
Con el kernel y los modulos ya tenemos casi todo para montar una SD que ejecute Linux en la Woxter PC97
Siguiente capitulo:Rootfs