OMG, Kernel modules

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 "
    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.

Recovering from a bad flash

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; telnet 9000

…and then power cycling the slug. You’ll end up with this:

    $ sudo arping -f; telnet 9000
    ARPING from eth0
    Unicast reply from [00:0F:66:7D:1E:09]  10.717ms
    Sent 17 probes (17 broadcast(s))
    Received 1 response(s)
    Connected to (
    Escape character is '^]'.
    == Executing boot script in 1.670 seconds - enter ^C to abort

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      The IP of the HTTP server
    load -r -v -b 0x01000000 -h -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…

Slugging away

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
    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
        <status> <address completed>+<bytes transmitted but not completed>
        * 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
s friends ipkg list and ipkg install. There are more instructions here if you want them.