386BSD 1.0 Running on Qemu

DICLAIMER: This software is a component of “386BSD” developed by William F. Jolitz, TeleMuse.

Please review the full COPYRIGHT NOTICE before continuing.

With Qemu I was able to install and run 386BSD 1.0 Jolix (circa 1989-1994). It is not for the faint of heart. The public downloaded zip file came with no floppies, no CDROM, no installer; only the OS binaries. I had to figure out many things by trial and error, rinse and repeate: the best hard drive image format, dumping the OS binaries remotely, labeling the bootstrap, and fine tuning the startup procedures. Many undocumented steps were involved. I will possibly work on the step-by-step instructions once I am able to re-compile and figure out a stable running install.

386BSD is a historical and legendary operating system, because it is the first Unix that was ported to the Intel 386 CPU beginning in 1989. This preliminary version paved the way for all the other popular Unix versions in actuality, including FreeBSD, NetBSD and the like. This release, together with Minix, is part of the foundations of the modern Unix and Linux for the 386; it is a great academic point of reference for operating system porting and development today, especially for the x86 personal computer architecture; and TCP/IP networking, which also originated with the earlier 4.2BSD Unix.

386bsd-1.0-qemu-login.png

About 386BSD: https://386bsd.org/about

I congratulate with great admiration the originators, William and Lynne Jolitz. The Jolitz ported Net/2 and 4.4BSD Lite2 to the Intel i386, with this and two earlier releases; and everybody else took off from there. 386BSD was the starting point. Before then multi-user Unix was only possible on VAX and other mainframe systems, using serial dumb terminal consoles. Until the early 90’s Unix installed on a DOS personal computer was not yet assimilated. The 386 CPU vastly beat the VAX in power and processing speed, but nobody had a Unix port for it, until the Jolitzes. They wrote the bible for the porting of BSD Unix for the 386 CPU, via an 18 month article series titled “Porting Unix to the 386”, from Dr. Dobb’s Journal. Linux Torvalds himself studied 386BSD and Minix, and he said that without 386BSD his Linux kernel would not exist.

Unix history is fascinating! Computer historical restoration is a new market trend. In the past few years there has been a resurgence of interest in original installations of the early Unixes. The appreciation of the work done by founding programmers, such as the Jolitz family of academics, has not gone unnoticed.

This setup is a work in progress, unfinished and is still very buggy. It crashes often but it boots every time with login, and still runs many basic commands. The only other emulation that I noticed, is in gunkies.org, but that one uses Bochs; I tried it but it didn’t work for me, and I prefer Qemu. Any comments will be appreciated about how to make this emulation work better. Some OS configuration files of the tarball below were modified in order to make it boot and run with Qemu.

Download https://www.sotosystems.com/download/386bsd-1.0-qemu.tgz (90MB)

    * 386BSD 1.0 Qcow2 Image.
    * This was is the first UNIX ported to the Intel 386 CPU.
    * Previous versions are: 0.0 and 0.1.
    * Emulator used: Qemu 3.1.0 under Debian 10.5 AMD64.
    * Installed on a 512M Qcow2 image compressed down to 92M.
    * Using a boot loader from BSD/OS 4.3.
    * root password is “welcome”.
    * Boots and runs basic commmands.
    * Still very buggy and crashes with many commands,like `dmesg`.
    * May work better if kernel is recompiled.
    * Could not get a lot of things to work: networking, cdrom.
    * Still tinkering with it; for study and curiosity.
    * ISO download from archive.org.
    * Installed with BSD/OS 4.3 from archive.org.
    * There’s a version 2.0 on github.com which I will install shortly.
Layout:
wd0a / 		= 30M, 6M used.
wd0b /usr 	= 375M, 108M used.
wd0h swap 	= 100M
Memory 64G

Qemu script used:

#!/bin/bash 
BOOT=c
HD=hd.img
MEM=64m
qemu-system-i386 -M pc -cpu 486 -m $MEM -enable-kvm \
 -name "386BSD 1.0" \
 -smp cpus=1,cores=1,threads=1,sockets=1,maxcpus=1 \
 -hda $HD \
 -boot $BOOT -no-fd-bootchk \
 -k en-us -rtc base="1994-01-01" 2>&1 & 

The End.