I've recently been trying to get an ancient version of UNIX I used to use working in qemu:
Micoport UNIX System V/386, v 2.1 (ca 1987). I used this from about 1987 until about 1996, when I first got Linux. With a couple of small patches, I can get qemu to boot and run UNIX from the first install floppy, although I still have some sporadic issues accessing the hard drive. I don't know of any reason the first two patches of this series shouldn't be applied now. But the last patch (VGA) is a temporary hack just to make UNIX usuable, and is currently not appropriate for general use. The commit comment discusses some possible strategies for improving it; does anyone want to weigh in? I've also noticed some other problems that I have not yet tracked down: ------- Hard Drive Issues: ------- I also encounter a couple of hard drive issues, which I haven't investigated as carefully, nor attempted to work around: 1. It doesn't seem to recognize the hard drive geometry, even if I use "-hdachs" and keep it carefully inside ancient limitations. Note that at the time, hard drives did not support self-identification commands for the geometry; you had to configure it in BIOS. I also have some old notes from when my dad was asking Microport about compatibility; apparently they wanted to know the specific BIOS version in order to decide about compatibility. Maybe UNIX is bypassing later standards for looking up geometry, and trying to get it in some non-standard way (straight from CMOS or something?) 2. Although it can access the hard drive for a short time, when accessing the hard disk, the kernel will sporadially panic with a message about a logic error in a splint() method, which dissasembly shows is called from interrupt handlers. (See also http://www.linuxmisc.com/29-unix-internals/4e6c1f6fa2e41670.htm for some general background information I found about UNIX kernel spl*() functions.) I haven't spent much time investigating either of these yet, but in my limited investigation so far, it hasn't yet run long enough to complete the first phase of installation to the hard drive (when it is running from floppy). ------- KVM Issue: ------- Finally, if KVM is enabled, I get different results. It (somehow) seems to make it past the control register instructions even with or without my patch 2, but the UNIX kernel very quickly panics with a logic error in an splx() method [apparently for restoring interrupt controller bitmasks; see link above], before it runs any userspace code. I haven't investigated this, either. ------- If anyone is interested in examining this system for themselves, contact me and I can send you at least the first (bootable) installation floppy image. -- Matthew Ogilvie (3): fix debug printf 64bit format strings target-i386/translate.c: mov to/from crN/drN: ignore mod bits HACKS to make vga text mode work with old Microport UNIX (ca 1987) hw/cirrus_vga.c | 4 ++-- hw/ide/cmd646.c | 5 +++-- hw/ide/via.c | 5 +++-- hw/vga.c | 5 +++-- target-i386/translate.c | 16 ++++++++++++---- 5 files changed, 23 insertions(+), 12 deletions(-) -- 1.7.10.2.484.gcd07cc5