ARM Installation Guide (Español)
Contents
1 Creación de la imagen de instalación Parabola
Este paso es necesario hasta que los desarrolladores de Parabola lanzen un tarball oficial. Necesitará una instalación existente para hacer esto.
1.1 Archivos de configuración
Si quiere un archivo de sistemas raíz de armv7h en su sistema existente Parabola solo necesitará hacer una copia desde pacman.conf y editarla, por ejemplo:
$ mkdir -p parabola-arm-workdir/mnt && cd parabola-arm-workdir $ cp /etc/pacman.conf . # se aconseja usar el pacman.conf por defecto si va a liberarlo
Configure la arquitectura a armv7h (por defecto es auto) en la sección de "opciones generales" en /etc/pacman.conf. Luego, remueva el repositorio [multilib].
pacman.conf
[options] Architecture = armv7h
1.2 Sistema de archivo raíz
Asegúrese de inicializar el anillo de claves de pacman
# pacman-key --init
Importe, instale y confíe en el anillo de claves de archlinuxarm. Cuando sea posible, Parabola aprovechará los paquetes libres que originalmente proceden de Arch ARM.
# pacman -U https://www.parabola.nu/packages/core/any/archlinuxarm-keyring/download/ # pacman-key --lsign-key builder@archlinuxarm.org # pacman -U https://www.parabola.nu/packages/core/any/archlinuxarm-keyring/download/
# pacman -U https://repo.parabola.nu/core/os/armv7h/archlinuxarm-keyring-20140119-1-any.pkg.tar.xz # pacman-key --lsign-key builder@archlinuxarm.org # pacman -U https://repo.parabola.nu/core/os/armv7h/archlinuxarm-keyring-20140119-1-any.pkg.tar.xz
Instale pacstrap si aún no lo ha hecho e instale los paquetes del grupo base
# pacman -S arch-install-scripts # pacstrap -c -d -C ./pacman.conf ./mnt/ base
Opcionalmente empaquete todo en un tarball:
# cd mnt && tar xJf ../parabola_arm_rootfs.tar.xz ./
Felicitaciones, ya posee un rootfs de Parabola ARMv7 dentro de parabola-arm-workdir/mnt/, cópielo al dispositivo de almacenamiento a partir del cual planea bootear Parabola. Ya que las computadoras ARM son muy diversas en su firmware, procesos de booteo y esquemas esperados de particionado que nosotros solamente podemos proveer instrucciones de instalación para una pequeña cantidad de dispositivos amigables con el software libre.
2 Prueba y personalización de imágenes de instalación
Es posible usar PRoot, una implementación de chroot en espacio de usuario, y el hipervisor QEMU para emular una máquina ARM con su sistema de archivos dentro del anfitrión x86.
2.1 Requerimientos
2.1.1 Instalación de PRoot
PRoot es una implementación en espacio de usuario de chroot, mount --bind, y binfmt_misc. Esto significa que los usuarios no necesitan ningún privilegio o configuración para hacer cosas como usar un directorio arbitrario como el nuevo sistema de archivos, haciendo accesibles a los archivos en algún otro lugar en la jerarquía del sistema de archivos, o ejecutar programas construidos para otra arquitectura cd CPU en forma transparente a través del modo de usuario de QEMU. También, los desarrolladores pueden usar PRoot como un motor de instrumentación de procesos GNU/Linux genérico gracias a su mecanismo de extensión, consulte CARE por un ejemplo. Técnicamente PRoot depende de ptrace, una llamada al sistema sin privilegiosa disponible en todos los kernel Linux.
Para instalarlo, ejecute:
# pacman -S proot
2.1.2 QEMU
QEMU (abreviatura de Quick Emulator, emulador rápido) es un hipervisor anfitrión de software libre que implementa la virtualización del hardware (no debe confundirse con virtualización asistida por hardware)
Necesitamos (qemu-arm) para emular una máquina ARMv7 en otra x86, entonces ejecutamos:
# pacman -S qemu-arch-extra
2.1.3 Preparar chroot e ingresar desde PRoot
# mount -o rbind /dev parabola-arm-workdir/mnt/dev
# mount -o bind /sys parabola-arm-workdir/mnt/sys
# mount -o bind /tmp parabola-arm-workdir/mnt/tmp
# mount -t proc none parabola-arm-workdir/mnt/proc
# rm parabola-arm-workdir/mnt/etc/resolv.conf
# cp -a /etc/resolv.conf parabola-arm-workdir/mnt/etc
# proot -0 -q /usr/bin/qemu-arm -r parabola-arm-workdir/mnt
2.2 Configuración de chroot
2.2.1 Verificación de firma de paquetes
Asegúrese que la verificación de firmas está habilitada en /etc/pacman.conf:
pacman.conf
SigLevel = Required DatabaseOptional
Para poder instalar paquetes firmados, tiene que inicializar el anillo de claves de pacman:
# pacman-key --init # pacman-key --populate archlinux # pacman-key --populate archlinuxarm # pacman-key --populate parabola
2.2.2 Localización
Antes de habilitar locale en un sistema, debe ser generada. Los locales disponibles/generados actualmente pueden ser vistos con:
$ locale -a
Los locales que pueden ser generados están listados en el archivo /etc/locale.gen: sus nombres se definen usando el formato [languaje][_TERRITORIO[.CODIGO][@modificador]. Para generar un locale, primero descomente la línea correspondiente en el archivo (o comente para anularlo); cuando haga esto, también considere las localizaciones necesarias por otros usuarios del sistema y por variables específicas. Por ejemplo, para inglés americano descomente en_US.UTF-8 UTF-8. Una vez hecho esto, grabe el archivo y genere los locale(s) ejecutando:
# locale-gen
2.2.3 Más configuraciones
Visite Installation_guide#Installation.
3 Como instalar Parabola ARM
Suponemos que el usuario dispone de alguna distribución GNU/Linux 100% software libre, Trisquel por ejemplo.
3.1 GTA04 A3
El GTA04 típicamente tiene un gestor de arranque en NAND. Pondremos todo en una única partición por simplicidad. Formatearemos una tarjeta microSD card (se perderá su contenido)
# fdisk /dev/mmcblk0 # crea una partición en su tarjeta microSD. # mkfs.ext4 /dev/mmcblk0p1 # formateo como ext4 # mount /dev/mmcblk0p1 /mnt
Luego extraemos el rootfs, para esto, se necesita --numeric-owner por compatibilidad con otras distribuciones como Trisquel
# tar xf /path/to/parabola_arm_rootfs.tar.xz -C /mnt --numeric-owner
Ya tenemos el rootfs en su lugar, pero uboot espera una uImage en /boot/uImage, entonces la crearemos:
# cat /mnt/boot/vmlinuz-linux-libre /mnt/boot/dtbs/linux-libre/omap3-gta04a3.dtb > /tmp/zImage.dtb # mkimage -A arm -O linux -T kernel -C none -a 0x82000000 -e 0x82000000 -d /tmp/zImage.dtb /mnt/boot/uImage
Posiblemente necesite ajustar cmdline y/o los parámetros de arranque pasados al kernel y al entorno uboot para ajustar su esquema de particionado.
Luego que arranque Parabola debería ver el log del booteo en la consola serial. En el momento de escribir estas líneas el kernel carece del driver de pantalla para GTA04, esto es un bug #587
3.2 Configuración del gestor de arranque
3.2.1 U-Boot
3.2.1.1 BeagleBoard y BeagleBoard-xM
Se necesita intervención manual para usar uboot-omap3_beagle
Monte el sistema de archivos FAT
# mkdir boot # mount /dev/sdX1 boot
Copie los archivos de booteo para la primera partición
# cp -a /boot/* boot
Desmonte la partición
# umount boot
3.2.2 GRUB
grub brinda soporte para máquinas ARMv7 con soporte EFI. Consulte nuestro artículo sobre GRUB para más información.
3.2.3 U-Boot4GRUB
Los paquetes uboot4grub están bajo desarrollo aún para U-Boot con soporte a GRUB. En este momento, tenemos algunos paquetes para testing y debugging de [libre-testing].
[libre-testing] Include = /etc/pacman.d/mirrorlist
3.2.4 U-Boot4Extlinux
Extlinux es uno entre varis derivados de Syslinux -- el gestor de arranque usado por live CDs y muchas otras aplicaciones. No se usa muy a menudo como un gestor de arranque para desktops y laptops, pero es perfectamente capaz de esto y además es soportado por U-Boot. Los paquetes uboot4extlinux aún están en desarrollo para U-Boot con soporte Extlinux. En este momento, tenemos algunos paquetes para testing y debugging desde [libre-testing].
[libre-testing] Include = /etc/pacman.d/mirrorlist
3.3 Banana Pi
Estas son las instrucciones para instalar Parabola en la Banana Pi, en teoría esta guía puede ser adaptada para la Banana Pro y Orange Pi solamente cambiando los paquetes. Esto fue probado en una Banana Pi M1, pero versiones más nuevas deberían funcionar también. Primero instala Arch ARM en una SD-Card y migra a Parabola. Dentro de la Banana Pi, instala uboot-bananapi y cuando te pregunte para flashear uboot, acepta. Luego ejecuta el script /boot/mkscr, pero antes asegúrate de tener instalado el paquete uboot-tools.
# pacman -S uboot-banapi # cd /boot && ./mkscr
Opcionalmente, puedes instalar uboot4extlinux-bananapi el cual ha sido probado funcional.
# pacman -S uboot4extlinux-bananapi
3.4 Solución de problemas
3.4.1 Mkinitcpio
3.4.1.1 WARNING: No modules were added to the image. This is probably not what you want.
Si al crear la imagen initramfs con mkinitcpio, obtienes el siguiente mensaje
==> WARNING: No modules were added to the image. This is probably not what you want.
Solo ignoralo, deberías poder bootear de todas formas.
3.4.1.2 ERROR: kernel version extraction from image not supported for `armv7' architecture
Si al ejecutar mkinitcpio obtienes el mensaje
ERROR: kernel version extraction from image not supported for `armv7' architecture
O similar (como armv7h, armv7l, etc) edita /bin/mkinitcpio y donde dice $arch déjalo como
if [[ $arch != @(i?86|x86_64|armv7?) ]]; then error "kernel version extraction from image not supported for \`%s' architecture" "$arch"
3.4.1.3 ERROR: invalid kernel specified: '/boot/vmlinuz-linux-libre'
En este caso edita /etc/mkinitcpio.d/linux-libre-xxx.preset y donde dice ALL_kver="/boot/vmlinuz-linux-libre-xxx" cambia /boot/vmlinuz-linux-libre-xxx con el lanzamiento del kernel, que debiera ser el resultado de uname -r, si estás usando ese kernel. Puedes verlos también con
$ ls /lib/modules