![]() |
SlugImage is a Perl script for manipulating NSLU2 firmware images. The proposed feature set is:
Usage: slugimage <options> [-d|--debug] Turn on debugging output [-q|--quiet] Turn off status messages [-u|--unpack] Unpack a firmware image [-p|--pack] Pack a firmware image [-l|--little] Convert Kernel and Ramdisk to little-endian [-F|--fatflash] Generate an image for 16MB flash [-i|--input] <file> Input firmware image filename [-o|--output] <file> Output firmware image filename [-b|--redboot] <file> Input/Output RedBoot filename [-s|--sysconf] <file> Input/Output SysConf filename [-L|--loader] <file> Second stage boot loader filename [-k|--kernel] <file> Input/Ouptut Kernel filename [-r|--ramdisk] <file> Input/Output Ramdisk filename(s) if using jffs2 Ramdisk (i.e., Debian Installer), or [-r|--ramdisk] Flashdisk:<file> Input/Output Flashdisk filename(s) if not using jffs2 (i.e., SlugOS BE/LE) [-f|--fisdir] <file> Input/Output FIS directory filename [-m|--microcode] <file> Input/Output Microcode filename [-t|--trailer] <file> Input/Output Trailer filename [-e|--ethaddr] <AABBCCDDEEFF> Set the Ethernet address old version information left below: command line: --pack (-p), --unpack (-u), --input (-i) = <8mb-image.bin>, --output (-o) = <8mb-image.bin>, --redboot (-b) = <redboot.bin>, --sysconf (-s) = <sysconf.bin>, --kernel (-k) = <vmlinuz>, --ramdisk (-r) =<ramdisk.gz> (don't write partition table in this case) or --ramdisk (-r) =Ramdisk:<ramdisk.squashfs>,Rootdisk:<root.jffs2>,Userdisk:<user.jffs2>,... (write the partition table with the names given), --trailer (-t) = <trailer.bin>, --macaddr (-m) = 00:00:00:00:00:00 You can download SlugImage from the unslung CVS. Here is an example that I used for extracting all the separate parts out of an 8MB binary image, using Debian 4.0 Installer from the D-I howto page. Note that I did this all from within cygwin. I wanted to use cygwin because my work laptop had a parallel port, TFTP server, TeraTerm (supported), etc. (needed for NSLU2 hacking). Note here that I used the -i option (for input file). Also note that Debian images have a Ramdisk not Flashdisk (as in slugosbe/slugosle). $ ./slugimage.pl -u -i di-nslu2.bin Read 2 blocks into <RedBoot> Read 0x00006 bytes into <EthAddr> Read 1 blocks into <SysConf> Read 0x1FFE0 bytes into <Loader> Read 11 blocks into <Kernel> Read 32 blocks into <Ramdisk> Read 1 blocks into <FIS directory> Read 0x00010 bytes into <Trailer> Wrote 0x00040000 bytes from <RedBoot> into "RedBoot" Wrote 0x00020000 bytes from <SysConf> into "SysConf" Wrote 0x0001FFE0 bytes from <Loader> into "apex.bin" Wrote 0x00140004 bytes from <Kernel> into "vmlinuz" Wrote 0x00400000 bytes from <Ramdisk> into "ramdisk.gz" Wrote 0x00000010 bytes from <Trailer> into "Trailer" Note that the files shown above have (with "Wrote..") been extracted into the directory where di-nslu2.bin was located. If you want to replace something (i.e., let's say Apex 2nd stage boot loader with newer version), then use the -o option (output) parameter. Now, I just have to replace the apex.bin with the one made for Apex 1.5.13 (called "apex-debian-nslu2-arm-1.5.13.bin"). $ slugimage.pl -p -o di-nslu2-newapex.bin -b RedBoot -s SysConf
-L apex-debian-nslu2-arm-1.5.13.bin -k vmlinuz -r ramdisk.gz
-t Trailer
NOTES
view ·
edit ·
print ·
history ·
Last edited by Rob Lockhart.
Based on work by Rob Lockhart, fcarolo, Phil Endecott, yaasel, rwhitby, Bush, Bill, marceln, hgfjf5, Poutnik, spam, dfgdgaw, Gerbil, dsafsfd, PatrickSchneider, Mike Frysinger, djoek, jacques, tman, and dyoung. Originally by jacques. Page last modified on May 11, 2008, at 12:51 AM
|