Qemu

From Linux PARISC Wiki
(Difference between revisions)
Jump to: navigation, search
m
m
(10 intermediate revisions by one user not shown)
Line 1: Line 1:
== QEMU SUPPORT STATUS REGARDING HPPA / PARISC ==
+
== QEMU support status regarding hppa/parisc ==
  
Since April 2018, starting with qemu version 2.12, qemu fully supports hppa user emulation (hppa-linux-user) and hppa system emulation (qemu-system-hppa).
+
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).
All necessary changes to qemu have been merged into [https://git.qemu.org/?p=qemu.git;a=summary the qemu upstream 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 already 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 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 ].
  
== HOW TO BUILD QEMU FROM SOURCE ==
+
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.
  
* checkout out the [https://git.qemu.org/?p=qemu.git;a=summary qemu git tree]
+
The QEMU emulation is able to run Linux and HP-UX. HP-UX support still needs improvement which is being worked on.
* 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"
+
  
== PRE-INSTALLED AND READY-TO-RUN QEMU IMAGE ==
+
QEMU on parisc has been made available by:
 +
* [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:svens@stackframe.org Sven Schnelle]: Lots of fixes all over QEMU and SeaBIOS (SCSI, CPU emulation fixes, SeaBIOS PDC firmware)
  
* Download from http://backup.parisc-linux.org/qemu/debian-10-hdd-img.tar.bz2
+
== Ready-to-run QEMU image for parisc ==
* Unzip image: tar xvfj debian-10-hdd-img.tar.bz2
+
 
* Run qemu:
+
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  
 
  ./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"
+
Log in as '''root''', root password is "'''rootme'''"
 +
 
 +
== How to build QEMU from source ==
 +
 
 +
Check out the [https://git.qemu.org/?p=qemu.git;a=summary 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"
  
== EXAMPLE HOW TO RUN QEMU WITH DEBIAN-10 INSTALL IMAGE ==
+
== How to run QEMU with Debian-10 installer image ==
  
 
* Create a virtual hard disc once:
 
* Create a virtual hard disc once:
Line 44: Line 57:
 
  deb-src http://ftp.debian.org/debian unstable main
 
  deb-src http://ftp.debian.org/debian unstable main
  
TODO:
+
== Some QEMU notes ==
* Boot-cd should boot the 32-bit SMP kernel by default
+
* Make debian-installer install the 32-bit SMP kernel on QEMU (if started with multiple CPUs)
+
* Installer: (1 of 2) A start job is running for font and keyboard layout (1min 10s / no limit)
+
 
+
  
 +
Prefer the e1000 driver over the rtl8129 card. The latter gives irq issues with Dino emulation.
  
 
Possible qemu options:
 
Possible qemu options:
Line 61: Line 71:
 
* -device VGA      - provide PCI VGA graphic card
 
* -device VGA      - provide PCI VGA graphic card
  
== qemu notes ==
+
== Tips and Tricks when running an emulation ==
 +
 
 +
* Linux kernel >= 4.14 runs best. Initial Linux kernel optimizations were added to kernel >= 4.9.
 +
* 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".
 +
 
 +
== Possible emulation guest targets ==
 +
 
 +
* [https://en.wikipedia.org/wiki/HP-UX HP-UX], versions 9.x up to 11.11
 +
* Linux (Debian, Gentoo), latest releases (>= 4.14) preferred
 +
* [https://wiki.netbsd.org/ports/hppa/ NetBSD]
 +
* [https://winworldpc.com/product/nextstep/3x NextSTEP]
 +
 
 +
== QEMU on 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
 +
 
 +
(info by Nick Hudson <nick.hudson@gmx.co.uk>)
 +
 
 +
== Future QEMU work ==
  
* Prefer the e1000 driver over the rtl8129 card. The latter gives irq issues with Dino emulation.
+
* 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)
 +
* Emulate Lasi (i82596) and Tulip (DEC 21x40) network cards in Qemu
 +
* Artist graphics emulation in Qemu
 +
* STI text emulation in SeaBIOS with VGA
 +
* More correct emulation of B160L in Qemu, e.g. seriell ports, PS/2 keyboard & mouse, graphics card
 +
* Elroy PCI emulation, then emulate e.g. a C3000?
 +
* PA2.0/64bit (low prio)
 +
* ...
 +
* '''Push SeaBIOS changes upstream!!'''

Revision as of 08:46, 17 April 2019

Contents

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). All necessary changes have been merged into the upstream qemu git tree.

PA-RISC machines need a firmware ("PDC" = Processor Dependend Code). Qemu includes 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. HP-UX support still needs improvement which is being worked on.

QEMU on parisc has been made available 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)

Ready-to-run 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 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"

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

Some QEMU notes

Prefer the e1000 driver over the rtl8129 card. The latter gives irq issues with Dino emulation.

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 hard disc
  • -boot order=d - Firmware: Boot from CD/DVD
  • -serial mon:stdio use serial console
  • -nographic - no graphics device
  • -device VGA - provide PCI VGA graphic card

Tips and Tricks when running an emulation

  • Linux kernel >= 4.14 runs best. Initial Linux kernel optimizations were added to kernel >= 4.9.
  • 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".

Possible emulation guest targets

  • HP-UX, versions 9.x up to 11.11
  • Linux (Debian, Gentoo), latest releases (>= 4.14) preferred
  • NetBSD
  • NextSTEP

QEMU on 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

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

Future QEMU work

  • 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)
  • Emulate Lasi (i82596) and Tulip (DEC 21x40) network cards in Qemu
  • Artist graphics emulation in Qemu
  • STI text emulation in SeaBIOS with VGA
  • More correct emulation of B160L in Qemu, e.g. seriell ports, PS/2 keyboard & mouse, graphics card
  • Elroy PCI emulation, then emulate e.g. a C3000?
  • PA2.0/64bit (low prio)
  • ...
  • Push SeaBIOS changes upstream!!
Personal tools