Running SunOS 4.1.4 on QEMU on my laptop

had an successful attempt to install and run SunOS 4.1.4 on my laptop using QEMU SPARC processor emulation mode.

Here is the command I started with:

$ bin/qemu-system-sparc -M SS-20 -m 512 -cpu "TI SuperSparc 60" -serial telnet:0.0.0.0:3001,server \
-bios bios/my-sun/ss20_v2.25_rom -nographic -hda dsks/test-sun414-root-dsk.raw -cdrom iso/sunos414.iso

Where:

  • hda = dsks/test-sun414-root-dsk.raw
  • cdrom = iso/sunos414.iso

EPROM output:

ok devalias
...
disk3 /iommu/sbus/espdma@f,400000/esp@f,800000/sd@3,0
disk2 /iommu/sbus/espdma@f,400000/esp@f,800000/sd@2,0
disk1 /iommu/sbus/espdma@f,400000/esp@f,800000/sd@1,0
disk0 /iommu/sbus/espdma@f,400000/esp@f,800000/sd@0,0

And here is how QEMU sees block devices:

(qemu) info block
scsi0-hd0: removable=0 io-status=ok file=dsks/test-sun414-root-dsk.raw ro=0 drv=raw encrypted=0 bps=0 bps_rd=0 bps_wr=0 iops=0 iops_rd=0 iops_wr=0
scsi0-cd2: removable=1 locked=0 tray-open=0 io-status=ok file=iso/sunos414.iso ro=1 drv=raw encrypted=0 bps=0 bps_rd=0 bps_wr=0 iops=0 iops_rd=0 iops_wr=0
floppy0: removable=1 locked=0 tray-open=0 [not inserted]
sd0: removable=1 locked=0 tray-open=0 [not inserted]

Here is how the EPROM sees block devices:

ok probe-scsi-all
/iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000
Target 0
Unit 0 Disk QEMU QEMU HARDDISK 1.2.
Unit 1 Disk QEMU QEMU HARDDISK 1.2.
Unit 2 Disk QEMU QEMU HARDDISK 1.2.
Unit 3 Disk QEMU QEMU HARDDISK 1.2.
Unit 4 Disk QEMU QEMU HARDDISK 1.2.
Unit 5 Disk QEMU QEMU HARDDISK 1.2.
Unit 6 Disk QEMU QEMU HARDDISK 1.2.
Unit 7 Disk QEMU QEMU HARDDISK 1.2.
Target 2
Unit 0 Removable Read Only device QEMU QEMU CD-ROM 1.2.
Unit 1 Removable Read Only device QEMU QEMU CD-ROM 1.2.
Unit 2 Removable Read Only device QEMU QEMU CD-ROM 1.2.
Unit 3 Removable Read Only device QEMU QEMU CD-ROM 1.2.
Unit 4 Removable Read Only device QEMU QEMU CD-ROM 1.2.
Unit 5 Removable Read Only device QEMU QEMU CD-ROM 1.2.
Unit 6 Removable Read Only device QEMU QEMU CD-ROM 1.2.
Unit 7 Removable Read Only device QEMU QEMU CD-ROM 1.2.

I was faced with an error from the installation media, I don’t exactly remember the error since it was long ago but I assume it’s with the MAKEDEV script that creates device files failing to create device files in RAM disk installation image, and the solution was:

setenv sbus-probe-list f
reset

boot disk2:d (CDROM)

[ MAKEDEV trick ]

boot disk0:b -sw
 
boot disk0:a
...

Then fake MAKEDEV

# cd /dev
# mv MADEDEV MAKEDEV.orig
# ln -s /bin/true MAKEDEV
# ln -s sd1a sr0
# ln -s rsd1a rsr0

Here is the dmesg from the running system:

Sep 12 18:20
SuperSPARC: PAC ENABLED
SunOS Release 4.1.4 (GENERIC) #2: Fri Oct 14 11:09:47 PDT 1994
Copyright (c) 1983-1993, Sun Microsystems, Inc.
cpu = SUNW,SPARCstation-20
mod0 = TI,TMS390Z50 (mid = 8)
mem = 523840K (0x1ff90000)
avail mem = 510951424
cpu0 at Mbus 0x8 0x240000
entering uniprocessor mode
Ethernet address = 0:0:0:0:0:0
espdma0 at SBus slot f 0x400000
esp0 at SBus slot f 0x800000 pri 4 (onboard)
sd1 at esp0 target 1 lun 0
sd1:
sd3: non-CCS device found at target 0 lun 0 on esp0
sd3 at esp0 target 0 lun 0
sd3:
ledma0 at SBus slot f 0x400010
le0 at SBus slot f 0xc00000 pri 6 (onboard)
SUNW,bpp0 at SBus slot f 0x4800000 pri 3 (sbus level 2)
zs0 at obio 0x100000 pri 12 (onboard)
zs1 at obio 0x0 pri 12 (onboard)
fdc: no RQM - stat 0xc0
fdc: no RQM - stat 0xc0
SUNW,fdtwo0 at obio 0x700000 pri 11 (onboard)
root on sd3a fstype 4.2
swap on sd3b fstype spec size 98800K
dump on sd3b fstype spec size 98788K
le0: AUI Ethernet

And finnally here is the actual command for installation

$ bin/qemu-system-sparc -m 512 -serial telnet:0.0.0.0:3001,server -M SS-20 -cpu "TI SuperSparc 60" \
-bios bios/my-sun/ss20_v2.25_rom -nographic -net user -hda dsks/test-sun414-root-dsk.raw -hdb iso/sunos414.iso

References: