- You can now download RHEL 7.2 preview packages for virt-v2v
- Windows 8, 8.1, 2012 and 2012R2 are supported: I finally worked out the complicated series of Windows registry edits needed to make this work.
- Guests with sound cards are now supported.
- Guests with VNC display port information are now supported (thanks Pino Toscano).
- There is now a test harness for virt-v2v.
- Integration with oVirt and RHEV-M.
Tag Archives: virt-tools
virt-builder now has Fedora 21 ppc64 and ppc64le images available, and you can run these under emulation on an x86-64 host. Here’s how to do it:
$ virt-builder --arch ppc64 fedora-21 \ -o fedora-21-ppc64.img
$ virt-builder --arch ppc64le fedora-21 \ -o fedora-21-ppc64le.img
To boot them:
$ qemu-system-ppc64 -M pseries -cpu POWER8 -m 4096 \ -drive file=fedora-21-ppc64[le].img \ -serial stdio
Oddly the boot messages will appear on the GUI, but the login prompt will only appear on the serial console. (Fixed)
Libvirt also has support, so with a sufficiently new version of the toolchain you can also use:
$ virt-install --import --name=guestname \ --ram=4096 --vcpus=1 \ --os-type=linux --os-variant=fedora21 \ --arch=ppc64[le] --machine pseries \ --disk=fedora-21-ppc64[le].img,format=raw $ virsh start guestname
It’s quite fun to play with Big Iron, even in an emulator that runs at about 1/1000th the speed of the real thing. I know a lot about this, because we have POWER8 machines at Red Hat, and they really are the fastest computers alive, by a significant multiple. Of course, they also cost a fortune and use huge amounts of power.
Some random observations:
virt-builder --sizeparameter cannot resize the ppc64 guest filesystem correctly, because Anaconda uses an extended partition. Workaround is to either add a second disk or to create another extended partition in the extra space.
- The disks are
ibmvscsimodel (not virtio or ide). This is the default, but something to think about if you edit or create the libvirt XML manually.
Somehow the same CPU/machine model works for both Big Endian and Little Endian guests. It must somehow auto-detect the guest type, but I couldn’t work out how that works. Anyway, it just works by magic.it’s done by the kernel
- libguestfs inspection is broken for ppc64le
- Because TCG (qemu software emulation) is single threaded, only use a single vCPU. If you use more, it’ll actually slow the thing down.
Thanks: Maros Zatko for working out the virt-install command line and implementing the virt-builder script to build the images.
A few years ago Dan Berrange added a way to send fake keyboard events to libvirt guests. You can use this to inject just a press on the Left Shift key to wake up a guest from screen blank. Very useful if you need to take a screenshot!
$ virsh send-key guest KEY_LEFTSHIFT $ sleep 1 $ virsh screenshot guest /tmp/screenshot.ppm
Update: A word of warning though. If you try this for Windows guests you’ll hit this message:
The solution is to hit other keys randomly. Grrr.
See end of post for an important update
UEFI firmware has a concept of persistent variables. They are used to control the boot order amongst other things. They are stored in non-volatile RAM on the system board, or for virtual machines in a host file.
These programs don’t actually edit the varstore directly. They access the kernel
/sys/firmware/efi interface, but even the kernel doesn’t edit the varstore. It just redirects to the UEFI runtime “Variable Services”, so what is really running is UEFI code (possibly proprietary, but more usually from the open source TianoCore project).
So how can you edit varstores offline? The NVRAM file format is peculiar to say the least, and the only real specification is the code that writes it from Tianocore. So somehow you must reuse that code. To make it more complicated, the varstore NVRAM format is tied to the specific firmware that uses it, so varstores used on aarch64 aren’t compatible with those on x86-64, nor are SecureBoot varstores compatible with normal ones.
virt-efivars is an attempt to do that. It’s rather “meta”. You write a small editor program (an example is included), and virt-efivars compiles it into a tiny appliance. You then boot the appliance using qemu + UEFI firmware + varstore combination, the editor program runs and edits the varstore, using the UEFI code.
It works .. at least on aarch64 which is the only convenient machine I have that has virtualized UEFI.
After studying this problem some more, Laszlo Ersek came up with a different and better plan:
- Boot qemu with only the OVMF code & varstore attached. No OS or appliance.
- This should drop you into a UEFI shell which is accessible over qemu’s serial port.
- Send appropriate
setvarcommands to update the variables. Using
expectthis should be automatable.
You can use virt-builder to make Fedora 21 aarch64 guests easily:
$ virt-builder --arch aarch64 fedora-21
but unless you have real aarch64 hardware, how do you boot them?
Well the latest qemu supports working system emulation for 64 bit ARM. So assuming you (a) have compiled a very new
qemu-system-aarch64 (I recommend qemu from git), and (b) you have the AAVMF (UEFI for aarch64) firmware, then:
$ qemu-system-aarch64 \ -nodefconfig -nodefaults -display none \ -M virt -cpu cortex-a57 -machine accel=tcg -m 2048 \ -drive if=pflash,format=raw,file=AAVMF_CODE.fd,readonly \ -drive if=pflash,format=raw,file=vars.fd \ -drive file=fedora-21.img,format=raw,if=none,id=hd0 \ -device virtio-blk-device,drive=hd0 \ -netdev user,id=usernet \ -device virtio-net-device,netdev=usernet \ -serial stdio
And that will boot the aarch64 guest.
Edit: If using Gerd’s AAVMF repo, replace
Why has wordpress.com decided to break all inline images in postings?
If you have ARM 64 bit hardware, you can now use virt-builder to create Fedora 21 guests …
$ virt-builder fedora-21 [ 1.0] Downloading: http://libguestfs.org/download/builder/fedora-21-aarch64.xz [ 5.0] Planning how to build this image [ 5.0] Uncompressing [ 12.0] Opening the new disk [ 44.0] Setting a random seed [ 44.0] Setting passwords virt-builder: Setting random password of root to JRjjjDxEfsZuCWca [ 47.0] Finishing off Output file: fedora-21.img Output size: 4.0G Output format: raw Total usable space: 5.2G Free space: 4.4G (85%)
I’m thankful to Pino Toscano for adding multi-architecture support to virt-builder a while back.
As shown above, virt-builder will pick the right architecture corresponding to the host, or you can override its choice by using
OpenStack can now be installed using Fedora 21 or Rawhide, on aarch64 hardware.
You have to use the
packstack --allinone install method. Ceilometer doesn’t work because we don’t have mongodb on aarch64 yet, and there are a selection of bugs which you need to work around until they are fixed.
The big problem is I don’t have a convenient set of aarch64 cloud images to run on it yet :-(
Happy holidays everyone :-)