Getting Small with Linux, Part 4
Welcome back, everyone, to another installment of "Linux in your pocket" here at the SysAdmin's Corner. This week, I want to wrap up (at least for now) our examination of tiny Linuxes with a look at a heavyweight in this micro-world.
With the exception of Trinux (which we covered in episode 2), all the distributions we've covered so far have concentrated on making it all fit on one diskette. While today's micro-Linux does qualify in this description of Linux on a single diskette, you can also expand its capabilities with add-ons. This is muLinux, brought to you by Italy's Michele Andreoli. With all the standard add-ons, muLinux weighs in at seven diskettes.
So, why is muLinux so interesting? Let me answer that with a partial list of what you'll find when you take the wrapper off (okay, it's a free download and there is no wrapper--I was trying to be poetic). Ready? Take a deep breath and read.
A full-featured muLinux contains the 2.0.36 kernel, supports umsdos, ext2, NFS, DOS and vfat file systems, handles printers and printing, full TCP/IP networking with support for several loadable Ethernet card modules, and has your basic collection of Linux commands like gzip and gunzip, less, mv, ls, tar, sort and so on. You also get a host of networking tools like traceroute, ping, telnet, rlogin, sniffit, nmap and tcpdump. You can even run inetd and offer telnet or ftp services. Need a PPP connection? No problem--it's on the floppy. So is diald, for those requiring dial-on-demand capabilities. There's also fetchmail, cron, efax, lynx (you have to be able to surf), a small web server, and even sound support.
Now, by using any or all of the six add-on packages available (each makes a single diskette), you can have a full X Window System with a couple of different desktops (AfterStep, fvwm95-2), a gcc compiler and distribution system, Tcl/Tk, Tex document processing, and VNC (Virtual Network Computing, covered in these pages way back when). Sometimes these add-ons provide muLinux with an excuse to throw a few more toys your way. For instance, the VNC add-on includes the zgv image viewer.
Did I mention that the whole thing runs in RAM?
To get your copy of muLinux, surf on over to http://sunsite.auc.dk/mulinux/ and pick up the latest version. I downloaded mulinux-8r3b.tgz, the latest release at the time of this writing. I also picked up the add-ons for EXT, GCC, X11, TCL, TEX and VNC (each has a .tgz extension).
Before you can boot up and run muLinux, you need to extract the files that allow you to create the diskettes. Start by creating a directory into which these files can be extracted. I see someone at the back with their hand up, asking, "Why do we need to do this?" I'll answer that with a quick sidestep before we get into the gritty aspects of making boot diskettes. (The old Linux hats may skip the next couple of paragraphs.) When you download a tarred and gzipped distribution like this, it makes sense to do a verification extract. For instance, using the above archive, I would use this command:
tar -tzvf /path_to/mulinux-8r3b.tgz
The listing would look something like this:
-rwxr-xr-x root/ipse 17092 2000-04-10 09:05:50 mu -rw-r--r-- root/ipse 575 2000-04-10 10:32:52 mu.cnf -rw-r--r-- root/ipse 612 2000-04-10 15:31:07 info -rw-r--r-- root/ipse 71 2000-04-10 15:31:07 free -rw-r--r-- root/ipse 341 2000-04-10 15:31:07 lilo.1440 -rw-r--r-- root/ipse 341 2000-04-10 15:31:07 lilo.1722 drwxr-xr-x root/ipse 0 2000-03-18 12:19:56 doc/ -rw-r--r-- root/ipse 18007 1999-01-09 07:13:44 doc/GPL-2.0 -rw-r--r-- root/ipse 1305 1999-04-12 17:55:53 doc/credits.txt
You get the idea.
Notice there is no top-level mulinux-8r3b, as you sometimes see in tarred bundles. The reason has to do with how the distribution was backed up in the first place. If you extract an archive that was stored using a relative path, you may find that the extracted files wind up in places you would rather not have them. muLinux is just such a distribution. If you simply extracted it anywhere, this distribution's structure would merge with whatever you already had in place, which may or may not be a bad thing (the scope of potential damage increasing if you are running as root). By doing a table of contents listing (the -t option to tar), you find this isn't under a nice mulinux directory at all. No problem; create the directory, cd to that directory and extract your files.
mkdir mulinux cd mulinux tar -xzvf /path_to/mulinux-8rb3.tgz
You should also copy all of your add-on files (GCC.tgz, etc.) directly into this installation directory. When this is done, simply launch the install program with the command
You will be presented with a menu of installation options like the following.
1) BOOT+ROOT+USR (1722K) 2) BOOT+ROOT (1440K) and USR (1440K) 3) BOOT+ROOT (1440K) and USR (1722K) 4) BOOT+ROOT (1722K) and USR (1722K) e) EXT (1722K) x) X11 (1722K) g) GCC (1722K) t) TCL (1722K) v) VNC (1722K) tex) TEX (1722K) q) quit
For my installation, I chose 1, e, x, g, t, v and tex. You need to do these individually, so no stacking of choices on the command line. In each case, the install script asks you whether it should "superformat" the diskette. This will create a 1722K file system on the diskette, rather than the more standard 1440K. The answer, by the way, is y for "yes".
When you've completed this step, pop the BOOT+ROOT+USR disk into the drive, and reboot. After the initial diskette load, the muLinux boot requests the various add-on diskettes (which, in each case, you can choose to ignore if you do not need the packages). Since you are loading the whole system into RAM, you will get warnings about certain packages, like X11, being a little hungry on memory. Just for fun, I decided to load everything onto a 64MB, Dell Pentium, 233 MHz notebook. No problems, so 64MB will hold the whole shebang without a hitch.
So far, it's not bad. The worst part of this process (for those of us who are impatient) is the question-and-answer period that follows. here are a lot of questions. It will ask you if you want to configure PNP, serial boards, modems, printers, the mouse device, gpm, printer support, sound, Ethernet, diald, network services and so on. It takes a while, but don't worry too much. When you are finished, you have the opportunity of saving all this information into a configuration file on the boot disk so that all this is remembered for next time. You choose the name of this configuration (I chose the original name of "default"), and use it the next time you boot.
A couple of inside jokes were left by the author throughout this process. My favorite is "configuration completed; reboot now to complete installation?" I know I'm giving away the punchline here, but it is funny, being asked to reboot after making configuration changes to a Linux system (and yes, I fell for it).
When you first install muLinux, you'll get tossed into the "welcome" menu. There's a lot of useful information here, including a tour of your muLinux documentation. The next time I booted, this informative little menu was gone. Luckily, you can call it back at any time with the welcome command. I'll let you wander around the documentation menu on your own later. In the meantime, quit out of this menu and drop to the shell. At this point, I changed my root password and made some modifications to the network settings I had chosen. Many of the configuration files can be found in the /setup/cnf directory. To record changes for future boots, use the setup command. To save my default configuration, I would simply type setup -s default.
Admittedly, one of the things that makes muLinux so cool is that you can actually run a fairly substantial set of X applications, including Chimera, a graphical web browser. Chimera is a little primitive, but given that my entire graphical Linux environment, document formatting, gcc development, etc. system fits on seven diskettes, I won't complain too much. Running the X server is fairly simple as well (and fast). This is a standard (read "extremely basic", or as the author likes to say, "rustic") VGA-16 X server and doesn't require a great deal of magic (other than the part during the initial configuration--another inside joke there, for those who are counting). To start the AfterStep server, I would simply issue this command:
Similarly, if I wanted to run the desktop meant to look like that other OS, the fvwm95-2 server, I would use this version of the command:
Working with muLinux took me back to the days when I installed a 20MB hard drive into my PC, and wondered aloud (I really said this): "what am I going to do with all that space?" Ah, nostalgia. I should probably start to wrap up here, but one thing sticks out for me. Whenever I log in or start an xterm, I get a fortune. That's okay. But ... the fortune program, which delivers what I am sure must be clever passages, does them all in Italian. I read "Per me si va la perduta gente" as "I'm one of the lost people," or "Don't follow me, I'm lost too." Take some time, tour around, and enjoy this little Goliath.
Memo to self ... must learn Italian.
Once again, I ramble far too long. Before I go, I would like to thank everyone for reading and for your feedback messages. As always, they are appreciated. Since I am leaving this world of tiny Linux for a while, I'd like to point you back to the tomsrtbt Linux page for a list of other tiny Linux sites. You can also find links on the muLinux page under Related Projects.
Next week, I'm going to use the idea of muLinux as the jumping-off point for a new series, "Linux for the Timid". Until then, remember, even the littlest Linux can measure up.
Free DevOps eBooks, Videos, and more!
Regardless of where you are in your DevOps process, Linux Journal can help!
We offer here the DEFINITIVE DevOps for Dummies, a mobile Application Development Primer, and advice & help from the expert sources like:
- Linux Journal
- Weapons of MaaS Deployment
- Ubuntu & SUSE & CentOS, Oh My!
- The Only Mac I Use
- New Products
- Easy Watermarking with ImageMagick
- Integrating Trac, Jenkins and Cobbler—Customizing Linux Operating Systems for Organizational Needs
- Promise Theory—What Is It?
- Tech Tip: Really Simple HTTP Server with Python
- RSS Feeds
- Returning Values from Bash Functions