RedBoot es un completo ambiente bootstrap para sistemas embebidos. Basado el la HAL (Hardware Abstraction Layer) de eCos. RedBoot posee muchas funcionalidades, entre ellas esta la utilización de la interfaz de línea de comandos (CLI).

Por medio de la CLI podemos manipular la memoria Flash de nuestro dispositivo (en nuestro caso el router), también podemos bajar y cargar las imágenes a flashear por medio de un servidor tftp.

A Redboot podemos acceder por medio de una interfaz serial o por ethernet.

Para acceder a la interfaz CLI, utilizamos el adaptador serie, el cual cual conectamos al dispositivo. Este acceso lo hacemos por medio de minicom u otro emulador serie de consola.

En la consola debemos cortar el proceso de arranque normal al encenderse, lo hacemos apretando control-c más de 1 vez y entrando a la interfaz CLI.

En la consola serial, se nos presenta la CLI: RedBoot>

Los comandos a utilizar y una breve descripción de lo que hacen, son los siguientes:

fconfig Permite realizar cambios a la configuración por defecto de RedBoot
fis init Inicializa el Sistema de Imagen Flash (FIS)
fis list Lista el directorio de la FIS
fis delete Borra una imágen de la flash
fis load Carga una imágen flash en la memoria RAM
fis create Crea una imágen flash
fis free Muestra el espacio libre que queda en la memoria flash

En resúmen, los pasos a seguir para reflashear un dispositivo son los siguientes:
Solo antes de la primera vez que flasheamos:
fconfig (si necesitamos cambiar algo de lo que viene por defecto)
fis init

Siempre que flasheemos:
load -r -b %{FREEMEMLO} nightwing-vmlinux.lzma
fis create -r 0x80041000 -e 0x80041000 kernel
load -r -b %{FREEMEMLO} nightwing-root.squashfs
fis free (2° nº – 1° nº = nº a ser usado en el fis create del rootfs)
fis create -l 0x2F0000 rootfs

Algo que debemos tener en consideracion es que utilizamos squashfs y mini_fo, la primera vez que arranquemos el dispositivo después de flashearlo, debemos esperar unos segundos (después de los mensages de wifi0) para que el mini_fo arranque y finalice el trabajo post flasheo. Después de lo cual se recomienda reiniciar nuevamente el dispositivo.

Verás éstos mensages:
jffs2_scan_eraseblock(): End of filesystem marker found at 0x0
jffs2_build_filesystem(): unlocking the mtd device... done.
jffs2_build_filesystem(): erasing all blocks after the end marker... done.
mini_fo: using base directory: /
mini_fo: using storage directory: /jffs

Cuando veas la última línea, significa que mini_fo ha terminado su trabajo y ya puedes reiniciar.


Una descripción de los comandos

fconfig
Este comando nos presenta una secuencia interactiva por medio de la cual configuramos Redboot. Es importante recordar asignar la IP del servidor que vamos a utilizar para cargar la imágenes a grabar.


RedBoot> fconfig
Run script at boot: false
Use BOOTP for network configuration: false
Local IP address: 192.168.1.123
Default server IP address: 192.168.1.42
DNS server IP address: 192.168.1.254
GDB connection port: 9000
Network debug at boot time: false


fis init
Este comando inicializa la FIS (Sistema de Imagen Flash). Normalmente se debe ejecutar una sola vez, al instalar por primera vez RedBoot en el router o cuando borramos las particiones para flashear por primera vez. Ejecutar este comando repetidamente puede causar la perdida de información previamente guardada en la FIS.


RedBoot> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .


fis list
Este comando lista las imágenes disponibles en la FIS. Algunas imágenes utilizadas por RedBoot tienen nombres fijos y poseen una ubicación reservada en la FIS (pueden ser vistos depués de utilizar el comando fis init).

Otras imágenes pueden ser manipuladas por el usuario.


RedBoot> fis list
Name FLASH addr Mem addr Length Entry point
RedBoot 0xBFC00000 0xBFC00000 0x00030000 0x00000000
FIS directory 0xBFFE0000 0xBFFE0000 0x0000F000 0x00000000
RedBoot config 0xBFFEF000 0xBFFEF000 0x00001000 0x00000000

Este listado de las imágenes es cuando no se han creados imágenes propias o cuando se las borro; solo se ven las que posee RedBoot.

fis delete

Este comando borra una imagen de la FIS. Las imágenes reservadas por RedBoot no deben ser borradas.

RedBoot> fis delete rootfs
Delete image 'rootfs' - continue (y/n)? y
... Erase from 0xbfce0000-0xbffe0000: ...........................................
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .


fis load
Este comando es utilizado para transferir una imagen al router, la misma es almacena en la memoria RAM del router.


RedBoot> load -r -b %{FREEMEMLO} nightwing-vmlinux.lzma
Using default protocol (TFTP)
Raw file loaded 0x80040c00-0x800f0bff, assumed entry at 0x80040c00


fis create
Este comando crea una imágen en el directorio de la FIS. Lo utilizamos para copiar lo que habíamos previamente cargado en la memoria RAM con el comando fis load.


RedBoot> fis create -r 0x80041000 kernel
... Erase from 0xbfc30000-0xbfce0000: ...........
... Program from 0x80040c00-0x800f0c00 at 0xbfc30000: ...........
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .


fis free
Este comando nos muestra que áreas de la memoria flash están sin uso.

RedBoot> fis free
0xBFCE0000 .. 0xBFFE0000


Para mas información sobre el uso de Redboot ver la Guía de Usuario: http://ecos.sourceware.org/ecos/docs-latest/redboot/redboot-guide.html