In my previous article, I showed how to get a command prompt on the NSLU2 by using a hidden option and editing the password file in an external system. In this article, we'll continue exploring the box with the goal of adding new functions to make it even more useful.
Since the box runs a version of Linux, there are a whole host of software packages that one could install on the system. One could envision expanding the web server on the box for custom applications, or perhaps installing a ftp server or a secure shell server to replace the telnet server. My first goal was to install a different network file system.
As delivered by Linksys, the only support provided is for SMB - the network file system protocol that is native to Microsoft Windows. Since my home network is mostly composed of UNIX-based machines such as Apple's Mac OS X and Linux, a natural extension for me is NFS, the network file system native to most UNIX systems.
But before we can start installing new packages, there are a few difficulties to overcome. The first thing we'll have to do is set up a development environment, since we'll be building the required packages. The rest of this article assumes that you have followed the previous article and have enabled telnet on your NSLU2.
Determining the Target Processor
Linux is the most natural environment for developing software for another Linux system so I'll do this from my Mandrake development box. Unlike most Linux development systems, the NSLU2 is not x86 based, so we'll have to install a cross-compilation toolchain.
The first step in setting up a cross-compilation toolchain is determining the target processor. Reviews I had read indicated that the processor was an Intel IXP420 Network Processor. But to tell you the truth, that didn't mean much to me, since it sounded more like a marketing term.
Since we can now log into the box, we can poke around and see what Linux thinks the processor is. The /proc filesytem is invaluable for this. One file of interest is /proc/cpuinfo. Reading it is easy :
# cat /proc/cpuinfo Processor : XScale-IXP425/IXC1100 rev 1 (v5b) BogoMIPS : 131.48 Features : swp half thumb fastmult edsp Hardware : Intel IXDP425 Development Platform Revision : 0000 Serial : 0000000000000000
That didn't tell us much more than we already knew, but it does validate previous reports regarding the IXP425. To get further, we'll have to take a different tack. A handy utility on most UNIX systems is file, which examines a file and tells you what kind of file it is based on the initial data in the file.
The NSLU2 doesn't include the file program, but it does include ftp. So using ftp, we can move an executable over to our development platform. Try moving over our favorite little program, telnet.cgi from the directory /home/httpd/html/Management. Once this is on your development system run file on it to see what it thinks:
# file telnet.cgi telnet.cgi: ELF 32-bit MSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), stripped
That's better. Now we know we're dealing with an ARM CPU so we'll have to install an ARM cross compilation toolchain.