Qemu

From Linux PARISC Wiki
(Difference between revisions)
Jump to: navigation, search
m (Additional possible QEMU work)
m (HP-UX)
(38 intermediate revisions by one user not shown)
Line 1: Line 1:
 
== QEMU support status regarding hppa/parisc ==
 
== QEMU support status regarding hppa/parisc ==
  
Starting with QEMU version 2.12 (April 2018), qemu fully supports 32-bit hppa user emulation (hppa-linux-user) and 32-bit hppa system emulation (qemu-system-hppa).
+
Since QEMU version 2.12 (April 2018), qemu fully supports 32-bit hppa user emulation (hppa-linux-user) and 32-bit hppa system emulation (qemu-system-hppa).
 
All necessary changes have been merged into the [https://git.qemu.org/?p=qemu.git;a=summary upstream qemu git tree].
 
All necessary changes have been merged into the [https://git.qemu.org/?p=qemu.git;a=summary upstream qemu git tree].
  
 
PA-RISC machines need a firmware ("PDC" = Processor Dependend Code).
 
PA-RISC machines need a firmware ("PDC" = Processor Dependend Code).
Qemu includes a precompiled PDC firmware for hppa ([https://git.qemu.org/?p=qemu.git;a=blob;f=pc-bios/hppa-firmware.img;h=86930974b9e12bec214fb464eee443a0d844e6ff;hb=HEAD pc-bios/hppa-firmware.img]), which is based on a [https://github.com/hdeller/seabios-hppa/commits/parisc_firmware fork of SeaBIOS ].
+
Qemu comes with a precompiled PDC firmware for hppa ([https://git.qemu.org/?p=qemu.git;a=blob;f=pc-bios/hppa-firmware.img;h=86930974b9e12bec214fb464eee443a0d844e6ff;hb=HEAD pc-bios/hppa-firmware.img]), which is based on a [https://github.com/hdeller/seabios-hppa/commits/parisc_firmware fork of SeaBIOS ].
  
 
The emulated machine is a [https://www.openpa.net/systems/hp-visualize_b132l_b160l_b180l.html HP B160L desktop machine], with one or more 32-bit PA7100LC CPUs.
 
The emulated machine is a [https://www.openpa.net/systems/hp-visualize_b132l_b160l_b180l.html HP B160L desktop machine], with one or more 32-bit PA7100LC CPUs.
  
The QEMU emulation is able to run Linux and HP-UX. HP-UX support still needs improvement which is being worked on.
+
The QEMU emulation is able to run Linux and HP-UX.
  
QEMU on parisc has been made available by:
+
QEMU on parisc has been developed by:
 
* [mailto:rth@twiddle.net Richard Henderson]: QEMU CPU emulation (32-bit only), QEMU hardware divers
 
* [mailto:rth@twiddle.net Richard Henderson]: QEMU CPU emulation (32-bit only), QEMU hardware divers
 
* [mailto:deller@gmx.de Helge Deller]: QEMU hardware drivers, SeaBIOS PDC firmware
 
* [mailto:deller@gmx.de Helge Deller]: QEMU hardware drivers, SeaBIOS PDC firmware
 
* [mailto:svens@stackframe.org Sven Schnelle]: Lots of fixes all over QEMU and SeaBIOS (SCSI, CPU emulation fixes, SeaBIOS PDC firmware)
 
* [mailto:svens@stackframe.org Sven Schnelle]: Lots of fixes all over QEMU and SeaBIOS (SCSI, CPU emulation fixes, SeaBIOS PDC firmware)
  
== Ready-to-run QEMU image for parisc ==
+
== QEMU runtime options ==
  
Download Debian hard disc image:
+
Possible qemu options:
  wget http://backup.parisc-linux.org/qemu/debian-10-hdd-img.tar.bz2
+
* -accel tcg,thread=multi  - always use this to enable parallel tcg (otherwise all guest CPUs run on one host CPU)
Unzip image:  
+
* -smp cpus=4      - define number of CPUs in the guest (maximum CPUs: 32)
  tar xvfj debian-10-hdd-img.tar.bz2
+
* -boot menu=on    - Firmware: enable interactive mode (boot prompt)
Run qemu:
+
* -boot order=c    - Firmware: Boot from first hard disc
./hppa-softmmu/qemu-system-hppa -drive file=debian-10-hdd.img -nographic -serial mon:stdio -accel tcg,thread=multi -smp cpus=4
+
* -boot order=d    - Firmware: Boot from first CD/DVD
Log in as '''root''', root password is "'''rootme'''"
+
* -boot order=g-m - Firmware: Boot from SCSI ID0 ("g"), SCSI ID1 ("h"), ... SCSI ID7 ("m")
 +
* -serial mon:stdio - multiplex serial console to stdout
 +
* -nographic      - disable artist graphic card emulation, so no graphics output
 +
* -display sdl    - prefer SDL display output. Much faster than GTK which is the default.
 +
* -global artist.width=800 -global artist.height=600    set Artist graphic card to 800x600 pixel
 +
* -fw_cfg opt/pdc_debug,string=255, enable all firmware debug infos
 +
for debugging:
 +
* -d item[,...]        QEMU_LOG      e.g in_asm,out_asm enable logging of specified items (use '-d help' for a list of items)
 +
* -dfilter range[,...] QEMU_DFILTER  filter logging based on address range
 +
 
 +
When running you can press
 +
* ctrl-A + X          to exit qemu.
 +
* ctrl-A + C + ENTER  when started with "-serial mon:stdio", the serial port and the QEMU debug port are multiplexed and you can switch between them with this key combination.
 +
* ctrl-Alt + F        switch to fullscreen when using SDL output
 +
 
 +
== Examples on how to start the emulator ==
 +
 
 +
* qemu-system-hppa -snapshot -m 512 -device lsi,id=scsi0 -device scsi-hd,drive=drive0,bus=scsi0.0,channel=0,scsi-id=5,lun=0,bootindex=2 -drive file=hdd5.img,if=none,id=drive0 -device scsi-hd,drive=drive1,bus=scsi0.0,channel=0,scsi-id=6,lun=0,bootindex=1 -drive file=hdd2img,if=none,id=drive1 -accel tcg,thread=multi -serial mon:stdio
 +
* qemu-system-hppa -drive file=hdd.img -nographic -serial mon:stdio -accel tcg,thread=multi -smp cpus=2 -drive file=hdd2-.img -boot menu=on -boot order=h
 +
 
 +
== QEMU special emulated assembler statements ==
 +
 
 +
The emulated guest may use specific asssembler statements to control the qemu emulator:
  
 +
* .word 0xfffdead0  -- immediately halt the emulator, similiar to turning the machine off
 +
* or %r10,%r10,%r10 -- idle loop; wait for interrupt
 +
* or %r31,%r31,%r31 -- death loop; offline cpu (currently implemented for idle loop).
 +
 
== How to build QEMU from source ==
 
== How to build QEMU from source ==
  
Line 36: Line 62:
 
Run "make"
 
Run "make"
  
== How to run QEMU with Debian-10 installer image ==
+
== Emulation guest targets ==
 +
 
 +
* Linux (Debian, Gentoo)
 +
* [https://en.wikipedia.org/wiki/HP-UX HP-UX], versions 9.x up to 11.11
 +
* [https://wiki.netbsd.org/ports/hppa/ NetBSD], >= 8.0
 +
* [https://winworldpc.com/product/nextstep/3x NextSTEP]
 +
* [ftp://ftp.cirr.com/pub/hppa/mklinux/ OSF/MkLinux]
 +
 
 +
== Linux ==
 +
 
 +
* Linux kernel >= 4.14 runs best, with initial optimizations added for kernels >= 4.9.
 +
* Prefer the Tulip NIC, then e1000 over the rtl8129 card. The latter gives irq issues with Dino emulation.
 +
* If you try to boot older Linux install CDs (Debian-5, Debian-8, Debian-9), you may need to start qemu with '''"-boot menu=on"''', and then change the kernel console option to '''"console=ttyS0"''' (serial port) instead of "console=tty0" (terminal). Then switch in GUI to the "serial0" device to see console.  Alternatively start without graphical console, e.g. with '''"-nographic"'''-
 +
 
 +
=== Debian Linux QEMU image for parisc ===
 +
 
 +
Download Debian hard disc image:
 +
wget http://backup.parisc-linux.org/qemu/debian-10-hdd-img.tar.bz2
 +
Unzip image:
 +
tar xvfj debian-10-hdd-img.tar.bz2
 +
Run qemu:
 +
./hppa-softmmu/qemu-system-hppa -drive file=debian-10-hdd.img -nographic -serial mon:stdio -accel tcg,thread=multi -smp cpus=4
 +
Log in as '''root''', root password is "'''rootme'''"
 +
 
 +
=== How to run QEMU with Debian-10 installer image ===
  
 
* Create a virtual hard disc once:
 
* Create a virtual hard disc once:
Line 57: Line 107:
 
  deb-src http://ftp.debian.org/debian unstable main
 
  deb-src http://ftp.debian.org/debian unstable main
  
 +
=== Gentoo Linux ===
  
== Some QEMU notes ==
+
* From https://www.gentoo.org/downloads/#hppa download the Minimal installation CD or the hppa32 netboot image (lif file)
 +
* Start qemu with "-cdrom <isofile>", or the lif file with "-drive file=<lif-file>", e.g.
 +
qemu-system-hppa -drive file=gentoo-2020-hppa-netboot.lif -accel tcg,thread=multi -smp cpus=2 -nographic
  
Prefer the e1000 driver over the rtl8129 card. The latter gives irq issues with Dino emulation.
+
== HP-UX ==
  
Possible qemu options:
+
* You probably won't be able to boot an original HP-UX installed hard disc image coming from a physical machine other than a B160L. The reason is, that the HP-UX kernel from the other machine has drivers built-in and won't recognize the SCSI and network in the emulated virtual machine.
* -accel tcg,thread=multi  - always use this to enable parallel tcg (otherwise all guest CPUs run on one host CPU)
+
* LASI NIC emulation and NCR 710 emulation is needed in order to be able to boot older HP-UX releases.
* -smp cpus=4      - define number of CPUs in the guest (maximum CPUs: 32)
+
* [https://astr0baby.wordpress.com/2019/04/28/running-hp-ux-11-11-on-qemu-system-hp Astrobaby wrote about his test results.]
* -boot menu=on    - Firmware: enable interactive mode (boot prompt)
+
* The "INTERRUPT KEY" mentioned sometimes by HP-UX can be emulated with the "Ctrl-\" key combination
* -boot order=c    - Firmware: Boot from hard disc
+
* In case you lost the HP-UX root password, boot at ISL 'hpux -is' and then give a new password with running "passwd".
* -boot order=d    - Firmware: Boot from CD/DVD
+
* How to test dtwm Windows Manager: start "xinit", then run "/usr/dt/bin/dtwm".
* -serial mon:stdio  use serial console
+
* File downloads see https://archive.org/download/hpunix/
* -nographic      - no graphics device
+
* HP-UX 7.05 gives System Panic: "Unable to initialize msus structure". according to [https://archive.org/stream/bitsavers_hp9000hpuxingHPBASICUX6.2Aug91_5917615/E2040-90001_Using_HP_BASIC_UX_6.2_Aug91_djvu.txt this document] "msus" means "mass storage unit
* -device VGA      - provide PCI VGA graphic card
+
specifier", which might mean that old 7.05 doesn't know how to handle the SCSI PCI card and thus can't access the disc. Remember, a B160L is different to a HP700.
 +
**  https://groups.io/g/hpseries80/message/2 and  https://www.hp9845.net/9845/projects/hpdir/ says:
 +
You can set the default mass storage unit with:
 +
  MASS STORAGE IS ":T"
 +
  MASS STORAGE IS ":D700"
 +
  MASS STORAGE IS ":D701"
 +
  MASS STORAGE IS ".GAMES"
 +
where ":T" points it at the Tape drive, ":D700" points it at the first
 +
disk drive unit, ":D701" at the second, and ".GAMES" (or ".whatever")
 +
searches the disk drives for a disk with the volume label "GAMES" (or
 +
"whatever") and sets the default MSUS to that drive.
  
 +
HP-UX 9.05 fails like this: (reported 2021/05/18)
 +
    Stored message buffer up to panic:
 +
        Floating point coprocessor configured and enabled.
 +
        No BTLB entries found for processor 0
 +
        Unsupported module type 0x7 found
 +
 +
        System Panic:
 +
            B2352A HP-UX (A.09.05) #2: Tue Oct 18 15:46:14 PDT 1994
 +
        panic: (display==0xbc00, flags==0x0) Unable to initialize msus structure
 +
        PC-Offset Stack Trace (read across, most recent is 1st):
 +
            0x000ec6f8  0x000d7e3c  0x00081e5c  0x000254c0
 +
        End Of Stack
 +
 +
        dumping 0 bytes to dev 0xffffffff, offset 0 ...
 +
        Dump failed, returning 5.
  
== Additional possible QEMU work ==
+
== NetBSD ==
  
* Fix virtio-drivers in SeaBIOS (endianess-bugs, because SeaBIOS is originally only Little-endian from x86).
+
Images at http://nycdn.netbsd.org/pub/NetBSD-daily/HEAD/latest/images/
* Emulate tulip network card in Qemu
+
 
* Artist graphics emulation in Qemu
+
Info at https://www.netbsd.org/releases/current.html
* More correct emulation of B160L in Qemu, e.g. seriell ports, PS/2 keyboard & mouse, graphics card
+
 
* STI text emulation in SeaBIOS with VGA
+
KERNEL=netbsd
 +
qemu-system-hppa \
 +
        -kernel ${KERNEL} \
 +
        -drive file=hdd.img \
 +
        -drive file=NetBSD-8.99.37-hppa.iso,media=cdrom \
 +
        -nographic \
 +
        -serial telnet::55555,server
 +
 
 +
* at least NetBSD-8 required.
 +
* NetBSD-7 doesn't work, since the trap handler code is complaining about the stack pointer it sees in the trap frame. 0xa0 for the stack pointer isn't good (analyzed with Nick Hudson <nick.hudson@gmx.co.uk>):
 +
** insanity: 'tf->tf_sp >= minsp && tf->tf_sp < maxsp' at trap:556 type 0xf tf 0xe00040 lwp 0xe38140 sp 0xa0 pc 0x200240
 +
 
 +
(info by Nick Hudson <nick.hudson@gmx.co.uk>)
 +
 
 +
== OSF/MkLinux ==
 +
 
 +
Download at ftp://ftp.cirr.com/pub/hppa/mklinux/
 +
The file root_ext2_g.dd.bin.gz doesn't cleanly decompress.. so I did a gzip -dc into root_ext2_g.dd.bin.
 +
 
 +
MkLinux sources: https://github.com/slp/osfmk-mklinux
 +
 
 +
qemu-system-hppa -boot c -drive if=scsi,bus=0,index=3,file=root_ext2_g.dd.bin,format=raw \
 +
        -serial mon:stdio -nographic -m 128
 +
 
 +
It boots, but fails during device detection because Qemu currently emulates a B160, while MkLinux expects a HP700. So it fails to see the LASI chip below the GSC bridge.
 +
NVM bootdata Bad Checksum (0)
 +
OSF Mach boot
 +
: /mach
 +
text (0x95618) at 0x11000
 +
data (0x48594) at 0xa8000
 +
Mach 3.0 VERSION(PMK1.1): cb <pmk1_1>; Wed Nov 26 17:20:37 MET 1997; mach_kernel/PRODUCTION (cameleon)
 +
HP9000/
 +
unknown machine type 0x502
 +
good luck :-)
 +
, 0K Icache, 0K Dcache, 256 entry shared TLB)
 +
Warning: unsupported module at ffc00000 (type:7 svers:0 hvers:50)
 +
Stack Trace (depth=1):
 +
      0x00084d68
 +
End of Stack
 +
 
 +
(info by Jason Stevens <neozeed@gmail.com>)
 +
 
 +
== Future QEMU work ==
 +
 
 +
Still need to do:
 +
* Add Dino/Lasi serial port
 +
* Harmony sound card in Lasi
 +
* Does HP-UX has some kind of "sleep" assembler instruction in it's idle loop which can be used to lower qemu power consumption?
 +
* Fix virtio-drivers in SeaBIOS (endianess-bugs, because SeaBIOS is originally only Little-endian from x86)
 +
* More correct emulation of B160L in Qemu
 +
* Emulate a 712 and/or j5000/c3000 machine
 +
* Emulate built-in LASI SCI controller instead of PCI SCSI add-on card
 
* Elroy PCI emulation, then emulate e.g. a C3000?
 
* Elroy PCI emulation, then emulate e.g. a C3000?
* PA2.0/64bit (low prio)  
+
* PA2.0/64bit (low prio)
- ...
+
* ...
 +
* '''Push SeaBIOS changes upstream!!'''
 +
 
 +
== List of QEmu important patches ==
 +
* [https://git.qemu.org/?p=qemu.git;a=commit;h=b1af755c33bf0d690553a5ccd93689dfd15a98e8 target/hppa: Allow, but diagnose, LDCW aligned only mod 4] - prevents crash with unaligned LDCW instruction. Missing in qemu v4.2.1, see: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=964805
 +
* [https://lists.gnu.org/archive/html/qemu-devel/2020-07/msg05904.html target/hppa: Free some temps in do_sub] - fixes https://bugs.launchpad.net/qemu/+bug/1880287
 +
 
 +
== Screenshots ==
 +
 
 +
=== HP-UX booting up ===
 +
[[File:Qemu-hpux-cde1.png|640px]]
 +
 
 +
=== HP-UX CDE Login screen ===
 +
[[File:Qemu-hpux-cde2.png|640px]]
 +
 
 +
=== HP-UX CDE initial screen ===
 +
[[File:Qemu-hpux-cde3.png|640px]]
 +
 
 +
=== Some applications started in CDE ===
 +
[[File:Qemu-hpux-cde4.png|640px]]

Revision as of 21:56, 14 November 2021

Contents

QEMU support status regarding hppa/parisc

Since QEMU version 2.12 (April 2018), qemu fully supports 32-bit hppa user emulation (hppa-linux-user) and 32-bit hppa system emulation (qemu-system-hppa). All necessary changes have been merged into the upstream qemu git tree.

PA-RISC machines need a firmware ("PDC" = Processor Dependend Code). Qemu comes with a precompiled PDC firmware for hppa (pc-bios/hppa-firmware.img), which is based on a fork of SeaBIOS .

The emulated machine is a HP B160L desktop machine, with one or more 32-bit PA7100LC CPUs.

The QEMU emulation is able to run Linux and HP-UX.

QEMU on parisc has been developed by:

  • Richard Henderson: QEMU CPU emulation (32-bit only), QEMU hardware divers
  • Helge Deller: QEMU hardware drivers, SeaBIOS PDC firmware
  • Sven Schnelle: Lots of fixes all over QEMU and SeaBIOS (SCSI, CPU emulation fixes, SeaBIOS PDC firmware)

QEMU runtime options

Possible qemu options:

  • -accel tcg,thread=multi - always use this to enable parallel tcg (otherwise all guest CPUs run on one host CPU)
  • -smp cpus=4 - define number of CPUs in the guest (maximum CPUs: 32)
  • -boot menu=on - Firmware: enable interactive mode (boot prompt)
  • -boot order=c - Firmware: Boot from first hard disc
  • -boot order=d - Firmware: Boot from first CD/DVD
  • -boot order=g-m - Firmware: Boot from SCSI ID0 ("g"), SCSI ID1 ("h"), ... SCSI ID7 ("m")
  • -serial mon:stdio - multiplex serial console to stdout
  • -nographic - disable artist graphic card emulation, so no graphics output
  • -display sdl - prefer SDL display output. Much faster than GTK which is the default.
  • -global artist.width=800 -global artist.height=600 set Artist graphic card to 800x600 pixel
  • -fw_cfg opt/pdc_debug,string=255, enable all firmware debug infos

for debugging:

  • -d item[,...] QEMU_LOG e.g in_asm,out_asm enable logging of specified items (use '-d help' for a list of items)
  • -dfilter range[,...] QEMU_DFILTER filter logging based on address range

When running you can press

  • ctrl-A + X to exit qemu.
  • ctrl-A + C + ENTER when started with "-serial mon:stdio", the serial port and the QEMU debug port are multiplexed and you can switch between them with this key combination.
  • ctrl-Alt + F switch to fullscreen when using SDL output

Examples on how to start the emulator

  • qemu-system-hppa -snapshot -m 512 -device lsi,id=scsi0 -device scsi-hd,drive=drive0,bus=scsi0.0,channel=0,scsi-id=5,lun=0,bootindex=2 -drive file=hdd5.img,if=none,id=drive0 -device scsi-hd,drive=drive1,bus=scsi0.0,channel=0,scsi-id=6,lun=0,bootindex=1 -drive file=hdd2img,if=none,id=drive1 -accel tcg,thread=multi -serial mon:stdio
  • qemu-system-hppa -drive file=hdd.img -nographic -serial mon:stdio -accel tcg,thread=multi -smp cpus=2 -drive file=hdd2-.img -boot menu=on -boot order=h

QEMU special emulated assembler statements

The emulated guest may use specific asssembler statements to control the qemu emulator:

  • .word 0xfffdead0 -- immediately halt the emulator, similiar to turning the machine off
  • or %r10,%r10,%r10 -- idle loop; wait for interrupt
  • or %r31,%r31,%r31 -- death loop; offline cpu (currently implemented for idle loop).

How to build QEMU from source

Check out the qemu git tree

Run configure, e.g.

  • (for system emulation) ./configure --target-list=hppa-softmmu --enable-numa
  • (for user emulation) ./configure --target-list=hppa-linux-user --disable-stack-protector --prefix=/home/qemu-hppa/chroot-unstable --interp-prefix=/home/qemu-hppa/chroot-unstable --static

Run "make"

Emulation guest targets

Linux

  • Linux kernel >= 4.14 runs best, with initial optimizations added for kernels >= 4.9.
  • Prefer the Tulip NIC, then e1000 over the rtl8129 card. The latter gives irq issues with Dino emulation.
  • If you try to boot older Linux install CDs (Debian-5, Debian-8, Debian-9), you may need to start qemu with "-boot menu=on", and then change the kernel console option to "console=ttyS0" (serial port) instead of "console=tty0" (terminal). Then switch in GUI to the "serial0" device to see console. Alternatively start without graphical console, e.g. with "-nographic"-

Debian Linux QEMU image for parisc

Download Debian hard disc image:

wget http://backup.parisc-linux.org/qemu/debian-10-hdd-img.tar.bz2

Unzip image:

tar xvfj debian-10-hdd-img.tar.bz2

Run qemu:

./hppa-softmmu/qemu-system-hppa -drive file=debian-10-hdd.img -nographic -serial mon:stdio -accel tcg,thread=multi -smp cpus=4 

Log in as root, root password is "rootme"

How to run QEMU with Debian-10 installer image

  • Create a virtual hard disc once:
qemu-img create -f qcow2 hdd.img 50G
./hppa-softmmu/qemu-system-hppa -drive file=hdd.img -drive file=debian-10.0-hppa-NETINST-1.iso,media=cdrom -boot order=d -nographic -serial mon:stdio 
  • Choose typical installation options, the defaults are OK.
  • Either skip the step "Configure the Package manager", or configure the mirror as with hostname "ftp.ports.debian.org", and directory "/debian-ports"
  • Shut down virtual machine after installation
  • Start emulator with installed operating system any time:
./hppa-softmmu/qemu-system-hppa -drive file=hdd.img -nographic -serial mon:stdio -accel tcg,thread=multi -smp cpus=2 
  • Edit the sources.list (/etc/apt/sources.list) file:
deb http://ftp.ports.debian.org/debian-ports unstable main
deb [arch=all] http://ftp.debian.org/debian unstable main 
deb-src http://ftp.debian.org/debian unstable main

Gentoo Linux

  • From https://www.gentoo.org/downloads/#hppa download the Minimal installation CD or the hppa32 netboot image (lif file)
  • Start qemu with "-cdrom <isofile>", or the lif file with "-drive file=<lif-file>", e.g.
qemu-system-hppa -drive file=gentoo-2020-hppa-netboot.lif -accel tcg,thread=multi -smp cpus=2 -nographic

HP-UX

  • You probably won't be able to boot an original HP-UX installed hard disc image coming from a physical machine other than a B160L. The reason is, that the HP-UX kernel from the other machine has drivers built-in and won't recognize the SCSI and network in the emulated virtual machine.
  • LASI NIC emulation and NCR 710 emulation is needed in order to be able to boot older HP-UX releases.
  • Astrobaby wrote about his test results.
  • The "INTERRUPT KEY" mentioned sometimes by HP-UX can be emulated with the "Ctrl-\" key combination
  • In case you lost the HP-UX root password, boot at ISL 'hpux -is' and then give a new password with running "passwd".
  • How to test dtwm Windows Manager: start "xinit", then run "/usr/dt/bin/dtwm".
  • File downloads see https://archive.org/download/hpunix/
  • HP-UX 7.05 gives System Panic: "Unable to initialize msus structure". according to this document "msus" means "mass storage unit

specifier", which might mean that old 7.05 doesn't know how to handle the SCSI PCI card and thus can't access the disc. Remember, a B160L is different to a HP700.

You can set the default mass storage unit with:
 MASS STORAGE IS ":T"
 MASS STORAGE IS ":D700"
 MASS STORAGE IS ":D701"
 MASS STORAGE IS ".GAMES"
where ":T" points it at the Tape drive, ":D700" points it at the first
disk drive unit, ":D701" at the second, and ".GAMES" (or ".whatever")
searches the disk drives for a disk with the volume label "GAMES" (or
"whatever") and sets the default MSUS to that drive.

HP-UX 9.05 fails like this: (reported 2021/05/18)

    Stored message buffer up to panic:
        Floating point coprocessor configured and enabled.
        No BTLB entries found for processor 0
        Unsupported module type 0x7 found

        System Panic:
           B2352A HP-UX (A.09.05) #2: Tue Oct 18 15:46:14 PDT 1994
        panic: (display==0xbc00, flags==0x0) Unable to initialize msus structure
        PC-Offset Stack Trace (read across, most recent is 1st):
           0x000ec6f8  0x000d7e3c  0x00081e5c  0x000254c0
        End Of Stack

        dumping 0 bytes to dev 0xffffffff, offset 0 ...
        Dump failed, returning 5.

NetBSD

Images at http://nycdn.netbsd.org/pub/NetBSD-daily/HEAD/latest/images/

Info at https://www.netbsd.org/releases/current.html

KERNEL=netbsd
qemu-system-hppa \
       -kernel ${KERNEL} \
       -drive file=hdd.img \
       -drive file=NetBSD-8.99.37-hppa.iso,media=cdrom \
       -nographic \
       -serial telnet::55555,server
  • at least NetBSD-8 required.
  • NetBSD-7 doesn't work, since the trap handler code is complaining about the stack pointer it sees in the trap frame. 0xa0 for the stack pointer isn't good (analyzed with Nick Hudson <nick.hudson@gmx.co.uk>):
    • insanity: 'tf->tf_sp >= minsp && tf->tf_sp < maxsp' at trap:556 type 0xf tf 0xe00040 lwp 0xe38140 sp 0xa0 pc 0x200240

(info by Nick Hudson <nick.hudson@gmx.co.uk>)

OSF/MkLinux

Download at ftp://ftp.cirr.com/pub/hppa/mklinux/ The file root_ext2_g.dd.bin.gz doesn't cleanly decompress.. so I did a gzip -dc into root_ext2_g.dd.bin.

MkLinux sources: https://github.com/slp/osfmk-mklinux

qemu-system-hppa -boot c -drive if=scsi,bus=0,index=3,file=root_ext2_g.dd.bin,format=raw \
       -serial mon:stdio -nographic -m 128 

It boots, but fails during device detection because Qemu currently emulates a B160, while MkLinux expects a HP700. So it fails to see the LASI chip below the GSC bridge.

NVM bootdata Bad Checksum (0)
OSF Mach boot
: /mach
text (0x95618) at 0x11000
data (0x48594) at 0xa8000
Mach 3.0 VERSION(PMK1.1): cb <pmk1_1>; Wed Nov 26 17:20:37 MET 1997; mach_kernel/PRODUCTION (cameleon)
HP9000/
unknown machine type 0x502
good luck :-)
, 0K Icache, 0K Dcache, 256 entry shared TLB)
Warning: unsupported module at ffc00000 (type:7 svers:0 hvers:50)
Stack Trace (depth=1):
     0x00084d68
End of Stack 

(info by Jason Stevens <neozeed@gmail.com>)

Future QEMU work

Still need to do:

  • Add Dino/Lasi serial port
  • Harmony sound card in Lasi
  • Does HP-UX has some kind of "sleep" assembler instruction in it's idle loop which can be used to lower qemu power consumption?
  • Fix virtio-drivers in SeaBIOS (endianess-bugs, because SeaBIOS is originally only Little-endian from x86)
  • More correct emulation of B160L in Qemu
  • Emulate a 712 and/or j5000/c3000 machine
  • Emulate built-in LASI SCI controller instead of PCI SCSI add-on card
  • Elroy PCI emulation, then emulate e.g. a C3000?
  • PA2.0/64bit (low prio)
  • ...
  • Push SeaBIOS changes upstream!!

List of QEmu important patches

Screenshots

HP-UX booting up

640px

HP-UX CDE Login screen

640px

HP-UX CDE initial screen

640px

Some applications started in CDE

640px

Personal tools