-
Instalar OpenWrt Sinovoip en la eMMC del router BPI-R3 sin usar un cable de consola
Para conseguir quemar una imagen de OpenWrt en la memoria eMMC del router BananaPi BPI-R3 sin usar un cable de consola tenemos que seguir estos pasos:
- Quemar la imagen en la MicroSD que hayamos preparado en este hack.
- Iniciar desde la MicroSD y quemar la imagen en la NAND
- Iniciar desde la NAND y quemar la imagen en la eMMC.
Se hace de esa manera porque la eMMC y la MicroSD comparten x.
QUEMAR LA IMAGEN EN UNA MICROSD
Podemos quemar la imagen en la MicroSD de esta forma:
dd if=/home/usuario/sd.img of=/dev/mmcblk0 bs=10M status=progress
Eso sí, al acabar de quemar la imagen de la MMC en la tarjeta, hay que prestar atención a que la última partición (que es donde se montará el overlay) tiene de tamaño, como mucho, el total de espacio que suman los paquetes elegidos. Y eso es muy poco. Por eso, antes de sacarla del ordenador GNU/Linux donde la hemos «quemado» y antes también de meterla en la BPI-R3, hay que hacer que esa última partición (que es la que se llama «production») sea tan grande como todo el espacio libre disponible al final de la tarjeta de memoria. Esto lo hacemos abriendo en la distro donde la quemamos, una consola con permisos de administrador y ejecutando dentro:
cfdisk /dev/mmcblk0
…nos posicionamos sobre la última partición y le damos en resize. Al acabar le damos a write y ya estaremos listos para meterla en la BananaPi y empezar a operar con ella.
PRIMER INCIO
Ponemos todos los jumpers de la BPI-R3 hacia arriba para que inicie desde la MicroSD. Insertamos la tarjeta y conectamos el cable de corriente. Una vez que la BPI inicie, nos conectamos mediante SSH a ella (192.168.1.1) y vamos a hacer una serie de cosas:
OBTENER INFO DEL TIPO DE NAND
Para ver que tipos de NAND tiene la BPI-R3, podemos ejecutar:
cat /proc/mtd
Nos dará la siguiente salida (sin mis notas personales sobre los MB):
dev: size erasesize name mtd0: 07a80000 00020000 "ubi" - 122,5 MB mtd1: 00200000 00020000 "fip" - 2,0 MB mtd2: 00300000 00020000 "reserved" - 3,0 MB mtd3: 00080000 00020000 "bl2" - 0,5 MB
Entonces, si sumamos todos los MB vemos que dan un total de 128. Es decir, estamos hablando de la SPI NAND (SPIM-Nand) de 128MB, no de la SPI NOR (SPIM-NoR) de 32MB,
BORRAR LA NAND
Podemos borrar el contenido de las 4, así:
mtd erase /dev/mtd0 mtd erase /dev/mtd1 mtd erase /dev/mtd2 mtd erase /dev/mtd3
QUEMAR LA IMAGEN DE LA MICROSD EN LA NAND
Para hacer esto tenemos dos formas:
MÉTODO 1 – U-BOOT
Todavía conectados mediante SSH, vamos a modificar la variable de entorno bootcmd del bootloader U-Boot para que ejecute una serie de comandos al arrancar que van a hacer que el contenido de la MicroSD se copie en la NAND. Lo hacemos ejecutando:
fw_setenv bootcmd "run ubi_init ; env default bootcmd ; saveenv ; reset"
Esta línea indica a U-Boot que ejecute los siguientes comandos:
run ubi_init: estableciende la secuencia de comandos de arranque ubi_init que inicializa el sistema de archivos UBI (Unsorted Block Images).
env default bootcmd: Restablece la variable bootcmd a su valor por defecto establecido en U-Boot.
saveenv: Guarda los cambios hechos en las variables de entorno en el almacenamiento persistente.
reset: Reinicia el dispositivo, lo que permite que los cambios tomen efecto inmediatamente.
De esa forma, la próxima vez que se inicie la BPI-R3, ejecutará lo que corresponde a la siguiente opción del menú del bootloader U-Boot, instalado por defecto en el router:
Install bootloader, recovery and production to NAND
Entonces, para ello, reiniciamos la BPI-R3 con:
reboot
Al reiniciar, la dejamos un buen rato, hasta que termine la copia. Al finalizar quitamos el cable de corriente y configuramos los jumpers para que inicie desde la NAND.
NOTA: Es posible hacer la copia hacia la SPI NOR de 32MB (SPIM-NoR), en vez de hacia la SPI NAND de 128MB (SPIM-Nand). Para ello el comando sería:
fw_setenv bootcmd "run nor_init ; env default bootcmd ; saveenv ; reset"
Lo que sería equivalente a ejecutar el siguiente apartado del menú de U-Boot:
Install bootloader, recovery and production to NOR
Para ver si interesa copiarla hacia una u otra es mejor leer este artículo, para ver que diferencias hay entre una memoria y la otra.
MÉTODO 2 – DIRECTO (TODAVÍA NO FINALIZADO)
Flasheamos la mtd1 ejecutando:
dd if=/Particiones/openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-snand-bl31-uboot.fip of=/dev/mtdblock1
Flasheamos la mtd3 ejecutando:
dd if=/Particiones/openwrt-xxx-mediatek-filogic-bananapi_bpi-r3-snand-preloader.bin of=/dev/mtdblock3
QUEMAR LA IMAGEN EN LA EMMC
Si hemos logrado bootear con éxito desde la NAND, modificaremos otra vez la variable de entorno del bootloader U-Boot para que, al inciar, copie el contenido, pero esta vez hacia la eMMC:
fw_setenv bootcmd "run emmc_init ; env default bootcmd ; saveenv ; saveenv ; reset"
De esa forma, la próxima vez que se inicie la BPI, hará la copia de la NAND a la EMMC.
Entonces, reiniciamos la BPI-R3 con:
reboot
Al reiniciar, la dejamos un buen rato, hasta que termine la copia. Al finalizar quitamos el cable de corriente y configuramos los jumpers para que inicie desde la EMMC.
Los hacks de hacks4geeks son minitutoriales rápidos pensados para geeks con conocimiento informático avanzado. Si no entiendes o no consigues ejecutar un hack de esta web considera suscribirte a Premium para solicitar asistencia sobre el mismo.