IngoberWiki

Omnia sunt communia

Herramientas de usuario

Herramientas del sitio


dispositivos_ingobernables_manual

Manual para ejecutar Linux en TableX allwinner

Esta página describe el proceso para combinar U-Boot, El kernel Linux y otros componentes para crear una tarjeta SD con Linux desde cero, la base para un nueva piratería.

Esta página solo es adecuada para dispositivos basados en allwinner A10,A13,A10s,A20 y a33.

Construimos una distribución completa, creamos U-Boot, kernel y un puñado de herramientas, y luego creamos un sistema de archivos raíz “rootfs” con para obtener un sistema útil. Dependiendo del tamaño de rootfs, es posible que desee utilizar una tarjeta SD de 2 GB o superior. El formateo y la partición de la tarjeta SD se describe más adelante.

Instalar un toolchain

El toolchain es un conjunto de binarios, bibliotecas de sistemas y herramientas que le permiten construir (en nuestro caso, compilación cruzada) u-boot y kernel para una plataforma de destino. Esto, en cierta medida, deberá coincidir con el rootfs objetivo.

Ubuntu/debian

sudo apt-get install -y gcc-arm-linux-gnueabihf build-essential

Necesitará tambien otras herramientas que no forman parte de toolchain:

sudo apt-get install -y build-essential git debootstrap u-boot-tools device-tree-compiler

U-boot

U-Boot es el gestor de arranque comúnmente utilizado en nuestros SoC allwinner. Entre otros, proporciona la infraestructura básica para abrir una placa hasta un punto donde puede cargar un kernel de Linux y comenzar a arrancar su sistema operativo.

U-boot: Clonando el repositorio

Para clonar el repositorio necesitas la herramienta “git” puedes instalarla usando:..

sudo apt-get install git

La ultima versión del repositorio de u-boot se encuentra en git:git.denx.de/u-boot.git se descargaría con git clone git:git.denx.de/u-boot.git

No obstante por razones de estabilidad recomiendo una versión menos moderna pero mas estable:

U-boot 2017.11 Compatible con ubuntu trusty

U-boot 2018.05 Ultima versión estable, requiere Gcc 6

para descargar y descomprimir la versión mas estable y compatible (u-boot 2017) en terminal sería así:

wget ftp://ftp.denx.de/pub/u-boot/u-boot-2017.11.tar.bz2

tar -xjvf u-boot-2017.11.tar.bz2

U-boot: Determinar el objetivo de compilación

Una vez descomprimimos u-boot tendremos el siguiente directorio:

ls u-boot-2017.11/configs

Aquí tendremos disponibles miles de configuraciones para el u-boot, si queremos iniciar una tablet de formato q8 con cpu a13 deberíamos usar la plantilla q8_a13_tablet_defconfig

para cargar la plantilla en la configuración del u-boot sería de la siguiente manera:

sudo make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- q8_a13_tablet_defconfig

con esto hemos cargado una plantilla para este modelo de tablet, ahora estamos listos para compilar.

U-boot: Compilación

Una vez que tenemos el código fuente preparado para la compilación podemos compilar simplemente con esta orden:

cd u-boot-2017.11

sudo make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

si queremos entrar al menú gráfico de configuración de compilación del u-boot necesitamos las siguientes dependencias:

sudo apt-get install -y libssl-dev libusb-1.0-0-dev bin86 libqt4-dev libncurses5 libncurses5-dev qt4-dev-tools swig libpython-dev libqt4-dev libusb-dev zlib1g-dev pkg-config libgtk2.0-dev libglib2.0-dev libglade2-dev

U-boot: Instalación

Una vez hayamos compilado el u-boot, en el directorio raíz tendremos, entre otros, el siguente archivo:

u-boot-sunxi-with-spl.bin

Para ejecutar u-boot y sobre el Linux tenemos que instalar este u-boot en los primeros sectores de la tarjeta micro SD, para ello, asumiendo que tienes una tarjeta micro SD y que tu sistema la ha montado como /dev/sdb (puede ser /dev/mmcblk):

sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

Ahora ejecuta el comando sync para que los buses se actualicen,apaga completamente la tablet pulsando poweroff 10 segundos, extrae la micro SD del ordenador, inserta en tu tablet y enciende, los dispositivos allwinner tienen la directiva al arrancar de buscar un sistema coherente el la micro Sd, si no hay un sistema coherente pasa a preguntar a la memoria interna.

Kernel: Descarga

Vamos a diferenciar 2 tipos de kernel, legacy y mainline:

Legacy

a10,a13,a13s,a20,a23

Mainline

A33,A83t,A64

Kernel: Legacy

Kernel: Mainline

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.17.2.tar.xz

tar -Jxf linux-4.17.2.tar.xz

Cuando nos referimos a legacy es un kernel que tiene soporte extendido, ya que la comunidad sunxi a mejorado y a dado compatibilidad a estos dispositivos con este kernel.

Mainline es simplemente el ultimo kernel disponible, con las mejoras de seguridad y dispositivos que eso conlleva.

Kernel: Configuración

Para configurar el kernel mainline deberíamos usar un deconfig genérico sunxi, luego nos encargaremos de configurar mas apropiadamente:

make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig

Cuidado esta plantilla es muy básica y será necesario que la configures si quieres tener compatibilidad con wifi, táctil y demás, para configurar adecuadamente

Una vez hemos cargamos esta plantilla podemos pasar a configurar el kernel con el menú de selección, éste menú puede usarse de 3 maneras, nos centramos en xconfig que requiere las librerias siguientes:

sudo apt-get install libqt4-dev libncurses5 libncurses5-dev qt4-dev-tools

ahora pasamos a la configuración del kernel:

sudo make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xconfig

Esta parte requiere de ciertos conocimientos o experiencia sobre la configuración necesaria que requiere tu dispositivo, hay literalmente miles de dispositivos y muchas combinaciones posibles

Kernel: Compilación

Una vez configurado el kernel nos disponemos a compilarlo:

sudo make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

Que compilamos aquí?

zImage Kernel

modules Módulos

dtbs Arboles de dispositivos

Ahora el siguiente paso es crear los módulos en una carpeta llamada output en la raíz del código fuente del kernel:

sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=output make modules modules_install

Kernel: Instalación

Ahora tenemos el kernel, los módulos y el árbol de dispositivos compilado y listo para ser copiado a sistema de archivos raíz que vamos a usar en el dispositivo destino, estos son la ubicación de los archivos y donde tienen que ir ubicado:

arch/arm/boot/zImage ——> /boot

arch/arm/boot/dts/*.dtb —>/boot

output/lib—————–>/lib

dispositivos_ingobernables_manual.txt · Última modificación: 2018/10/26 13:28 por editora