Revisiting a UnixWare 7.1.1 install on Qemu/KVM

So after nearly 8 years ago from messing around with UnixWare, I wanted to confirm something from a SYSV Unix that has a C compiler that isn’t GCC, and I remembered I have UnixWare 7.1.1 from a long time ago.  Anyways I have long since lost the virtual machine I had installed onto, but I still have media and of course the more important licenses.

unixware certificate of license and authenticity

UnixWare licenses. the dread of fixing things 20+ years later

Yep it’s the real thing.  So with my certs in hand I do an initial install in Qemu and on reboot the system basically has bricked itself.

WARNING: System is in an unreliable state.

And then looking at the licenses it turns out that my license has expired.  What?

Somehow I got lucky before, but it turns out that the installation process for ancient UnixWare is NOT Y2K compliant!  And this actually turned out to be a known issue.  I can’t find the original article, but a mirror is here: ischo.net

So basically install using an eval license, which will of course expire on install, and then use your actual license after the installation, remove the eval, reboot and all will be well.

License Number: UW711EVAL
License Code: airhorpx
License Data: d60;m7hjbtt

Now isn’t that great.

The OS install license immediately expires.

Although you can’t boot up in any real useful state, the networking will kick people off, and it’ll constantly complain that you are in license violation, you can at least bring up the SCO Admin tool, and add in your actual licenses, and then delete the evals.

And now we’re good!

Ok, now for the real fun part, flags and how to run with kvm/qemu.  Since I was loading this onto a server for remote access something like this works fine for me as I’m using the VNC remote console.

qemu-system-x86_64 -enable-kvm -m 1024 -smp 4 -hda UnixWare.vmdk -cpu pentium -net none -monitor telnet::444,server,nowait -curses -vnc 10.12.0.1:11 -cdrom iso/SCO_UnixWare711.iso

So the key things are to restrict the CPU level, and I’ve deferred the network configuration so I can update network drivers, and the OS.  I’ve found that by doing the networking during the install resulted in an OS that crashed with an integer divide by zero after installing the fixpack 5.

Once you have UnixWare 7.1.1 installed, be sure to install Maintenance Pack 5, which is thankfully still online over at sco.com  I’d also recommend to do this in single user mode, you can enter single user mode by hitting a key during the boot logo and typing in:

INITSTATE=S
boot

And you’ll boot in single user mode, and can install the Maintenance pack with ease.  Until the maintenance pack is installed, expect poor stability, and the system won’t actually listen to the real time clock device, and it’ll accelerate the clock like crazy where I was passing an hour every minute or two.

Adding the AMD PCnet on UnixWare

Once the install and update is done, I just added a PCI network card (So older versions of Qemu work well with the ne2k_isa, but newer work much better with the AMD PCNet card.), which is a popular choice for both machines and VM’s of the era.  Although you can use SLiRP the built in NAT for Qemu/KVM alternatively you can also use tun/tap.  I tried to enable SMP, however it has issues binding to the other processors, although it does see them.  And this is better to give full access to the network stack for fun things like FTP, NFS and whatnot.

qemu-system-x86_64 -enable-kvm -m 1024 -smp 4 -hda UnixWare.vmdk -cpu pentium -monitor telnet::444,server,nowait -curses -vnc 10.12.0.1:11 -device pcnet,netdev=net0 -netdev tap,id=net0,ifname=tap10,script=/etc/qemu-ifup

Telnet access

And just like that I can now access the VM.

And for fun…

# uname -a
UnixWare kvm711 5 7.1.1 i386 x86at SCO UNIX_SVR5
# uname -f
architecture=IA32
bus_types=PCI2.10,ISA,PnP1.0
hostname=kvm711.joes.local
hw_provider=Generic AT
hw_serial=DEM076116
kernel_stamp=04/11/11
machine=Pentium
num_cg=1
num_cpu=1
os_base=UNIX_SVR5
os_provider=SCO
release=5
srpc_domain=
sysname=UnixWare
user_limit=5
version=7.1.1

Oh yeah so I don’t forget years from now I’m using the following OS & Qemu version:

# qemu-system-x86_64 -version
QEMU emulator version 2.8.1(Debian 1:2.8+dfsg-6+deb9u3)

# cat /etc/issue
Debian GNU/Linux 9 \n \l

Also I found an eval serial for SMP, but it doesn’t recognize the second processor after the boot.

# psrinfo -v
Status of processor 0 as of 01/31/18 16:40:07
Processor has been on-line since 01/31/18 16:13:57.
The Pentium processor has a i387 floating point processor.
The following conditions exist:
Device drivers are bound to this processor.

I’ll try apparently this as for some reason it doesn’t detect the MP in Qemu/KVM so it never installed the osmp driver.

pkgadd -d cdrom1 osmp

Add the following line to the file /stand/boot:
ACPI=Y

8 thoughts on “Revisiting a UnixWare 7.1.1 install on Qemu/KVM

  1. Thanks for the install tips. Haven’t touched any old SCO stuff in years (older than Unixware 7.1.4 or Openserver 5.0.7 at least).
    BTW, does Merge support DOS audio?

    • I’ve only used Merge in data centres, or over X-terminals so I’ve never had audio, or if it was there, there was no way I could hear it.

      I’d guess, probably not.

      I keep forgetting to put in a ‘dos diskette drive’ so I can finish setting up merge, although I was more excited to get onto the network and run the compiler.

  2. You have been a huge help. I’m messing around with KVM and OpenServer 6, trying to see if a Physical-to-Virtual (P2V) is feasible for a small local business. I could not for the life of me get past the first couple of seconds of booting from the install disk in KVM. It was working in VirtualBox, but I’d much rather use KVM, being builtin to Linux and all. Your information of setting the CPU model to Pentium is what finally made it boot. Thank you so much!

    • Yeah as qemu drifts further and further away from basic PC emulation you have to get far more specific with the component flags to get what you want.

      It’s a shame, it makes Qemu look more and more frail, while it’s becoming more capable.

  3. Thank you for your article, one of the few information pieces regarding UnixWare and KVM!

    I was hoping to ask if you’ve had any experience with UnixWare 7.1.4 running on KVM. Following your guide got me pretty far, but I can’t seem to get the system to boot past the logo. Right after the XINUOS boot logo appears, I get a kernel panic warning with the following message: “PANIC: General Protection Fault trap in kernel mode.” Booting into single-user mode as well as attempting some other boot parameters without success (an old SCO guide I found online suggested manually setting the “MEMRANGE” parameter from the SCO boot menu).

    What’s interesting with 7.1.4, if I set the CPU flag to “pentium” the system boot loops about 1 second into the boot process, where as if I set the processor flag to “host”, I can at least get the system to show the kernel panic message. I wonder what could have changed between versions that makes running on KVM so difficult.

    Thanks again for your article!

    • Hey there!

      I’d probably try using regular QEMU without the KVM flag, and just trying older versions to see how they fare.

      Unfortunately Qemu/KVM is chasing the bleeding edge, and anything that is old that works in any state is coincidental. VMware may be another option, or Hyper-V if you need it to work.

      • I can personally confirm proxmox 6.4 and sco openserver 6 definitive will work
        under the vm’s “optios” tab kvm hast to be disabled
        hardware > processor type = qemu 64 (32 probably works too i just know this is what got it going for me today)
        network: e1000
        drive type sata or ide
        i cycled through all the options for drive type. i noticed in the os6 install theres a load extra hba drivers and a megasas flashed across the screen but alas it will only see a sata or ide virtual drive.

        never have i found an os i hated as completely or as quickly as this beast.

Leave a Reply