What you see booting up on screen is the start up of the one of the first Linux distributions,
the Softlanding Linux System, or SLS. SLS’s legacy would help form the basis of modern
Linux distributions. On those grounds alone, it merits a taking a Tlook at this interesting
piece of history. I’m your host, NCommander, and let us step back to 1991, with Linus Torvald’s
famous USENET post.
Linux was first released to the world with a post in the comp.os.minix group with the
following announcement:
Hello everybody out there using minix - I'm doing a (free) operating system (just
a hobby, won't be big and professional like gnu) for 386(486) AT clones.
Interest in Linus’s hobbyist project quickly exploded. It wasn’t long before there was
significant user interest in Linux. In and of itself, Linux is not a complete system.
Instead, it is what is known as a kernel. Kernels form the core of any operating system,
and in turn allow other software to be run. For Linux to be usable, it had to be combined
with other software, primarily that of the Free Software Foundation’s GNU project.
What Softlanding provided was what would become known as a Linux distribution: a pre-compiled
version of Linux, a set of core programs, and additional add-on software in one complete
package. Branding itself as giving “gentle touch downs from DOS bailouts”, SLS was
intended to lower the barrier of entry to use Linux.
Actually installing Softlanding Linux was something of an adventure. SLS was available
in three forms: floppy disk, CD-ROM, or as a QIC40 tape. Copies were also available as
a set of downloadable files from bulletin board systems. The last release, 1.05, has
only survived as such a download.
To actually install SLS, the downloaded files had to be converted back to usable disks.
The README file specifically notes how this is done, but to save myself a lot of effort,
I wrote a quick Python script to automatically remaster the media. This gave me a collection
of 31 floppy disks.
The second hurdle was actually getting this running. Early Linux has extremely limited
hardware support. For emulating older systems, I like to use Sarah Walker’s PCem, which
can use era correct hardware complete with BIOS support and a good selection of vintage
graphics adapters. I initially started with a Award 486 clone system to kick things off.
One thing that had been warned in what little notes I could find was related to time. At
least some versions of SLS have known issues relating to years past 1996 due to a faulty
leap year calculation. There are also some Y2K bugs. To save myself a lot of hassle,
I simply set the system clock back to 1994.
With that done, I put the A1 disk in, rebooted the system, and crossed my fingers. I was
rewarded with LILO’s startup prompt, and the Linux kernel slowly booting before being
dumped to a login prompt. According to a few notes I had found, I had to manually create
a partition with fdisk.
This wasn’t hard, but it did require the user to know how to use fdisk. In comparison,
even DOS of this era provided a graphical tool for this! One reboot later, and I was
able to format the root partition and kick off the installation.
The installer sets a nice green and black screen color, and then asks a few simple questions
to get going. However, it choked trying to setup a swap file. Nonetheless, I persevered,
and was told to remove the boot disk, and insert A2.
This began a long and slow installation process. And when I say slow, I mean S-L-O-W. As in
30 minutes of just sitting there just swapping the floppies.
It gave me time to contemplate the meaning of life. To catch up with my reading. To solve
the problem of … well, I think you get the point. It took awhile.
About 2/3rds of the way in, I hit a rather concerning error, where the installer suddenly
complained that “disk x2 couldn’t be found”. At the moment, I had x1 in, and the installer
had not prompted for x2. Changing the disk to x2 and retrying got the installation going
again. What I suspect is this is one of SLS’s many scripting and packaging bugs.
This is a good time to talk about the fall of Softlanding Linux. While SLS was very popular
at the time, it was also rather buggy. Slackware and Debian were both started due out of frustration
with SLS. I also personally ran into some rather obnoxious issues. The first one came
near the end of installation.
The final installation step of any Linux distribution is to install a bootloader. Softlanding prompts
to create a boot disk with the Linux kernel, before trying to install LILO. Creating the
boot disk worked, and install prompted me if I want to dual boot with DOS. It then installed
lilo. Rather critically though, it didn’t install it to the correct place.
On older PC’s, the initial boot code is contained in what is known as the Master Boot
Record which is the first 512 bytes of a hard disk. Without the MBR, the system would either
fail to boot, or as it did in my case, simply hang. What SLS actually does is install LILO
to the PBR, or Partition Boot Record, and tries to mark the partition as active.
Installing LILO to the PBR means a DOS boot record could be used to start the system,
but the end result means that DOS or another MBR would have had to be installed. Since
I started with a blank hard disk, I didn’t have Microsoft’s MBR installed, and this
led to the system hanging. In general, partition booting is unreliable at best, and a main
reason why later Linux distributions install LILO or Grub to the MBR and not to the PBR.
Rather annoyingly, I didn’t actually catch this mistake at the time. I had initially
written the problem off as a LILO issue. A lot of older systems would have issues loading
with LILO. The typical fix was either a dedicated boot disk, or the DOS-based LOADLIN. It wasn’t
until I was later debugging the network did eventually I find the mistake in lilo.conf
and correct it.
Regardless, with the boot disk, I was able to bring Softlanding up for the first time
and begin exploring the system. The only user is “root” with no password. Upon login,
we get a banner with Softlanding Software’s phone number and slogan, followed by instructions
relating to “mesh” and “syssetup”.
MeSH, which I assume stands for “Menu Shell”, is Softlanding’s attempt at easing new users
into Linux. At first glance, it bears a striking resemblance to the popular Norton Commander
for DOS. MeSH allows the file system to be browsed graphically, and provides shortcuts
for simple tasks like editing files. For someone migrating from DOS, this provides a pretty
good introduction to using Linux, and I have to give Softlanding credit here.
Even without using the built-in help, I was able to figure out how to navigate the system,
and mesh is about on-par with usability with Norton Commander and other DOS based interfaces.
While I haven’t used it extensively, this would indeed help give users a “soft landing”
in migrating.
This is also seen by the default install load. In addition to the standard vim and emacs
packages, Softlanding is one of the few distributions I’ve seen that installs the “joe” editor
by default. For those not familiar with joe, it’s a clone of Wordstar, an extremely popular
CP/M and DOS text editor.
Wordstar to this day has a rather strong following, and many famous authors such as George R.
R. Martin, author of A Song of Fire and Ice, still uses the DOS based version of WordStar
to this day.
Just in case anyone was wondering, I was a WordPerfect user. It does however make me
wonder how much Softlanding was trying to emulate DOS.
Rather curiously, Softlanding doesn’t prompt at any point to create a non-root user. Running
as root would mean that Linux would be much more similar to DOS with a lack of user permissions.
Even for the era, running as root all the time would have been considered bad practice.
Sadly, Softlanding’s original documentation appears lost to time, so I don’t know if
this was something the manual goes into detail about
However, making Linux more like DOS would be very much par the course. In addition to
mtools and FAT compatibility, Softlanding also includes DOSemu, a DOS emulator. Unlike
most of SLS, dosemu is shipped in source code form. It also requires the user to have a
copy of DOS, and has a lengthy README file documenting how to set up and compile it.
In the interest of science, I decided to try it.
After all, what could be more awesome than running your old DOS apps on Linux?
Joking aside, actually setting up dosemu was somewhat difficult. Assuming you have a full
install of Softlanding, “make doeverything” kicks off the compilation process. The next
step depends on your setup. If you already have DOS installed somewhere, you can edit
the config to just load that.
However, if you’re running Linux only, you instead have an “hdimage” which is a micro
HDD for DOS. A DOS boot disk must be inserted, and then DOSemu launched with “dos -A”
which boots from the floppy. FDISK and SYS are used to finish setting up the micro-partition,
at which point you can start the emulator fully.
Linux directories can be mapped with the LREDIR command, which functions very similarly NetWare’s
MAP command. A list of “known compatible software” is included. WordPerfect 5.1,
which is listed as “supported” worked just fine. DOOM however crashed the emulator
entirely. Interestingly, Windows 3.0 is listed as “supported in real mode”, however,
the installer hung when I tried it.
Speaking of Windows, users that are familiar with Linux may notice that I’ve been ignoring
the rather large elephant in the room. Or maybe more appropriately, ignoring the X on
the window.
*insert boo sound*
*ahem*, I’m not going to apologize for that pun.
What you’re watching on screen is a collection of failed attempts to get X properly up and
running. For those not familiar with Linux or UNIX in general, X is the standard graphical
user environment for these systems. Softlanding includes XFree86 version 1.2. I won’t be
surprised if most of the older Linux users are now clutching their keyboards in fear.
Up until the early 2000s, getting a working X environment could border on a legitimate
miracle.
Let’s start with the basics. X itself has a very short list graphic adapters it supports.
This can be seen in Softlanding Linux’s “syssetup” utility which has helpful options
to select your mouse and X driver. This version of X predates VESA Video BIOS Extensions by
at least six months. As such, getting X to work in anything above 640x480 requires specific
support for a given graphics adapter.
You’d think “Well, why don’t you try running just at VGA”. I did. Here’s the
end result.
While X would indeed start, it would get stuck in virtual desktop mode which mean the whole
screen scrolled. It wasn’t a very useful way to use the system. From personal experience,
a minimum resolution of 800x600 is needed to actually have X be usable in practice.
That meant you needed an accelerated X server, or a video card supported by the SVGA driver.
Out of the box, as seen here in syssetup, drivers are provided for ATI’s Mach8 and
32 cards, S3’s line of graphics cards, Intel PS/2 graphics, followed by the VGA and SVGA
drivers.
One of the reasons I like PCem it has a *very* large list of graphics cards it can emulate.
However, it did not have specific support for any of X’s drivers. Of the options in
PCem, it has support for ATi’s Mach64, but neither the Mach8 or 32 driver would load.
S3 drivers got a bit further, but complained about unknown chipset. Even the tried and
true Cirrus Logic chips tapped out.
Frustration was, needless to say, a bit high at this point.
I eventually stumbled upon the README file for the SVGA driver which had some notes about
Trident video cards. PCem does support these, but not any of the specific models listed.
That being said, it does have something close, the Trident TVGA8900D. This, combined with
some edits to Xconfig to set my resolution got X up and running!
Which was just in time to discover my mouse didn’t work. Either it would jump around
on screen, or refuse to click. When running on a 486, PCem emulates a serial mouse, and
I was wondering if something was conflicting. I switched emulation to a Pentium machine
so I could use a more standardized PS/2 mouse, and ran syssetup to change the configuration
No joy.
At this point, I was reading through most of the manpages and searching old USENET posts
for help. Eventually, I noticed that there’s a specific section in Xconfig relating to
mouse support. Unlike later XFree86 versions, there’s no InputSection. Instead, mouse
support takes the form of keywords. In this case, I needed to replace Microsoft with PS/2,
and bingo!
Working mouse support at last!
That being said, I was still rather confused. What was syssetup *doing* when I selected
the mouse driver? Was it updating the wrong config file, or was I doing something wrong?
Upon a deeper examination, all it was doing was changing the /dev/mouse link to point
to various mice drivers. Without changing X’s configuration, this would just lead
to broken mouse support! There’s no indication that you need to manually edit Xconfig!
I strongly suspect behavior like this is what earned Softlanding’s reputation for being
buggy. Since I was forced to restart many times to change settings and video cards,
I also noticed that the shutdown system was broken.
I could run shutdown to halt or reboot the machine and get the “Safe to power down”
message. However, on next startup, I’d get a message that my root filesystem needed checking
and had to wait for the filesystem checker to run. This is caused by not remounting the
root partition to read only or unmounting it entirely.
Anyway, we’re out of time on this video. In the next part, we’re going to start exploring
the graphical part of Softlanding, get networking up and running, and then take a stab at patching
the Y2K bugs out of Softlanding Linux.
If you’re interested in seeing those videos, hit that subscribe button and leave a like!
If we can reach 250 subscribers, I’ll look at doing a special to see if I can get SLS
installed on my ThinkPad 380D! As usual, if you want to follow my adventures in real time,
follow me on Twitter, or join my Discord. Until next time, this is NCommander, signing
off!