Adaptar XBian para hacer una imagen “bootable” desde Berryboot

Cthulhu Warning SignA pesar de que lo bueno de Raspberry es que es más o menos indestructible. Se aplica igualmente la advertencia de que no me hago responsable de los problemas técnicos derivados de este procedimiento.

Y no olvidéis que si algo sale sale mal la SD no funcionará y tocará formatear y volver a emnpezar.

Este post ha sido enviado por un seguidor del blog, David Dominguez a través de la página de contacto.

Introducción

Hace falta un equipo con GNU/Linux

Suponiendo que el lector ya tiene nociones sobre Berryboot y la distro XBian para Raspberry Pi, vamos a explicar el proceso.

La imagen de la última versión de XBian se estructura de la siguiente forma:

  • Partición 1 (partición de arranque):
    • /boot
  • Partición 2 (con sistema de archivos “btrfs”):
    • /home/@
    • /root/@

La idea es crear una imagen tomando sólo la partición 2 y adaptarla para arrancar desde Berryboot, ya que utiliza su propio sistema de arranque.

Pasos:

  1. Instalar el software necesario.
    > Debian:
    > $ sudo apt-get install kpartx squashfs-tools
    > Arch Linux:
    > $ yaourt -S multipath-tools-git squashfs-tools
  2. En XBian, la imagen tiene 2 particiones (home y root), debemos montar la partición de “root”.

    $ sudo kpartx -av XBian_1.0_Beta_1.1.img
    add map loop0p1 (252:5): 0 117187 linear /dev/loop0 1
    add map loop0p2 (252:6): 0 3493888 linear /dev/loop0 118784 --> la que ocupa más tamaño.
    sudo mount /dev/mapper/loop0p2 /mnt
    Si tenemos problemas para montar la imagen, intentar esto y luego repetir el paso 2. $ sudo fdisk -lu XBian_1.0_Beta_1.1.img
    Disk XBian_1.0_Beta_1.1.img: 652 MB, 652214272 bytes, 1273856 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Identificador del disco: 0x000f06a6

    Disposit. Inicio            Comienzo    Fin     Bloques     Id  Sistema
    XBian_1.0_Beta_1.1.img1     2048        71679   34816       c   W95 FAT32 (LBA)
    XBian_1.0_Beta_1.1.img2     71680       1273855 601088      83  Linux
    

    Ahora tomamos el sector de inicio de la partición de tipo “Linux” y lo multiplicamos por los “Units” indicados, a tener en cuenta que esto puede cambiar en otras imágenes, en este caso, ejecutamos lo siguiente…
    $ sudo mount -t auto -o loop,offset=$((71680*512)) XBian_1.0_Beta_1.1.img /mnt
    Desmontamos y volvemos a ejecutar el paso 2…
    $ sudo umount /mnt

  3. Una vez montada la partición, realizamos las adaptaciones necesarias para utilizar con Berryboot.
    $ sudo mv /mnt/home/@/xbian /mnt/root/@/home/
    $ sudo rm -r /mnt/home
    $ sudo mv /mnt/root/@/etc/fstab /mnt/root/@/etc/fstab.btrfs
    $ sudo mv /mnt/root/@/etc/fstab.ext4 /mnt/root/@/etc/fstab

  4. Deshabilitamos los puntos de montaje definidos, ya que Berryboot definirá los suyos.
    $ sudo sed -i 's/^\/dev\/mmcblk/#\0/g' /mnt/root/@/etc/fstab

  5. Creamos imagen convirtiendo a formato “squasfs” utilizado por Berryboot.
    $ sudo mksquashfs /mnt/root/@ XBian_1.0_Beta_1.1_berryboot.img -comp lzo -e lib/modules
    $ sudo umount /mnt
    $ sudo kpartx -dv XBian_1.0_Beta_1.1.img
  6. Una vez creada la imagen cambiamos el propietario de root a tu usuario y fijamos los permisos, pongamos que por ejemplo el usuario de tu equipo es “david” (cambiar por el tuyo).
    $ sudo chown -R david XBian_1.0_Beta_1.1_berryboot.img
    $ sudo chmod 664 XBian_1.0_Beta_1.1_berryboot.img
  7. Copiar la imagen en un pendrive y cargar en Berryboot, desde el menu de inicio, mantener pulsado el botón “Add”.

Arreglar xbian-config:

