Cómo flashear el firmware Nightwing usando RedBoot
De LugroMesh
Tabla de contenidos |
Como flashear el firmware Nightwing usando RedBoot
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: true 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
El script de boot tiene que tener estas lineas las cuales tienen que ser ingresadas seguidas de un salto de linea (sin los ..). Para finalizar de debe dejar un salto de linea al final (enter)
Boot script: .. fis load -l kernel .. exec
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
