Here is the slide deck I used for the NSLU2 hacking talk when I gave it at LUV the other night: australia_melbourne_luv_nslu2.ppt.
So, once you’ve Debian bootstrapped the NSLU2 slug, there isn’t any way I can see to get new kernel modules for DebianSlug. However, you can download the unslung kernel modules, unpack them and use the kernel module from that. Unpacking looks like this:
wget "http://www.student-zw.fh-kl.de/~pasc0010/debianslug/kernel-modules/ kernel-2.6.16_preempt/kernel-module-raid1_2.6.16-rc4-git9-r0.0_ixp4xxle.ipk" ar -x kernel-module-raid1_2.6.16-rc4-git9-r0.0_ixp4xxle.ipk tar xvzf data.tar.gz cd lib/modules/2.6.16/kernel/drivers/md/
And there you go.
Debian bootstrap is easy, but time consuming on the slug. That is all.
In the previous post I mentioned that I had a couple of bad experiences with the Debian installer and the Linksys upload web page. Luckily, it’s really easy to recover from these. You do that with the magical RedBoot sequence (RedBoot is the boot loader the slug uses). Do something like this:
Download the Linksys firmware from their web site. I tried this technique with the Debian installer image and it didn’t work, so I only know it works with the Linksys firmware. Put that firmware on a web server on your local LAN which the slug will have access to. Then, connect to the boot loader. You do that by running this command…
sudo arping -f 192.168.0.1; telnet 192.168.0.1 9000
…and then power cycling the slug. You’ll end up with this:
$ sudo arping -f 192.168.0.1; telnet 192.168.0.1 9000 ARPING 192.168.0.1 from 192.168.0.100 eth0 Unicast reply from 192.168.0.1 [00:0F:66:7D:1E:09] 10.717ms Sent 17 probes (17 broadcast(s)) Received 1 response(s) Trying 192.168.0.1... Connected to 192.168.0.1 (192.168.0.1). Escape character is '^]'. == Executing boot script in 1.670 seconds - enter ^C to abort ^C RedBoot>
You have to be pretty quick on the draw here with the control C, as you have about 2 seconds to hit the sequence before the slug starts to boot normally instead. Now that you’re logged in, you can download the new firmware:
ip_address -h 192.168.1.100 The IP of the HTTP server load -r -v -b 0x01000000 -h 192.168.0.100 -m http /NSLU2_V23R25.bin Load the firmware file fis write -f 0x50060000 -b 0x01060000 -l 0x7a0000 Write it reset Reboot
And you should be back at the Linksys firmware. Note that you will still have the network settings that you had set before…
I’ve been sitting on a Linksys NSLU2 for a few weeks until I time to hack at it. That time came today. The NSLU2 (called a slug) is a Linksys NAS device, which runs Linux natively. There are two USB 2.0 ports, and a wired ethernet port. The CPU runs at 133MHz normally, but that can be bumped up to 266MHz by removing a resistor from the board. Thanks for the NSLU2 Linux project you can also run your own distro on them, and do cool random things. Oh, and they’re cheap at about $60 to $90 US.
So, let’s talk about the install of Debian on this thing. First off, you need to use the Linksys user interface to configure the network settings. I recommend a static IP, because otherwise it’s going to use DHCP, which will make it hard to find later…
There is a Debian installer option, which uploads firmware via the Linksys web interface, and then you run through the installation with ssh. That’s a great idea, and I would be much more keen on it if it had worked. I gave it a couple of tries, and then declared it not working.
Instead, I went for the DebianSlug image, which isn’t as Debiany as the Debian installer option. Think ipkg instead of dpkg. You need to grab the firmware image, and a program called upslug2, for which you can find a source download at SourceForge. Do the normal source building thing with upslug2.
Next, you need to grow another arm, and try the magical reset sequence, which is documented under the heading “Flashing the image” on this page. Then, run upslug like this:
$ sudo ./upslug2 -i path to firmware image from before Password: LKG7D1E09 00:0f:66:7d:1e:09 Product ID: 1 Protocol ID:0 Firmware Version: R23V63 [0x2363] Upgrading LKG7D1E09 00:0f:66:7d:1e:09 . original flash contents * packet timed out ! being erased - erased u being upgraded U upgraded v being verified V verified Display: <status> <address completed>+<bytes transmitted but not completed> Status: * timeout occured + sequence error detected 7983f+000000 ...u------------------------------------------------------------
This takes a while. Be patient, it probably hasn’t crashed. Probably.
The slug will reboot, and now you can ssh into it to play. Use the username root, and the password opeNSLUg. At this point it’s a useful computer, and you can keep it like this if you don’t mind using ipkg for everything and dealing with the rather limited set of packages available. If you need pointers on where to go from here, then I recommend you try a turnup help on the command line, and play with ipkg update and it