Using Redboot to boot from the network (instead of Flash)
- NOTE: You still need Redboot in the first MTD partition of Flash
(IXP420 needs to get the code from somewhere). But,
vmlinuz/ramdisk.gz can be TFTP-downloaded from a server.
This may be helpful if you've corrupted your Flash MTD partitions
(other than the first one with Redboot). If your NSLU2 won't boot
normally, try connecting a serial port and using Redboot along with
a TFTP server.
1. Connect serial port via level shifter to "J2" on NSLU2 board
2. Start communications program on your PC (Hyperterm, for
example) at 115200,8,n,1.
3. Apply power to NSLU2
4. Press front POWER button on NSLU2
5. You may immediately see a single '+' character in your terminal
program (or, I may just be seeing power-on 'garbage' here). Go
ahead and hit control-C (^C) a few times
6. When Redboot starts up, it'll display a message about starting
in 2 seconds (unless you press ^C). If your ^C's were seen, it'll
stop the boot process/give you a prompt. If they weren't, go ahead
and hit ^C a few times now.
Once you've got the RedBoot> prompt, you should be able to TFTP load
a new vmlinuz (kernel) and ramdisk.gz. Once they are loaded, you
can (presumably - I haven't tested this) do an 'upgrade' to re-load
Make sure you have a TFTP server running on your network, and the
files 'vmlinuz' and 'ramdisk.gz' available on that server.
Now, type the following RedBoot commands:
ip_address -l 192.168.0.230 -h 192.168.0.210 -d 192.168.0.1
load -r -v -b 0x1d00000 vmlinuz
load -r -v -b 0x1000000 ramdisk.gz
The IP addresses in the first command are: the (static) IP of the
NSLU2 ("-l ip_of_NSLU2"), the IP of the TFTP server ("-h
ip_of_TFTP_server"), and the IP of the DNS server ("-d
ip_of_DNS_server"). My TFTP server is "192.168.0.210", and my DNS
server is "192.168.0.1". I've chosen to use "192.168.0.230" for my
The load address (0x1d00000) for vmlinuz was found by looking at
Redhat boot messages. The load address (0x1000000) for the
ramdisk.gz image was just a wild guess (first guess worked!).
The "go 0x1d00000" actually executes the vmlinuz image that was
loaded 2 lines up.
This should boot the kernel, decompress the ramdisk, and get you to
a point where you have a root prompt on the serial console. If you
have a hard drive attached, I think the NSLU2 will function
normally. I believe you should be able to do a 'code update' at
this point (via web interface) to re-program your Flash (which, if
you're doing all these steps, is probably corrupted).
If you can't do an update via the web interface, I believe RedBoot
can be used to re-program the Flash directly. Use the "load"
command to get the image from the TFTP server into RAM, then there's
probably a Flash command to burn the Flash (at least there is in
other (more 'full') versions of RedBoot - I don't know about the
Something else that *may* be possible (again, it's possible in full
RedBoot implementations): we may be able to set up a 'boot script'
to always TFTP boot from the network (instead of Flash). This would
be more convenient for people who are doing lots of re-building of
kernels/testing (no need for re-flash step between build & test).
I'll investigate this sometime in the future.
I hope this info is useful.