1
The Linksys NSLU2 is a small ARM based gadget which has one Ethernet and
2
two USB ports. The idea is to connect an external hard driver through USB
3
and use the device as a small server. It's very popular because you can
4
get it for under $100. There is a large user community at
5
http://www.nslu2-linux.org/
7
The firmware is based on RedBoot but there is also functionality which
8
allows you to put the device into upgrade mode and then upgrade the
9
firmware via the network. There's a utility in Debian called upslug2 which
10
can do this. Even though the NSLU2 is based on RedBoot, there are some
11
restrictions we need to work around. Instead of using the FIS table to
12
locate the kernel and initrd, specific values of their locations are
13
hard coded. In practice, this means that there is only 1 MB of space for
14
the kernel because the initrd starts 1 MB after the kernel.
16
Since we want to use a generic ixp4xx kernel, we've worked around this
17
limitation by using a 2nd boot loader, APEX. We put APEX in flash at the
18
point where RedBoot loads the 'kernel' from and then we split the kernel in
19
two parts - this is because NSLU2's RedBoot excepts to find a specific
20
header at the start of the initrd and the kernel will use this space now.
21
Effectively, this means that there is:
22
- A partition for APEX
23
- A partition for the kernel: the kernel is split in two and each parts
25
- A partition for the initrd
27
A description of the NSLU2's flash layout can be found at
28
http://www.nslu2-linux.org/wiki/Info/BootFlash
30
There is also a problem with Ethernet: the ixp4xx chip has built-in
31
Ethernet but requires a microcode. Up until recently, there was only a
32
driver from Intel, but now a GPLed driver that is aiming for mainline
33
inclusion is available. It's still not clear how to handle the microcode
34
but at the moment unofficial images with it are distribution from
37
Apart from this, the NSLU2 is pretty easy to support.