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