NSLU2-Linux
view · edit · print · history

Stock firmware layout

 fis list
 Name              FLASH addr  Mem addr    Length             Entry point
 RedBoot           0x50000000  0x50000000  0x00040000 (256KB) 0x00000000
 kernel            0x50040000  0x50040000  0x00200000 (2.0MB) 0x01008000
 filesystem        0x50240000  0x50240000  0x00600000 (6.0MB) 0x00000000
 usr               0x50840000  0x50840000  0x00680000 (6.5MB) 0x00000000
 unallocated space 0x50EC0000  0x50EC0000  0x00040000 (256KB) 0x00000000
 sysconfig         0x50F00000  0x50F00000  0x000C0000 (768KB) 0x00000000
 RedBoot config    0x50FC0000  0x50FC0000  0x00001000 (128KB) 0x00000000
 FIS directory     0x50FE0000  0x50FE0000  0x00020000 (128KB) 0x00000000
 RedBoot>

Proposed layout to allow for a 256KB Loader partition and separate 128KB npe_ucode microcode area

This allows us to "chain boot" from RedBoot to Apex to the replacement kernel. Set the RedBoot boot script to "fis load Loader ; go".

 fis list
 Name              FLASH addr  Mem addr    Length             Entry point
 RedBoot           0x50000000  0x50000000  0x00040000 (256KB) 0x00000000
 kernel            0x50040000  0x50040000  0x00200000 (  2MB) 0x01008000
 filesystem        0x50240000  0x50240000  0x00D00000 ( 13MB) 0x00000000
 sysconfig         0x50F40000  0x50F40000  0x00080000 (256KB) 0x00000000
 Loader            0x50F80000  0x50F80000  0x00040000 (256KB) 0x00000000
 RedBoot config    0x50FC0000  0x50FC0000  0x00001000 (128KB) 0x00000000
 FIS directory     0x50FE0000  0x50FE0000  0x00020000 (128KB) 0x00000000
 RedBoot>

Proposed layout to allow for a 512KB LudeBoot partition and separate LudeBoot config area

This allows us to "chain boot" from RedBoot to LudeBoot to the replacement kernel. Set the RedBoot boot script to "fis load Ludeboot ; go" and set the LudeBoot boot script to "fis load kernel ; exec".

 Name              FLASH addr  Mem addr    Length             Entry point
 RedBoot           0x50000000  0x50000000  0x00040000 (256KB) 0x00000000
 kernel            0x50040000  0x00400000  0x00200000 (2.0MB) 0x00400000
 filesystem        0x50240000  0x00B00000  0x00600000 (6.0MB) 0x00000000
 usr               0x50840000  0x50840000  0x006C0000 (6.8MB) 0x00000000
 sysconfig         0x50F00000  0x50F00000  0x00040000 (256KB) 0x00000000
 LudeBoot          0x50F40000  0x00100000  0x00060000 (384KB) 0x00100040
 LudeBoot config   0x50FA0000  0x50FA0000  0x00001000 (128KB) 0x00000000
 RedBoot config    0x50FC0000  0x50FC0000  0x00001000 (128KB) 0x00000000
 FIS directory     0x50FE0000  0x50FE0000  0x00020000 (128KB) 0x00000000

