Gravis Ultrasad

« Installing Caldera OpenLinux 1.3 on qemu »

Posted on 03 April 2019 13:07 in misc
Last updated on 04 April 2019 12:29
retrocomputing linux

I saw a picture of Caldera OpenLinux somewhere:

I was immediately intrigued because it looks like nothing I'd seen before and I wanted a closer look. The source post was:

To save some time on your part: There's nothing particularly special about this version of Linux. Most of the software is typical of any 1997 release, so an early Red Hat would be mostly the same in practical terms. The UI that fascinated me is just fvwm (hence the Motif look) running a program from Caldera called Looking Glass, which provides a sort of Win 3.x Program Manager interface. The shine wears off real quick, as is typical for old Linuces, but since I put in the effort to get it going, I thought I'd share, so you can spin your wheels a little less than I did if you want to try this out for kicks.

The original post I linked has some useful info but the link to the fixed copy of X11 there is no longer valid, and the author didn't cover some of the tweaking needed to get this working, so I'll include help on those issues. I also uploaded ISOs of the entire CD set to Internet Archive. I had found them on someone's Google Drive, and they include the source disc which you'll need if you want to do any of the bullshit I had to do to get this working.

Why Bother

Because 90s Linux is downright fun to work with compared to modern Linux and it's nice to spend a few hours doing stuff with a linux that isn't constantly requiring you to download shit.

I was able to compile X11 from a base install of the OS without installing any libraries from CD let alone the internet. Try that on Ubuntu.

Why Qemu

I initially installed this on Virtualbox, which ran it great for the most part, but the graphics card is unique to Virtualbox so you can't get anything better than 256 color VGA which won't run basically anything. Maybe you could compile the linux vbox graphics driver; I haven't tried that yet but I expect it to be a shitshow if possible at all.

Qemu on the other hand has the option to emulate a Cirrus Logic 5446, which this version of X does have support for... if you compile it in. Unfortunately the stock included binary DOESN'T have this support, but you can compile it from the XFree86 on the source disc, and it's... not that painful, surprisingly.

Notably, I have not gotten networking to work yet. Will update if I figure it out, but I did at least determine that qemu emulates an RTL8139, which this linux does have support for and does recognize if you enable it, but I can't get traffic to pass so I've left that command out for now. I think it's just because my Windows host OS is dumb as hell about networking, this would probably work great on a linux host.


I'll only cover installing the OS on qemu in abstract because: I didn't. I installed it on virtualbox, discovered it wouldn't work with that graphics card, then moved the disk image to qemu. If you don't know qemu... oof. I don't have a lot of great news for you with regards to qemu's usability but here's some tips.

I recommend at least qemu 2.12.0.

This is my current qemu command:

E:\Emulators\qemu\qemu-system-x86_64.exe -m 128.000 -vga cirrus -boot order=d -name Caldera-qemu -nic user,model=rtl8139  -hda G:\VMs\Caldera\Caldera-qemu-big.vdi -L e:\emulators\qemu