Al iniciar xbian-config no funciona, ni por SSH ni desde XBMC, hemos de actualizar a la última versión.

  1. Conectar a XBian por SSH.
  2. Realizar los siguientes pasos:
    $ sudo apt-get install git
    $ cd /home/xbian $ git clone --depth 5 https://github.com/xbianonpi/xbian-config-bash.git $ rm /usr/local/sbin/xbian-config $ rm -r /usr/local/include/xbian-config/* $ cd xbian-config-bash $ cp xbian-config /usr/local/sbin/ $ cp -R functions /usr/local/include/xbian-config/
    $ cp -R lang /usr/local/include/xbian-config/
    $ cp -R modules /usr/local/include/xbian-config/
    $ cp -R prereqs /usr/local/include/xbian-config/
    $ cp -R struct /usr/local/include/xbian-config/
    $ cp -R config /usr/local/include/xbian-config/
    $ cp etc/bash_completion.d/* /etc/bash_completion.d/
    $ cd /home/xbian/xbian-config-bash/gettext/
    $ msgfmt -o /usr/share/locale/en/LC_MESSAGES/xbian.mo xbian.po
    $ echo 'APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};' > /etc/apt/apt.conf.d/15update-stamp
  3. Listo, reiniciar y probar.

Configuración de Overclocking en Berryboot

  1. En el menú de inicio de Berryboot, pulsamos el botón “Edit” para ir al editor de menú
  2. Pulsamos sobre el botón “>>” que hay junto al botón “Exit”, nos aparecerán más opciones
  3. Pulsamos en el botón “Edit config” y se nos abrirá una ventana con el editor de configuración donde aparecen los ficheros que se utilizan para pasar opciones a la Raspberry al iniciar el sistema
  4. Vamos a la pestaña “config.txt” y añadimos las siguientes líneas antes de las opciones kernel e initramfs definidas por defecto: Opciones de Overclocking
    Prevenir corrupcion de la tarjeta SD por overclocking
    boot_delay=4 # segundos a esperar antes de arrancar el sistema
    initial_turbo=45 # segundos a esperar antes de iniciar overclocking
    arm_freq=950 # Mhz de frecuencia maxima del microprocesador
    arm_freq_min=700 # Mhz de frecuencia minima del microprocesador
    over_voltage=4 # aumentar el voltaje para incrementar la frecuencia del microprocesador
    core_freq=400 # frecuencia máxima del core de GPU afecta a la cache L2
    core_freq_min=250 # frecuencia mínima del core de GPU afecta a la cache L2
    gpu_freq=450 # frecuencia máxima de toda la GPU del microprocesador
    gpu_freq_min=250 # frecuencia mánima de toda la GPU del microprocesador
    sdram_freq=450 # frecuencia máxima de la memoria RAM
    sdram_freq_min=400 # frecuencia mínima de la memoria RAM
  5. Listo, pulsamos el botón “OK” para guardar y luego “Exit” para reiniciar.
  6. Para verificar que la configuración se carga correctamente, al iniciar XBian, conectar por SSH e introducir el siguiente comando para comprobar la frecuencia del procesador:
    $ /opt/vc/bin/vcgencmd measure_clock arm
    Al igual que hemos usado “arm”, puedes usar los siguientes argumentos para más comprobaciones de frecuencia: [arm|core|h264|isp|v3d|uart|pwm|emmc|pixel|vec|hdmi|dpi]
  • ePi

    Hola. Estupendo y didáctico blog, enhorabuena. Con la versión NOOBS 1.3 aún en beta, el gestor de arranque de la fundación RPi ha adelantado por la derecha a Berryboot. Sabrías los pasos para adaptar Xbian a este otro entorno?

    Aunque está bien explicado en el siguiente enlace: https://github.com/raspberrypi/noobs/blob/dev/README.md#advanced-usage-for-experts-and-teachers

    … no sé como se haría para añadir Xbian.

    Saludos

    • David D.

      Hola ePi, lo he probado pero he visto una gran desventaja en NOOBS y es que, al instalar distintos sistemas, te crea particiones en la SD para cada uno. Lo que desaprovecha el espacio no consumido por otros sistemas, al final tienes un montón de particiones y una limitación de espacio para cada sistema instalado en la SD.

      La direfencia y la gran ventaja que veo en Berryboot, es que al montar cada sistema como una imagen (live) “modificable”, no crea particiones en la SD sino que reconoce la partición sobrante como una única partición utilizable de la misma forma para todos los sistemas instalados. No sé si me entiendes, si tienes una SD de 32GB y tienes intalado Berryboot, tendrás una pequeña partición de arranque y una gran partición con más de 31GB restantes, cada sistema instalado irá consumiendo lo que necesite, sin ninguna limitación hasta alcanzar el máximo de capacidad disponible. Ya que cada sistema se almacena en la SD como una imagen (.img) con los cambios realizados en cada sistema almacenados dentro de una carpeta en la misma partición, teniendo varias imágenes en la misma partición con varias carpetas que van creciendo dependiendo de lo que instales en cada sistema. De esta forma cada vez que arranques un sistema tendrás 31GB menos el espacio ya ocupado por el resto de sistemas instalados.

      En cuanto a los custom OS que indicas para NOOBS. Si quisieras adaptar XBian para instalar desde aquí, tendrías que modificar la imagen (.img) de XBian para adaptar las particiones más o menos como he comentado yo en este post, dejando una partición boot y otra root con la carpeta home dentro y teniendo en cuenta cambiar la estructura de btrfs a ext4 para que NOOBS lo monte correctamente, luego comprimir cada una en un fichero tar.xz como indica el manual (arranque: boot.tar.xz y raiz del sistema: root.tar.xz). Si fuese necesario habría que adaptar el script partition_setup.sh para que se creen las particiones en la SD cuando instalemos desde NOOBS, pero en principio no haría falta si hemos creado correctamente los ficheros boot.tar.xz y root.tar.xz
      Espero haberte ayudado, la verdad es que no me he puesto a probar esta adaptación porque prefiero aprovechar el espacio de mi tarjeta usando Berryboot ;-)

      • David eres un máquina!!!

        • David D.

          jajaja! gracias manuti, no creas, es solo que soy “muy curioso” ;-)