Running ‘ancient’ linux binaries on modern systems

I just found out about this page which mentions me and my old iBCS/NetBSD adventure to running Xenix binaries on NetBSD 4.x (Sadly 5.x broke xcoff).  In there they also refer to this old redhat page on running a.out binaries on newish systems.

Apparently the ability to run old a.out stuff is still present as Alan Cox notes that “my 3.6rc kernel will still run a Rogue binary built in 1992. X is back compatible to apps far older than Linux.

I’ll have to investigate later on.

So I managed to score 2/3’rds of the most rare version of OS/2 ever

Thats right I’m talking about the Microsoft OS/2 2.0 beta.

This is the badboy that cost some $2,600 back in 1989/1990 and its stall basically split up the IBM Microsoft OS/2 alliance.

Sadly I don’t have volume 1 (although the binder spine says so, I have to wonder if the binders were reorganized) so I don’t have any media, nor the overview stuff, just the API’s for the UI & Networking and some general API stuff.  There is no mention of SOM or Workplace shell, so clearly this is stuff IBM added on their own.

It seems if MS & IBM had not dragged so slowly with 2.0 it really could have been pushed out in 1990, instead Microsoft basically gave up on Cruiser and pushed forward with Windows 3.0 which it controlled all the way.  And of course if IBM had allowed Microsoft to control the GUI side, OS/2 would have been far more NT’ish from the getgo.  Oh well instead we were denied any decent OS until what? 1994 on the Microsoft side with NT 3.5 although of course it was closer to 1996 with NT 4.0 did it even matter by then.  OS/2 was quite usable at the 2.0 level, but it was delayed with the advent of Windows 3.0 and OS/2 HAD to run Windows apps or it’d never go anywhere.

So here is some camera phone pictures of what materials I have on this rare version.  Naturally if anyone actually has Volume 1 or the media set feel free to contact me!!!


The binders

Operating System/2 Programmer’s Reference Volume 3 version 2.0

SY13869-0590 / May of 1990

I’ve also found these snippits from Infoworld going back to 1989..

One interesting thing seems that once Microsoft abandoned OS/2 2.0 the kernel never seemed to have changed as you still can load 16bit device drivers so it feels as if all development in that space froze until the ill fated botched port to L4.

Microsoft OS/2 1.21 on Qemu (almost works)

It almost works.

I just tried commenting out the IDE CD-ROM that is on by default on Qemu, and booted up a ‘restore’ CD I cooked up a while ago, and lo it almost works.  OS/2 boots up, but the keyboard is unresponsive… The cursor flashes away it almost acts like it is alive but without any input it just sits there dead.

I haven’t tried booting from floppy although I would assume it’d fail just in the same manner.  For anyone wanting to mess with it, just disable the cdrom in vl.c & recompile.

Qemu 1.2 released!

So this is good news, as always you can check out the change log, or download the source and compile yourself…

Using my quick instructions on building on OS X, I got 1.2 to compile which is nice, and run DOOM..

As you can see from this output it isn’t relying on the TCG backend

$ ./configure –audio-card-list=ac97,es1370,sb16,adlib,hda,gus –disable-curl –target-list=i386-softmmu
Silently falling back into gthread backend under darwin
Install prefix /usr/local
BIOS directory /usr/local/share/qemu
binary directory /usr/local/bin
library directory /usr/local/lib
include directory /usr/local/include
config directory /usr/local/etc
Manual directory /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /Users/neozeed/src/qemu-1.2.0
C compiler gcc
Host C compiler gcc
Objective-C compiler clang
QEMU_CFLAGS -m64 -DOS_OBJECT_USE_OBJC=0 -arch x86_64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fstack-protector-all -Wendif-labels -Wmissing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wold-style-definition
LDFLAGS -m64 -framework CoreFoundation -framework IOKit -arch x86_64 -g
make make
install install
python python
smbd /usr/sbin/smbd
host CPU x86_64
host big endian no
target list i386-softmmu
tcg debug enabled no
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
-Werror enabled no
Cocoa support yes
SDL support no
curses support yes
curl support no
mingw32 support no
Audio drivers coreaudio
Extra audio cards ac97 es1370 sb16 adlib hda gus
Block whitelist
Mixer emulation no
VirtFS support no
VNC support yes
VNC TLS support no
VNC SASL support yes
VNC JPEG support no
VNC PNG support no
xen support no
brlapi support no
bluez support no
Documentation yes
NPTL support no
PIE no
vde support no
Linux AIO support no
ATTR/XATTR support no
Install blobs yes
KVM support no
TCG interpreter no
fdt support no
preadv support no
fdatasync no
madvise yes
posix_madvise yes
uuid support no
libcap-ng support no
vhost-net support no
Trace backend nop
Trace output file trace-<pid>
spice support no
rbd support no
xfsctl support no
nss used no
usb net redir no
OpenGL support no
libiscsi support no
build guest agent yes
seccomp support no
coroutine backend

So far it looks good on OS X, so here is my i386 binary!  Although I’ve only tested it with MS-DOS 4.01 & Doom 1.1

Doom 1.1 on OS X 10.8.1 via Qemu 1.2.0


Qemu 1.2.0 & all its win32 glory

And after much delay, here is my Win32 binary for the i386 system emulation.  And just like the OS X version, I’ve only tested it with Doom.  I’ve included my usual control-alt-delete shortcut & the ability to quick reset.