MP review ok, test ok - submitted for SRU => https://launchpadlibrarian.net/380778969/libguestfs_1.36.13-1ubuntu3.1_source.changes
** Description changed: + [Impact] + + * the way libguestfs launches libvirt is not working on s390x + + * backport fixes to work on that platform as well + + * The TL;DR of the changes is to add arch specific options to the calls + being made + + [Test Case] + + * TL;DR: install and use libguestfs-tools on s390x + IBM outlined a test using the libvrtguestfs-test-tool, but that is + just one of too many options to try - find more details in the comments below. + Note: IBM will assist in verifying those and already has on the PPA + + [Regression Potential] + + * This modifies how arguments are created, but it does so only for s390x so the regression should be limited to that architecture. + The issue would be that it doesn't start properly, but since that is the current state there is no real regression - it would just replacve one way of failing for another - and since the tests by IBM on the PPA were good we are convinced that even that regression-risk would not trigger. + + * The FTBFS is a build time only change and should not trigger + regressions later on. + + [Other Info] + + * Along the fix requested this fixes an FTBFS in Bionic due to the move to a new default JDK version. + + --- + 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 + 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 - + 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) - + 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 - - + 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 - + $ 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 - + 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 + 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 + 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 + 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 + 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 + 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 + 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() + 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. + [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. ** Changed in: libguestfs (Ubuntu) Assignee: Christian Ehrhardt (paelzer) => (unassigned) -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1766534 Title: libguestfs cannot start the qemu process on s390x To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-z-systems/+bug/1766534/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs