Running Linux In A DOS Partition
Turn That Old 486 Into A Internet Server AND A Linux Development system -- Also, The JOE Editor And Solving DNS Woes
By Trevor Marshall
June 14, 1999
In my first column, I started to describe some of the problems you will have to overcome in setting up that old 486 box as a Linux-based Internet server and gateway. Not the least of these problems is what flavor (distribution) of Linux to choose and how to boot the Linux on your machine for the first time.
The new GUI-based Linux distributions are very comprehensive, but they always leave me uneasy. The installer does a superb job working its magic, but I can't help but worry about the level of trust I had when I allowed it to take control of my hard disk.
It's like jumping into a swimming pool hoping that you will be able to swim. What if the Linux doesn't boot? Will the 486 have enough power to run both the Linux and the GUI? What if I can't understand what the installer did?
What low-level OS tools will it install for me? What if I need to change something subtle in the configuration? Granted, there are versions of Linux small enough to fit on a single bootable floppy disk. But these are very limited, with only a bare minimum of utilities, no compilers, and usually no manuals.
I will describe a small Linux in a future column, but at this point it makes sense to go for a more comprehensive Linux implementation since the 486 has enough power to run Linux quite well, and, unless you are trying to run a Secure Apache-SSL Server (SSL uses a lot of floating point), there is going to be plenty of CPU left over to run a fairly comprehensive command-line-based development system. (I.e., not KDE, GNOME, etc.)
For now, I'm going to stick with my preferred "runs on the existing DOS partition" constraint.
There is a little-known distribution of Linux (Zipslack) that will
install itself onto a DOS partition and co-exist gracefully with DOS.
It contains full C, C++, and Perl development environments in addition to a full set of documentation, but doesn't have any unneeded fluff. Before all the Linux purists tear me apart, I must acknowledge that this approach will not give you a high-performance Linux implementation. The DOS filesystem is slow. It is not as rugged as a Linux filesystem. But it does work. And it works well. I merely copied the .ZIP to my old 486, unzipped it, edited and executed LINUX.BAT, and up came Slackware Linux v2.2
When you feel comfortable with your configuration, there is documentation in the ZIP that explains how to partition the disk so it also has a Linux partition, and then migrate the existing Linux or install some other distribution, e.g. Caldera, Debian, Red Hat, Slackware.
Tweaking is almost too easy. The configuration files in /etc/rc.d/ can all be edited from DOS, so if you change something that causes a fatal error, you can reboot under DOS and change it back again. Even if the Linux itself refuses to boot, you can see the whole Linux directory structure under DOS and easily navigate to the correct directory and edit the file you broke.
You can download Zipslack.zip (36 meg) from ftp://sunsite.unc.edu/pub/Linux/
distributions/slackware/zipslack/ if you cannot find it on a nearby Linux distribution CD.
Copy it into the root of your DOS disk. Don't bother about the other files in the Zipslack distribution directory. You don't need them.
Don't use PKUNZIP to unpack it. PKUNZIP fails to handle large files. There is a copy of a suitable UNZIP.EXE on my system that you can download. It will take at least an hour to unzip all the files. It doesn't matter how fast your CPU is, the hour is all taken storing the Linux files on your DOS filesystem. Go make a cup of coffee or play Tetris on another machine.
UNZIP will create a directory called LINUX on your hard disk. Go into that directory with any DOS editor and edit the file called LINUX.BAT. You need to add a REMark in front of the configuration line saying that it will boot from a ZIP device and remove the REM from the start of the following line
REM /linux/loadlin /linux/vmlinuz root=/dev/hda1 rw
in order to tell the Linux Loadlin loader that it will look for the kernel on your default DOS hard disk.
Then give the command
and the batch file will execute, booting up Linux and dropping you to the command prompt. Log in as root, there is no password. Set a password immediately using passwd root.
Your first task, getting Linux running, has been completed.
Now you can start to customize the configuration bootup files. The commands
cd /etc/rc.d/ ls -al
will get you a listing of rc.inet1 and the other principal network configuration files. Also look carefully at the /etc/ directory. When you are satisfied, you can find your way around, then shutdown the system with
shutdown -h now
and hit the reset button to reboot DOS. When you look at the DOS directory structure you will find
the same rc.inet1 file, but with a DOS compatible name that is not too garbled. I am amazed by the way that the Loadlin developers have integrated the two file systems. Sure, you have to use your imagination a little, but isn't that why you are reading BYTE.COM ?
Last month I mentioned that I would look around for sites
that would act as primary and secondary DNS nameservers. Dave Blankenship left a message on my Bulletin Board pointing out that www.granitecanyon.com offered free DNS, both primary and secondary. I have since moved all my own domains to granitecanyon, but I recommend that you do not use ns2 on its own. If you set granitecanyon to only be a secondary server, ns1 is a more reliable secondary than ns2.
There have also been questions left on my Bulletin Board about commercial, pre-configured, dial-up Linux gateways. I briefly tried out the package from www.e- smith.net and it worked fine with my dialup to Earthlink. Moshe Bar is working on testing a number of similar packages, so keep an eye on his column if you are looking to buy support for a gateway that is easy and quick to set up.
JOE, My Preferred Linux Text Editor
Several years ago, after I was hurling obscenities at vi for munging yet another of my files, Dion Whittaker introduced me to JOE. JOE is a superb ascii text editor for Unix written by Joseph Allen. It has all the power of vi but uses the command sequences of Wordstar and the Turbo Tools with which I have become so familar over the years (I just love hitting that control-Y keystroke). It is somewhat like Emacs, but doesn't have a steep learning curve. Lazy is my middle name, so I immediately adopted JOE and have never looked back. It is lightning-fast, even over a Telnet connection. You can get the Linux distribution of Joe from a variety of places, including http://trevormarshall.com/joe2.8.tar.Z.
I have put together a bare-bones Linux version of JOE just in case you don't have a means to compile the tar archive. It is at http://trevormarshall.com/joe_bare.zip and it contains just the executable and configuration files.
Unzip it in your DOS partition and copy the files to their correct locations under Linux. The JOE file names are fully compatible between the DOS and Linux partitions.
JOE under DOS - fewer unhappy returns
Some of you might have been wondering why I was saying that it was easy to edit the Linux configurations under DOS. After all, most DOS editors stick carriage returns into the ASCII files rather than just using linefeeds, and this causes Linux to complain most vigorously. Again, Joe comes to the rescue because there is a DOS version at http://trevormarshall.com/joe2x2.zip
that does not have this nasty habit. With JOE, you can edit the configuration files under DOS or Linux, it doesn't matter. Next Time
In the next column, we will start working through Linux's configuration files and talk about the similarities and differences between the various major flavors of the OS.
Trevor Marshall is an engineering management consultant, with interests ranging from RF and Hardware design to Linux internals, Internet infrastructure, MPEG, and Digital Video. He started his career in the '70s, designing the Maplin Electronic Music Synthesizers. When the Microcomputer came along, he got sidetracked into computer software, programming the 2650, 8080, Z80, Z8000, 8048, 8306, 6805, 80x86, and Power PC families. Along the way, he also picked up a little expertise in RF system design, biomedical engineering, and the printing industry. His web site is www.trevormarshall.com. Page 1 of 1