That is:

  • Start qemu's x86_64 emulator
  • 128mb of ram
  • cirrus graphics
  • boot from cdrom first (if present)
  • name the machine Caldera-qemu
  • create rtl8139 network card (doesn't work properly - see above)
  • set hard drive image

To create that disk image, you want to do something like

qemu-img create -f vdi caldera-qemu-big.vdi 4096M

I recommend at least two gigs - the "full install" is nearly a gig and you can't do anything with a disk smaller than two gigs.

To get the install started, add this to the qemu CLI command:

-cdrom <path_to_qemu.iso>

Hit enter at the boot prompt and follow the directives; you'll need a little Linux experience here I'm afraid. I recommend the full install, and you should manually create one partition of 3800M and a swap partition filling the rest of the drive.

LILO Bootloader Note

For some reason LILO failed to install correctly for me, I'm not sure why. So after install is complete, the installer will force boot you onto hda1 and everything will look fine, but this is a trap; if you reboot, the machine will hang.

If you do this, you can use something like PLoP on Hirem's Boot CD to get back into the installed OS.

To fix this, I just had to edit /etc/lilo.conf and change the boot line to boot = /dev/hda, then type lilo to install the bootloader to the MBR. Weird but ok.

Getting X Working

At this point you should be booted up into a functioning system and logged in as root.

If you just want to make X Go, you can probably type startx and get the 8bpp VGA mode. It's cute but most stuff won't run, so let's move on.

You need XFree86 with cirrus support. To make this easier, I have compiled this for you and put the files into an archive. I'm not sure if that'll work, but you can try it (with extra steps to work around the lack of network access):

  • Download XFree86-3.2.2.tar.gz
  • Install the PowerISO trial version (or another ISO manipulator)
  • Stuff this tgz into a CD ISO
  • Mount the ISO in qemu
  • Copy the tgz from /mnt/cdrom to ~
  • Extract the tgz
  • cd into XFree86-3.2.2
  • make install

Yeah, you don't need to configure or make, because I gave you the precompiled version. This should work perfectly because we're literally running identical OSes; make install just copies the files to the right places. If this doesn't work, do a make clean, then make World (there is no configure step); it will take a good half hour to recompile. If this doesn't work, see "compiling X from source."

Compiling X from Source

Ugh okay none of the above worked or you want to do things the arcane way or you want to change some other aspect of the build. Sure ok

  • Mount the source CD ISO
  • cd /mnt/cdrom/Packages/SRPMS/
  • rpm -ivh XFree86-3.3.2-1.src.rpm
  • rpm -ivh XFree86-contrib.-3.3.2-1.src.rpm
  • rpm -ivh XFree86-fonts-3.3.2-2.src.rpm
  • rpm -ivh XFree86-server-3.3.2-1.src.rpm

Now you have a bunch of tgzs in /usr/src/OpenLinux/SOURCES

  • cd to that folder
  • tar zxf all those tgzs
  • mkdir XFree86-3.3.2
  • mv xc XFree86-3.3.2/
  • cd XFree86-3.3.2
  • patch -p0 -E < ../3.3.2-patch1
  • patch -p0 -E < ../3.3.2-patch2

Now you're patched up and ready to build

  • make World
  • make install

That's it. You're done. You could probably change other things before doing the make but I don't know anything about that.

X Configuration

At this point X will run in 8bpp VGA and won't do you much good. Here's an XF86Config that should work (put it in /etc/XF86Config), or you can run the configurator yourself. Here's what I did to get mine working, but frankly this whole thing is arcane as hell and there are probably better ways to handle it.

  • Run XF86Setup
  • Tell it you don't want to use a previous config.
  • X should start and give you the config interface
  • For the card, select Cirrus Logic GD844x
  • Click Detailed Setup
  • At the bottom of the "Additional lines to add to Device section..." add:
    • Option "noaccel"
    • Option "no_bitblt"
  • Set Video RAM to 4Meg
  • It should look like this:

  • For the Monitor, select Multi-frequency that can do 1280x1024 @ 60hz...
  • For the Modeselection, select 1024x768 and 24bpp
    • I've gotten 32bpp to work a couple times but I can't replicate it
  • Click Done 
  • It should restart into a working X server at 1024x768 and you can now save the config
  • Now run startx

Now you should have a working X server at 1024x768x24! Have fun!

Finally, the make install blew away the GUI config that we came here for in the first place. To fix that, edit /etc/X11/xinit/xinitrc, comment out everything after "start some nice programs", and add fvwm on a new line. Now you can startx and get the full experience.


As noted, I can't get networking to work, but I think it's because of my host OS. I can get the ethernet device to show up, but it's weird compared to modern linuces, so here's the process:

Important note to avoid hearing damage: When I installed the network card driver, it did something to the PCI interrupt timer, and promptly the PC speaker started howling and would not stop. I had to mute qemu. Be aware that this might happen.

  • First, you need to manually enable the kernel module.
    • During runtime, you can type insmod rtl8139
    • To get it to start at boot:
      • Go to /etc/modules/2.0.35/
      • Edit the appropriate module file. I believe this is the one beginning with "#1 Wed Aug" but edit both if you're uncertain
      • Add rtl8139 to the end
  • Type lisa to launch the setup program
    • As far as I can tell LISA is a Caldera exclusive app, the sort of thing that actually distinguished distributions back in the day before everything kind of blended together
    • Select System Configuration
    • Network Configuration
    • Network Access
    • Configure Network Card
    • Follow the prompts
    • Repeat for Enter Router to set up your default gateway

I don't know what the process is to get DHCP working.

Looking Glass

The software I did all this to get access to is, unsurprisingly, not special or interesting in the end. Looking Glass itself is basically a Program Manager / Explorer with mystery meat navigation (there's no tooltips on the meaningless button icons).

If you hit this button:

you'll get the toolbar editor, which will tell you the meaning of the buttons.

Selecting "PowerUser" from the Layouts menu will enable almost all the buttons. None of them do much of interest.

Left click and hold on the desktop to get the program menu. Explore away.

I'd be surprised if there's anything in here that isn't in modern linuces. Xmountains is very nice to look at, for what it's worth.

View/Add comments (Warning: provided by Disqus and may include ads! Hidden for your safety!)