“How many nets could a NetWinder wind if a NetWinder could wind nets?”--Dan Wilder, SSC Technical Manager
Price: $1000 US
Reviewer: Jason Kroll
“How many nets could a NetWinder wind if a NetWinder could wind nets?”--Dan Wilder, SSC Technical Manager
And furthermore, what is a NetWinder? A NetWinder is a StrongARM-based Linux box, built as a network server. NetWinders come in three models: OfficeServer, Developer and ThinClient. Of these, the OfficeServer and Developer models are the familiar NetWinder server boxes, while the ThinClient is a new creation, a graphic terminal the size of a notebook, which one would presumably use with an OfficeServer. The Developer model is an expanded OfficeServer designed, as one might infer, for developers. It has more interfaces and development tools, as well as an active developer community. The OfficeServer, our subject for today, is the standard NetWinder, a device on which to run your networks, whether they are dozens of office computers or just a few terminals around your house.
Any old Linux box can function just fine as a server (at last estimate, more of the Internet was running on “any old Linux box” than anything else), but the NetWinder isn't any old Linux box. The core of the NetWinder is the StrongARM architecture, RISC technology developed cooperatively by ARM and DEC (although DEC was bought by Compaq, Intel now produces StrongARMs). We'll get into the technical details of the chip later, but it's important to appreciate some superficial differences in the processor which enable the NetWinder to be so compact. StrongARM is popular with embedded systems because it runs on little energy and stays cool. Hence, the NetWinder can be tiny and resource-minimal, important factors since it is designed to be on all the time. It is intended to run headlessly; that is, without a monitor. Users need not know anything about Linux to use a NetWinder, and they may never even know which software it's running—it's just a small magic box, exactly what most people want. Before we open up the magician's funny box to see how it works, let's look at what it does.
Late one morning, my co-workers heard me whining quite loudly about my difficulties compiling some software on the NetWinder, followed by, “Good grief! It hasn't even got Netscape!” Needless to say, something had to be done to quiet me, so a fellow suggested, “Why don't you use it how it's supposed to be used?” In honor of this fellow, we shall now use the NetWinder as it's meant to be used; that is, as a headless Internet, file and print server.
Configuration of the NetWinder is fairly simple. As long as you assign the NetWinder a valid IP address, you can plug it in and immediately point a web browser at it. Configuration is supposed to take place under Windows, but it can be done through any browser. I actually prefer to plug in a monitor and keyboard, edit a couple of files and have it up in short order. However, if you know nothing at all about Linux, the web-based interface will walk you through the installation. Although I have heard reports of some people having trouble installing the NetWinder, I hardly had to do anything to it. Perhaps I have a more recent edition.
Once initially configured, the NetWinder will cheerfully perform (well, our last lightning storm that allegedly downed MS's “hacker-proof” box also rebooted the NetWinder), and if you want to make any changes, point your browser to its address and log in. You can log in as a user or as an administrator. The user menu offers directory information, infoplace document organization, discussion group access, user profile access, a search menu and on-line help. What these things do is self-explanatory; they exist for generic users and office people, and the menus are clear and simple.
The administration mode menu is essentially root, with menus for editing user accounts, group data, host information, system management, service availability and network configuration. Again, the submenus are clear, allowing you to turn services on and off at a single click. Using the NetWinder web interface is as easy as accessing the web page of a printer (you may have noticed the curious trend of printers having their own web servers). One might expect a network server to be complicated, but it's not. Maybe that's the point of the NetWinder; it's not necessarily more powerful than a standard Linux box, but it's so accessible it makes the power of Linux available to those who have not devoted years to the study of UNIX-Linux networking power, with point-and-click simplicity.
What can you do with a NetWinder? Let's say you're rich from past mining exploits and you've got a mansion with over 60 rooms, some of which you would like to wire for the Internet. There's been a mammoth copy party and the guests have left computers all over: some Macintoshes from pre-Linux days, a dozen Linux machines, a couple of FreeBSD and NetBSD boxes, and even something running BeOS. An evil spirit that haunts your house insists on running Windows in the attic, so let's pretend you've got an NT box up there. While looking for a solution, you suddenly hear a child's voice say, “Welcome to NetWinder!” (which you'll hear every time you boot). Suddenly, you realize you are now ready to network all your machines.
First, get a really big hub and an ISP account with high-speed access: for example, DSL or cable modem. I recommend not wasting any effort on ISDN. If you already have a LAN, you can add the machine to the network and use the web interface to set everything up. Otherwise, hook up a monitor, keyboard and mouse and try manual configuration, either directly through editing files or with the nwconfig program. As soon as you can get to the NetWinder with a web browser, you can configure everything quickly. Plug the 10 BT Ethernet into your DSL or cable modem (or use the serial port if necessary), the 100 BT Ethernet into your hub's uplink, then plug all your computers into the hub. Configure individual addresses and names for them, and you've got a network.
Presumably, you also want services. The NetWinder menus and manual explain how to set up services. The obvious things to start with would be the Web and e-mail, since these seem to consume most on-line interest. Apache is always running so you can reach the administration menu, but you can also run a generic web site with it through virtual hosts; there's even a web page creator program, although it's not exactly advanced. Hence, residents in your house can have their own web pages. E-mail is simple to set up; just enable SMTP through the administration menu, and point your local mail reader to the NetWinder. To read the mail from your terminal (instead of logging in to the NetWinder as a user), enable POP-3 or IMAP services and tell your local mail reader the NetWinder's address. You can establish e-mail forwarding and filtering and even set up automatic response messages for when you're away.
The NetWinder can do whatever you expect of a Linux box, including file and print sharing across UNIX, Macintosh and Windows machines. Advanced administrators can do various things, from establishing BBS-like threaded discussion forums to rather bureaucratic things such as imposing quotas all over the place. Using the NetWinder as it's designed to be used won't disappoint, but would these machines be viable as home computers?
The NetWinder has almost everything you could want for a home computer, except the software. The OfficeServer has Ethernet ports, serial and parallel ports, PS/2 keyboard and mouse ports, and even an infrared receptor (presumably for wireless keyboards that aren't supported), but it is missing some software. The most glaring omissions are Netscape and gdb, although I am told that Netscape should be ported soon and I suspect gdb was left out by mistake. Also, the NetWinder's distribution is an old Red Hat with FVWM95-2, and that's so passé these days. Debian works on the StrongARM and is now the number-one choice of hackers, so Rebel.com ought to modernize a bit. Anyhow, window managers and the Web enthuse me less than RISC chips, so I thought I would learn about the chip by using gdb, but that was not to be. However, I did find out about the chip through some e-mails and a process someone called “reverse engineering” (writing C programs, compiling with gcc -S, and deciphering the chip from there).
If you haven't seen RISC assembly code before, it may be strange to see so many operands on a single line. After all, CISCers are used to simple syntax like MOV A,B (or MOV B,A). RISC technology, by comparison, allows you to specify several operands on a single line as well as communicate more than just the usual relative, absolute and immediate addressing information. Although many hackers these days avoid learning assembly code (ESR recommends C, Python, Perl and LISP in his advice on how to be a hacker), it is difficult to appreciate operating system design without such knowledge. Of course, someone has to know it or nothing could get implemented. When porting Linux to a new platform (such as StrongARM), assembly code is more important than is usually the case.
One fault of Linux that Tanenbaum criticized (not the least politely) back in 1992 was that Linux was platform-specific, that is, a monolithic kernel for Intel 386. Today, Linux has been ported to several hardware platforms, and the kernel is more modular. We need to be familiar enough with assembly code to be able to do the porting and debugging work, and we must not get too dependent on it, lest we write too much platform-specific code. The idea is, Linux is superior to any hardware platform, so we use a cross-platform assembler (meaning C) for the code and limit our involvement with the specifics of the chips. (This way, when the x86 dies, Linux lives.) Nevertheless, RISC chips are simple, with only a few instructions, yet one can do so much on a single instruction. RISC technology, particularly in the context of parallel processing, is affiliated with the microkernel, and hopefully we will see more of both in the future. In the meantime, let's get back to the chip.
The StrongARM SA-110 has the following features:
16 32-bit registers for user programs (r0 through r15)
21 basic opcode types, including 63 of what we would typically consider opcodes in the CISC world (which when multiplied by 15 conditionals would represent 945 instructions), with a host of other operations available
one of fifteen conditionals available for every opcode
2.1 million transistors (RISC economizes on transistors, which is a bit ironic these days)
32KB of cache (16KB for instructions, 16KB for data)
a 233 MHz operating speed, overclocked to 275 MHz on the NetWinder for 250MIPS (million instructions per second)
The SA-110 has no math coprocessor. The chip performs extremely well on tasks where the instructions and data can be entirely cached and no floating-point operations are involved. Tasks involving too much code and data to make use of the cache become slow, and floating-point operations grind the chip to a halt. While some of these differences have to do with how well the Linux kernel and gcc jive with the chip set, without an FPU, a chip is disadvantaged (but the StrongARM excels at floating-point emulation, if you code specifically for it). If you check out the benchmarks (see Table 1), you can see how scattered the results are. I would not rest too much on them; the machine is quite perky, despite its typically lower than K6/233 scores. My favorite benchmark, the chess test, has NetWinder evaluating between 17 and 19 thousand positions every second (about one million per minute). Rebel.com expects to have 600MHz StrongARMs soon, and if the micro-architecture techniques get seriously improved (low power consumption and desire to avoid pipeline stalls make speculative execution and multiple branch prediction respectively impractical, though unique qualities of ARM could make other tricks possible) and the processor visits the debugger, future NetWinders should be much faster. (But then again, how much processor power do you need for e-mail, web, file, print, FTP and TELNET services?) The machine in question has 64MB of memory (34.8MB free), with most services turned on. As for disk access, Table 2 shows what Bonnie reports.
As you can see, the results are sporadic, with the processor scoring lower than a K6/233 in many cases and the disk drive operating much slower than a typical desktop hard drive. In spite of the low benchmarks, the machine has never lagged on me and does its tasks quite well. This is probably one case where the benchmarks don't mean very much, unless you plan on using the NetWinder for crunching numbers and maintaining huge databases. The chip set is fun to use, and I think hackers who are interested in the StrongARM might like to take a look at these machines, as well as anyone who wants a simple machine for use as a server.
The joy of C is that we can bring programs written in it across hardware platforms without too much difficulty. This means Linux should be able to hop onto the 64-bit architectures fairly well. Desktop machines appear to be heading in the Alpha and Itanium direction (is anyone else frustrated by Intel architecture?), which bodes well for proponents of RISC. Ideally, we will be heading in a microkernel direction as well. What does this mean for the 32-bit StrongARM? Well, there's an active development community bringing Linux to StrongARM. At http://www.arm.uk.linux.org/, you can find the latest details, including screen shots of Enlightenment running on a NetWinder, along with support for Acorn, Archimedes, A5000 and various other ARM boxes. Intel makes StrongARM right now but is pushing the IA-64, while Compaq has recently been pointing out that Alphas are truly nice processors. It seems as though the Wintel stranglehold on operating systems has now been broken, and we are seeing more freedom in the chip area as well (even Intel finds itself with more freedom). As long as we keep Linux available across numerous chip sets (without network externalities favoring one too heavily over the other), we can offer a freedom to choose in the chip arena, which theoretically should get us on better chip sets at lower cost. As long as instruction sets stay free from patent and copyright restrictions, we chip users should expect more happiness. In any event, at least we're moving in a RISC direction, so the next logical steps would involve multiple processors on the hardware end and microkernel design in the software arena. The StrongARM itself seems destined largely for embedded systems, but since embedded systems are a strong point of Linux (for one reason, we have no licensing issues), it's good to keep it supported.
If you get into StrongARM programming, you'll find yourself able to use four operands with one opcode (or more if you get into coprocessor instructions) and do things in a single line that would have taken several in x86 or other CISC chips. One thing I like is being able to perform a bit shift on the same line as a command. For example,
sub r1, r2, r3, lsl r4
would logically shift r3 to the left by the number in the lower byte of r4, subtract this from r2, and put the answer in r1. This is just one example of the efficiency of one command line in ARM (and other RISC) instruction sets. Additionally, all instructions are conditional (checked against the CPSR, current program status register) and you can specify one of 15 conditions for each instruction. Again, we're not supposed to get too dependent on assembly code, but at least this one is fun to use.
No matter how Linux-based the NetWinder might be, it could stand a couple of improvements. For one, the graphics driver displays a VGA console with a 60Hz refresh rate, and that's too slow. Also, when scrolling quickly through a text file in vi, the NetWinder can skip a line; you might think you're editing one line, but when you save the file, you discover you've actually rewritten the line directly above. The perkiness and fast scrolling qualities are nice, so I hope there is a solution to the line-skipping problem other than slowing down the terminal. As for distributions, it has been mentioned that Debian would be preferred, and a modern window manager would be nice. I hope the newer StrongARMs get faster and their unique design doesn't make it too difficult to implement useful micro-architecture techniques which could accelerate the chip considerably. It's a nice design, and I wouldn't mind seeing these chips in 64-bit.
As for the software, criticisms of the UNIX model attack its accessibility rather than its performance. The neat thing about the NetWinder is that it brings accessibility to Linux networking. If free software developers looked at the NetWinder model and developed similar easy-to-use interfaces for configuring a network on generic Linux boxes, Linux might come across as less intimidating. The fact remains that computers could be of service even to people who don't want to devote their lives to them. Imagine if, without any knowledge of Linux or UNIX, you could use a web browser and a cable modem or DSL to have your own permanent net presence. At a click, you could turn services, firewalls, web pages, e-mail services, printers, etc. on and off. Essentially, this would have many of the practical rewards of learning UNIX, without all the work. This is already available with the NetWinder on StrongARM architecture, but it won't become widespread until it's free. I would recommend that Rebel.com release the NetWinder configuration software under GPL (not a pseudo-free license); otherwise, we might want to consider using it as a model for a free source project.
As an office server, it performs flawlessly. The web-based interface makes Linux networking accessible to non-UNIX types. The functions and features are based on the Linux kernel, GNU software and various other projects such as Apache. (This is the “it's Linux, it has to be good” principle—true once again.) The benchmarks gave the NetWinder fairly low scores, but these are misleading. The NetWinder is an inexpensive solution to the server problem. If you have the technical know-how, you might be able to do better for the price. For example, you could build your own server and configure it yourself, delivering a faster machine without too much effort. Still, if you want the web-based interface, small size, low power consumption, ease of use and corporate support, you'll do fine with a NetWinder. Developers could really have fun with it, although I would recommend the Developer model for them, since it's even more fun. We still have to see if a good web browser gets ported to the NetWinder before we know whether it will be a viable platform for normal Linux use. Nevertheless, NetWinders may be only the beginning of clever uses for ARM-based Linux. Try to get your Windows-using acquaintances to buy one of these; it could be the start of something cool.