Steps required to transition from stock partitioning to LudeBoot partitioning

  • Move the sysconfig partition up by 256KB and reduce it's size by 384KB
 > fis load -b 0x01000000 -c sysconfig
 > fis delete sysconfig
 > fis create -f 0x50F00000 -l 0x00040000 -b 0x01000000 sysconfig

 Name              FLASH addr  Mem addr    Length      Entry point
 RedBoot           0x50000000  0x50000000  0x00040000  0x00000000
 kernel            0x50040000  0x00400000  0x00200000  0x00400000
 filesystem        0x50240000  0x00B00000  0x00600000  0x00000000
 usr               0x50840000  0x50840000  0x00680000  0x00000000
 unallocated space 0x50EC0000  0x50EC0000  0x00080000  0x00000000
 sysconfig         0x50F00000  0x50F00000  0x00040000  0x00000000
 unallocated space 0x50F40000  0x50F40000  0x00080000  0x00000000
 RedBoot config    0x50FC0000  0x50FC0000  0x00001000  0x00000000
 FIS directory     0x50FE0000  0x50FE0000  0x00020000  0x00000000
  • Load a new RedBoot[RAM] image into memory (transfer redboot.srec)
 > load -m xmodem
 (transfer redboot.srec via xmodem)
  • Create a new LudeBoot partition
 > fis create -f 0x50F40000 -l 0x00060000 -r 0x00100000 -e 0x00100040 LudeBoot

 Name              FLASH addr  Mem addr    Length      Entry point
 RedBoot           0x50000000  0x50000000  0x00040000  0x00000000
 kernel            0x50040000  0x00400000  0x00200000  0x00400000
 filesystem        0x50240000  0x00B00000  0x00600000  0x00000000
 usr               0x50840000  0x50840000  0x00680000  0x00000000
 unallocated space 0x50EC0000  0x50EC0000  0x00080000  0x00000000
 sysconfig         0x50F00000  0x50F00000  0x00040000  0x00000000
 LudeBoot          0x50F40000  0x00100000  0x00060000  0x00100040
 unallocated space 0x50FA0000  0x50FA0000  0x00020000  0x00000000
 RedBoot config    0x50FC0000  0x50FC0000  0x00001000  0x00000000
 FIS directory     0x50FE0000  0x50FE0000  0x00020000  0x00000000
  • Create a new LudeBoot config partition
 > fis create -f 0x50FA0000 -l 0x00001000 -n LudeBoot config

 Name              FLASH addr  Mem addr    Length      Entry point
 RedBoot           0x50000000  0x50000000  0x00040000  0x00000000
 kernel            0x50040000  0x00400000  0x00200000  0x00400000
 filesystem        0x50240000  0x00B00000  0x00600000  0x00000000
 usr               0x50840000  0x50840000  0x00680000  0x00000000
 unallocated space 0x50EC0000  0x50EC0000  0x00080000  0x00000000
 sysconfig         0x50F00000  0x50F00000  0x00040000  0x00000000
 LudeBoot          0x50F40000  0x00100000  0x00060000  0x00100040
 LudeBoot config   0x50FA0000  0x50FA0000  0x00001000  0x00000000
 RedBoot config    0x50FC0000  0x50FC0000  0x00001000  0x00000000
 FIS directory     0x50FE0000  0x50FE0000  0x00020000  0x00000000
  • Test the new LudeBoot image
 > fis load LudeBoot
 > go
  • Initialise the LudeBoot config area
 > fis init
  • To flash a new version of LudeBoot
 > load -m xmodem
 (transfer redboot.srec via xmodem)
 > fis create LudeBoot

Proposed layout to allow for a 512KB LudeBoot partition (including a LudeBoot config area) and a maximum size JFFS2 partition.

This allows us to "chain boot" from RedBoot to LudeBoot to the replacement kernel. Set the RedBoot boot script to "fis load Ludeboot ; go" and set the LudeBoot boot script to "fis load kernel ; exec".

 Name              FLASH addr  Mem addr    Length             Entry point
 RedBoot           0x50000000  0x50000000  0x00040000 (256KB) 0x00000000
 kernel            0x50040000  0x00400000  0x00200000 (  2MB) 0x00400000
 filesystem        0x50240000  0x00B00000  0x00CC0000 (12+MB) 0x00000000
 sysconfig         0x50F00000  0x50F00000  0x00040000 (256KB) 0x00000000
 LudeBoot          0x50F40000  0x00100000  0x00060000 (384KB) 0x00100040
 LudeBoot config   0x50FA0000  0x50FA0000  0x00020000 (128KB) 0x00000000
 RedBoot config    0x50FC0000  0x50FC0000  0x00001000 (128KB) 0x00000000
 FIS directory     0x50FE0000  0x50FE0000  0x00020000 (128KB) 0x00000000
view · edit · print · history · Last edited by rwhitby.
Based on work by rwhitby and dyoung.
Originally by rwhitby.
Page last modified on November 26, 2006, at 09:24 AM