https://launchpad.net/ubuntu/+source/libguestfs/1:1.38.1-1ubuntu2 is in Cosmic. So Cosmic is done.
I'll check if Bionic is trivial or not and then report back here, the older ones are out of scope IMHO unless IBM provides the backports needed. ** Changed in: libguestfs (Ubuntu) Status: Fix Committed => Fix Released ** Changed in: libguestfs (Ubuntu Xenial) Status: Incomplete => Won't Fix ** Changed in: libguestfs (Ubuntu Artful) Status: Incomplete => Won't Fix -- You received this bug notification because you are a member of नेपाली भाषा समायोजकहरुको समूह, which is subscribed to Xenial. Matching subscriptions: Ubuntu 16.04 Bugs https://bugs.launchpad.net/bugs/1766534 Title: libguestfs cannot start the qemu process on s390x Status in Ubuntu on IBM z Systems: In Progress Status in libguestfs package in Ubuntu: Fix Released Status in libguestfs source package in Xenial: Won't Fix Status in libguestfs source package in Artful: Won't Fix Status in libguestfs source package in Bionic: Incomplete Bug description: The libguestfs versions < 1.37.22 don't work on s390x, as they don't contain the patches which include the s390x specifics to instruct qemu-kvm correctly. Ubuntu 16.04 contains an older version than that, which makes libguestfs not usable on s390x. Steps to reproduce ================== A chronological list of steps which will bring off the issue I noticed: mz@s390xhost$ docker run -it --privileged --rm ubuntu:xenial bash root@5dde0aef5d2e:/# root@5dde0aef5d2e:/# root@5dde0aef5d2e:/# apt update root@5dde0aef5d2e:/# DEBIAN_FRONTEND=noninteractive apt install -y \ libguestfs-tools \ python-libguestfs \ linux-image-generic \ qemu root@5dde0aef5d2e:/# root@5dde0aef5d2e:/# root@5dde0aef5d2e:/# export LIBGUESTFS_DEBUG=1 root@5dde0aef5d2e:/# export LIBGUESTFS_TRACE=1 root@5dde0aef5d2e:/# libguestfs-test-tool Expected result =============== The libguestfs-test-tool passes and I can use it on s390x. To check if qemu on s390x works independently from libguestfs, I use this command: root@5dde0aef5d2e:/# qemu-system-s390x \ -enable-kvm \ -nographic \ -kernel /boot/vmlinuz-4.4.0-119-generic \ -initrd /boot/initrd.img-4.4.0-119-generic \ -m 1G \ -M s390-ccw-virtio [...] # boot BusyBox v1.22.1 (Ubuntu 1:1.22.0-15ubuntu1) built-in shell (ash) Enter 'help' for a list of built-in commands. (initramfs) Actual result ============= libguestfs instructs qemu to use pci devices and serial consoles which doesn't work on s390x, e.g.: root@5dde0aef5d2e:/# libguestfs-test-tool ************************************************************ * IMPORTANT NOTICE * * When reporting bugs, include the COMPLETE, UNEDITED * output below in your bug report. * ************************************************************ libguestfs: trace: set_verbose true libguestfs: trace: set_verbose = 0 libguestfs: trace: set_verbose true libguestfs: trace: set_verbose = 0 LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SELinux: sh: 1: getenforce: not found libguestfs: trace: add_drive_scratch 104857600 libguestfs: trace: get_tmpdir libguestfs: trace: get_tmpdir = "/tmp" libguestfs: trace: disk_create "/tmp/libguestfs82Gj1d/scratch.1" "raw" 104857600 libguestfs: trace: disk_create = 0 libguestfs: trace: add_drive "/tmp/libguestfs82Gj1d/scratch.1" "format:raw" "cachemode:unsafe" libguestfs: trace: add_drive = 0 libguestfs: trace: add_drive_scratch = 0 libguestfs: trace: get_append libguestfs: trace: get_append = "NULL" guestfs_get_append: (null) libguestfs: trace: get_autosync libguestfs: trace: get_autosync = 1 guestfs_get_autosync: 1 libguestfs: trace: get_backend libguestfs: trace: get_backend = "direct" guestfs_get_backend: direct libguestfs: trace: get_backend_settings libguestfs: trace: get_backend_settings = [] guestfs_get_backend_settings: [] libguestfs: trace: get_cachedir libguestfs: trace: get_cachedir = "/var/tmp" guestfs_get_cachedir: /var/tmp libguestfs: trace: get_direct libguestfs: trace: get_direct = 0 guestfs_get_direct: 0 libguestfs: trace: get_hv libguestfs: trace: get_hv = "/usr/bin/qemu-system-s390x" guestfs_get_hv: /usr/bin/qemu-system-s390x libguestfs: trace: get_memsize libguestfs: trace: get_memsize = 500 guestfs_get_memsize: 500 libguestfs: trace: get_network libguestfs: trace: get_network = 0 guestfs_get_network: 0 libguestfs: trace: get_path libguestfs: trace: get_path = "/usr/lib/s390x-linux-gnu/guestfs" guestfs_get_path: /usr/lib/s390x-linux-gnu/guestfs libguestfs: trace: get_pgroup libguestfs: trace: get_pgroup = 0 guestfs_get_pgroup: 0 libguestfs: trace: get_program libguestfs: trace: get_program = "libguestfs-test-tool" guestfs_get_program: libguestfs-test-tool libguestfs: trace: get_recovery_proc libguestfs: trace: get_recovery_proc = 1 guestfs_get_recovery_proc: 1 libguestfs: trace: get_selinux libguestfs: trace: get_selinux = 0 guestfs_get_selinux: 0 libguestfs: trace: get_smp libguestfs: trace: get_smp = 1 guestfs_get_smp: 1 libguestfs: trace: get_tmpdir libguestfs: trace: get_tmpdir = "/tmp" guestfs_get_tmpdir: /tmp libguestfs: trace: get_trace libguestfs: trace: get_trace = 1 guestfs_get_trace: 1 libguestfs: trace: get_verbose libguestfs: trace: get_verbose = 1 guestfs_get_verbose: 1 host_cpu: s390x Launching appliance, timeout set to 600 seconds. libguestfs: trace: launch libguestfs: trace: version libguestfs: trace: version = <struct guestfs_version *> libguestfs: trace: get_backend libguestfs: trace: get_backend = "direct" libguestfs: launch: program=libguestfs-test-tool libguestfs: launch: version=1.32.2 libguestfs: launch: backend registered: unix libguestfs: launch: backend registered: uml libguestfs: launch: backend registered: libvirt libguestfs: launch: backend registered: direct libguestfs: launch: backend=direct libguestfs: launch: tmpdir=/tmp/libguestfs82Gj1d libguestfs: launch: umask=0022 libguestfs: launch: euid=0 libguestfs: trace: get_backend_setting "force_tcg" libguestfs: trace: get_backend_setting = NULL (error) libguestfs: trace: get_cachedir libguestfs: trace: get_cachedir = "/var/tmp" libguestfs: [00000ms] begin building supermin appliance libguestfs: [00000ms] run supermin libguestfs: command: run: /usr/bin/supermin libguestfs: command: run: \ --build libguestfs: command: run: \ --verbose libguestfs: command: run: \ --if-newer libguestfs: command: run: \ --lock /var/tmp/.guestfs-0/lock libguestfs: command: run: \ --copy-kernel libguestfs: command: run: \ -f ext2 libguestfs: command: run: \ --host-cpu s390x libguestfs: command: run: \ /usr/lib/s390x-linux-gnu/guestfs/supermin.d libguestfs: command: run: \ -o /var/tmp/.guestfs-0/appliance.d supermin: version: 5.1.14 supermin: package handler: debian/dpkg supermin: acquiring lock on /var/tmp/.guestfs-0/lock supermin: build: /usr/lib/s390x-linux-gnu/guestfs/supermin.d supermin: reading the supermin appliance supermin: build: visiting /usr/lib/s390x-linux-gnu/guestfs/supermin.d/base.tar.gz type gzip base image (tar) supermin: build: visiting /usr/lib/s390x-linux-gnu/guestfs/supermin.d/daemon.tar.gz type gzip base image (tar) supermin: build: visiting /usr/lib/s390x-linux-gnu/guestfs/supermin.d/excludefiles type uncompressed excludefiles supermin: build: visiting /usr/lib/s390x-linux-gnu/guestfs/supermin.d/hostfiles type uncompressed hostfiles supermin: build: visiting /usr/lib/s390x-linux-gnu/guestfs/supermin.d/init.tar.gz type gzip base image (tar) supermin: build: visiting /usr/lib/s390x-linux-gnu/guestfs/supermin.d/packages type uncompressed packages supermin: build: visiting /usr/lib/s390x-linux-gnu/guestfs/supermin.d/packages-hfsplus type uncompressed packages supermin: build: visiting /usr/lib/s390x-linux-gnu/guestfs/supermin.d/packages-reiserfs type uncompressed packages supermin: build: visiting /usr/lib/s390x-linux-gnu/guestfs/supermin.d/packages-xfs type uncompressed packages supermin: build: visiting /usr/lib/s390x-linux-gnu/guestfs/supermin.d/udev-rules.tar.gz type gzip base image (tar) supermin: mapping package names to installed packages supermin: resolving full list of package dependencies supermin: build: 194 packages, including dependencies supermin: build: 6751 files supermin: build: 3694 files, after matching excludefiles supermin: build: 3696 files, after adding hostfiles supermin: build: 3696 files, after removing unreadable files supermin: build: 3700 files, after munging supermin: kernel: picked kernel vmlinuz-4.4.0-119-generic supermin: kernel: picked modules path /lib/modules/4.4.0-119-generic supermin: kernel: kernel_version 4.4.0-119-generic supermin: kernel: modules /lib/modules/4.4.0-119-generic supermin: ext2: creating empty ext2 filesystem '/var/tmp/.guestfs-0/appliance.d.s5hkw6ja/root' supermin: ext2: populating from base image supermin: ext2: copying files from host filesystem supermin: ext2: copying kernel modules supermin: ext2: creating minimal initrd '/var/tmp/.guestfs-0/appliance.d.s5hkw6ja/initrd' supermin: ext2: wrote 9 modules to minimal initrd supermin: renaming /var/tmp/.guestfs-0/appliance.d.s5hkw6ja to /var/tmp/.guestfs-0/appliance.d libguestfs: [01090ms] finished building supermin appliance libguestfs: [01090ms] begin testing qemu features libguestfs: command: run: /usr/bin/qemu-system-s390x libguestfs: command: run: \ -display none libguestfs: command: run: \ -help libguestfs: command: run: /usr/bin/qemu-system-s390x libguestfs: command: run: \ -display none libguestfs: command: run: \ -version libguestfs: qemu version 2.5 libguestfs: command: run: /usr/bin/qemu-system-s390x libguestfs: command: run: \ -display none libguestfs: command: run: \ -machine accel=kvm:tcg libguestfs: command: run: \ -device ? libguestfs: [01166ms] finished testing qemu features libguestfs: trace: get_backend_setting "gdb" libguestfs: trace: get_backend_setting = NULL (error) [01172ms] /usr/bin/qemu-system-s390x \ -global virtio-blk-pci.scsi=off \ -nodefconfig \ -enable-fips \ -nodefaults \ -display none \ -machine accel=kvm:tcg \ -cpu host \ -m 500 \ -no-reboot \ -rtc driftfix=slew \ -global kvm-pit.lost_tick_policy=discard \ -kernel /var/tmp/.guestfs-0/appliance.d/kernel \ -initrd /var/tmp/.guestfs-0/appliance.d/initrd \ -device virtio-scsi-pci,id=scsi \ -drive file=/tmp/libguestfs82Gj1d/scratch.1,cache=unsafe,format=raw,id=hd0,if=none \ -device scsi-hd,drive=hd0 \ -drive file=/var/tmp/.guestfs-0/appliance.d/root,snapshot=on,id=appliance,cache=unsafe,if=none \ -device scsi-hd,drive=appliance \ -device virtio-serial-pci \ -serial stdio \ -chardev socket,path=/tmp/libguestfs82Gj1d/guestfsd.sock,id=channel0 \ -device virtserialport,chardev=channel0,name=org.libguestfs.channel.0 \ -append 'panic=1 console=ttyS0 udevtimeout=6000 udev.event-timeout=6000 no_timer_check acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0 guestfs_verbose=1 TERM=xterm' qemu-system-s390x: Warning: global kvm-pit.lost_tick_policy has invalid class name Alarm clock Environment =========== This affects ubuntu 16.04 (see below) host ---- $ lsb_release -a LSB Version: core-9.20160110ubuntu0.2-noarch:core-9.20160110ubuntu0.2-s390x:printing-9.20160110ubuntu0.2-noarch:printing-9.20160110ubuntu0.2-s390x:security-9.20160110ubuntu0.2-noarch:security-9.20160110ubuntu0.2-s390x Distributor ID: Ubuntu Description: Ubuntu 16.04.4 LTS Release: 16.04 Codename: xenial container --------- root@5dde0aef5d2e:/# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release: 16.04 Codename: xenial root@5dde0aef5d2e:/# apt-cache policy libguestfs-tools libguestfs-tools: Installed: 1:1.32.2-4ubuntu2 Candidate: 1:1.32.2-4ubuntu2 Version table: *** 1:1.32.2-4ubuntu2 500 500 http://ports.ubuntu.com/ubuntu-ports xenial/universe s390x Packages 100 /var/lib/dpkg/status Additional information ====================== Please be aware that there this is a known libguestfs upstream bug [1] which is already fixed and backported by RedHat [2][3] and was the trigger for a patch series on the libguestfs mailing list [4]. As an example, the latest known needed patch is [5]. As a smoke test, in case the libguestfs-test-tool result was a false positive, I used the python binding code in Appendix A below, which is based on [6]. FWIW, I checked Ubuntu 18.04 (beta), and it doesn't work there too. The packaged version of libguestfs is v1.36 in 18.04 bionic beaver, which is too old (and/or doesn't contain the needed backports). References ========== [1] Bug 1376547 - qemu-system-s390x: -device isa-serial,chardev=charserial0, id=serial0: 'isa-serial' is not a valid device model name https://bugzilla.redhat.com/show_bug.cgi?id=1376547 [2] [Private] Bug 1479526 - [RFE] libguestfs for z Systems https://bugzilla.redhat.com/show_bug.cgi?id=1479526 [3] The RHEL7.5 branch of libguestfs with backports to v1.36 https://github.com/libguestfs/libguestfs/tree/rhel-7.5 [4] The patch series of libguestfs on s390x: https://www.redhat.com/archives/libguestfs/2017-May/msg00066.html [5] Fix of an x86 specific item to enable s390x in v1.37.22 https://github.com/libguestfs/libguestfs/commit/5b60dd4eff02f48d344bcdad0d4bad4676ca9168 [6] https://rwmj.wordpress.com/2010/02/01/libguestfs-python-example/ Appendix A ========== Smoke test, based on the example from the author of libguestfs [6]: root@26248e573a87:/# cat smoke.py #!/usr/bin/python # To see the Python docs, do: help (guestfs) # To see the general docs http://libguestfs.org/guestfs.3.html # For FAQ see http://libguestfs.org/FAQ.html import os import guestfs g = guestfs.GuestFS() f = open("/tmp/test.img", "w") f.truncate(500 * 1024 * 1024) f.close() g.add_drive("/tmp/test.img") g.launch() g.part_disk("/dev/sda", "mbr") g.mkfs("ext2", "/dev/sda1") g.mount("/dev/sda1", "/") f = open("/tmp/ks.cfg", "w") f.write("# this would be the kickstart file\n") f.write("#\n") f.write ("# end of file\n") f.close() g.upload("/tmp/ks.cfg", "/ks.cfg") g.sync() g.umount_all() == Comment: #1 - Markus Zoeller <mzoel...@de.ibm.com> - 2018-04-20 06:51:10 == With the Debian Sid repository I could install libguestfs v1.38 in an Ubuntu 18.04 (bionic beaver) container, all on s390x: [mz@s390xhost]$ docker run -it --privileged --rm s390x/ubuntu:18.04 bash $ apt update $ apt install -y vim $ apt-cache policy libguestfs-tools $ apt install -y software-properties-common \ debian-archive-keyring \ dirmngr $ apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553 $ apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010 $ add-apt-repository "deb http://ftp.de.debian.org/debian sid main" $ cat << EOF > /etc/apt/preferences.d/libguestfs.pref # Note: 2 blank lines are required between entries Package: * Pin: release a=bionic Pin-Priority: 500 Package: * Pin: origin "ftp.de.debian.org" Pin-Priority: 300 # Pattern includes 'python-guestfs' and 'libguestfs-tools' and similarily named dependencies Package: *guestfs* Pin: origin "ftp.de.debian.org" Pin-Priority: 700 EOF $ cat /etc/apt/preferences.d/libguestfs.pref $ apt update $ apt-cache policy libguestfs-tools $ DEBIAN_FRONTEND=noninteractive apt install -y \ libguestfs-tools \ python-libguestfs \ linux-image-generic \ qemu-system \ qemu-kvm $ apt-cache policy libguestfs-tools $ export LIBGUESTFS_DEBUG=1 $ export LIBGUESTFS_TRACE=1 $ libguestfs-test-tool [...] ===== TEST FINISHED OK ===== This verifies that libguestfs v1.38 has the needed code to work on s390x. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-z-systems/+bug/1766534/+subscriptions _______________________________________________ Mailing list: https://launchpad.net/~group.of.nepali.translators Post to : group.of.nepali.translators@lists.launchpad.net Unsubscribe : https://launchpad.net/~group.of.nepali.translators More help : https://help.launchpad.net/ListHelp