Qemu Sparc snapshot getting better!

Thanks to Artyom Tarasenko‘s tireless work on the Sparc MMU, DMA, SCSI It’s not possible to install some versions of Solaris, and boot others to single user mode!
Heck, even the NeXTSTEP 3.3 boot program goes ahead and loads up..

However this is all done without a graphical console, as the sparc rom’s dont understand the framebuffer that Qemu emulates…

qemu-system-sparc.exe -nographic -monitor null -serial mon:telnet:127.0.0.1:23,server -bios ..\ss5-170.bin -M SS-5 -m 256 -hda ..\solaris.disk -startdate “2009-12-13” -cdrom \temp\cd46.iso

Running it is something like this. The key here is the lines:

-nographic -monitor null -serial mon:telnet:127.0.0.1:23,server

Which setup a serial port console you can just telnet into (for us Windows users).

This gets around all the errors like this:

chardev: backend “stdio” not found
qemu: could not open serial device ‘mon:stdio’: Result too large

Sadly my SunOS cd doesn’t seem to want to boot, and I somehow saved a copy of Solaris 8, but not 6..? Sigh.

ok
ok boot cdrom -vb
Boot device: /iommu/sbus/espdma@5,8400000/esp@5,8800000/sd@6,0:d File and args:
-vb
Size: 259712+54162+47510 Bytes
SunOS Release 5.8 Version Generic_108528-13 32-bit
Copyright 1983-2001 Sun Microsystems, Inc. All rights reserved.
Ethernet address = 52:54:0:12:34:56
Using default device instance data
vac: enabled in write through mode
mem = 262144K (0x10000000)
avail mem = 258322432
root nexus = SUNW,SPARCstation-5
iommu0 at root: obio 0x10000000
sbus0 at iommu0: obio 0x10001000
dma0 at sbus0: SBus slot 5 0x8400000
dma0 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000
/iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000 (esp0):
esp-options=0x46
esp0 at dma0: SBus slot 5 0x8800000 sparc ipl 4
esp0 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000
sd6 at esp0: target 6 lun 0
sd6 is /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@6,0
root on /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@6,0:
b fstype ufs
obio0 at root
obio0 at obio0: obio 0x100000, sparc ipl 12
zs0 is /obio/zs@0,100000
obio1 at obio0: obio 0x0, sparc ipl 12
zs1 is /obio/zs@0,0
cpu0: FMI,MB86907 (mid 0 impl 0x0 ver 0x4 clock 1070 MHz)
# uname -a

SunOS 5.8 Generic_108528-13 sun4m sparc SUNW,SPARCstation-5
#

Which is all cool. And check the CPU, 1070Mhz! Don’t we all wish we had SPARC’s that fast!

I’ve even managed to install OpenBSD/Sparc! … But it crashed on booting.

Anyways it’s late, and thats it for now.

19 thoughts on “Qemu Sparc snapshot getting better!

  1. It says Solaris 1.1.2, and it's got the sparc logos on the cd case & the cd.

    I did pick this CD up in Japan…. if that matters……

    TYPE 49172300
    OIR 16149825

    The install instructions say "boot cdrom"…. so I modified vl.c to change the cdrom's index to #6 as I recall SUN's love cdroms on ID 6, and type in boot cdrom, and I get…

    ok boot cdrom
    Boot device: /iommu/sbus/espdma@5,8400000/esp@5,8800000/sd@6,0:d File and args

    Short disk read
    The file to boot may not be present
    ok
    ok

  2. trying it as disk6 gets me this:

    ok boot disk6
    Boot device: /iommu/sbus/ledma@5,8400010/le@5,8c00000 File and args: disk6
    Internal loopback test — Wrong packet length; expected 36, observed 64

    Can't open boot device

  3. You didn't read my how-to. 😉 For Solaris < 2.6 you need to plug cdrom image as a hdd, because it has a different sector size (or is it possible to tell cdrom the sector size=512bytes?). If you plug it as -hdb img.iso, boot with
    boot disk1:d -vs
    (it won't boot to the command prompt though due to problems with serial).

  4. And just for the record, I'm not the only qemu-sparc developer. The guys did an excellent job before me – it was able to boot linux and some *BSDs already.

  5. I changed
    bootparams_find_and_mount_cdrom
    to
    manual_find_and_mount_cdrom

    in the /sbin/rcS

    then all the:
    ifconfig -a plumb
    ifconfig $1 plumb

    to

    ifconfig -a dlumb
    ifconfig $1 dlumb

    so it'd just fail but keep on going….

    I mounted the swap thing up as you'd mentioned and overwrote the /etc/system file with:

    set scsi_options=0x58
    set scsi_reset_delay=10000
    set tmpfs:tmpfs_minfree=1
    set swapfs_minfree=0x040

    And much to my amazement it'll boot, pick up the root then odly hangs with:

    syslog service starting.
    Running in command line mode

    And seems to just… go away. Control C&Z don't do anything…

    • I had the same problem where it hangs in boot. To solve the problem, I went back in and disabled the syslog service. After that it booted up all happy form the disk image.

      Specifically I did this:

      ok boot disk2:d -vs
      ...
      mount /dev/dsk/c0t0d0s2 /a
      cd /a/etc/init.d
      vi syslogd

      Then commented out the line under the start case
      I also added: echo "syslog disabled" after the commented line.

      or I believe you can also remove the link to syslogd like this:
      rm /etc/rc2.d/S74syslog
      but I didn’t try it that way.

  6. I managed to run Solaris 9 with boot disk2:d -vb and boot disk2:d -vs. However, when i do disk2:d, the system loads until the terminal type menu.

    What type of terminal are you using?
    1) ANSI Standard CRT
    2) DEC VT52
    3) DEC VT100
    4) Heathkit 19
    5) Lear Siegler ADM31
    6) PC Console
    7) Sun Command Tool
    8) Sun Workstation
    9) Televideo 910
    10) Televideo 925
    11) Wyse Model 50
    12) X Terminal Emulator (xterms)
    13) CDE Terminal Emulator (dtterm)
    14) Other
    Type the number of your choice and press Return: 3
    syslog service starting.
    savecore: no dump device configured
    Running in command line mode

    And nothing happens after that. Anyone encountered this issue?

  7. Hello,

    I have a .dd image of a faulty Sun SPARC workstation HDD. I want to know how can I run it on a virtual workstation (qemu, virtualbox or vmware).

    Thank you

    • qemu probably. you may have to know what kind of disk it was to get the physical geometry, and pass it into Qemu. And of course it depends on what kind of SPARC…

      • The workstation is a Sun Blade 1500, with a Ultrasparc IIIi 1.503 GHz, 2GB ECC RAM. SunOS 5.10. The disk seems to have a linux filesystem. (I’m a Windows user and just starting to learn about Solaris/Linux).
        Thank you

        • the filesystem doesn’t matter, but an UltraSparc isn’t a regular sparc. Those are the 64bit variations, which as far as I know are not emulated.

          You’d have to pay someone to make those kinds of changes, but it’s lightyears beyond my feeble capabilities.

Leave a Reply