Bug 11170

Summary: runqemu broken with recipe sysroots
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Jussi Kukkonen <jku>
Component: devtools / tool chainAssignee: brian avery <brian.avery>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: High CC: brian.avery, jose.perez.carranza, meta.mr.watcher, meta.watcher, oscarx.lopez.arandas
Version: 2.3   
Target Milestone: 2.3 M4   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: Regression (Used to work)
Verified: Documentation change: No (bug/feature does not impact docs)
Attachments:
Description Flags
runqemux none

Description Jussi Kukkonen 2017-03-16 07:46:38 UTC
Some runqemu functionality seems to be broken with recipe sysroots.

I needed to test a QA image so downloaded the 2.3 M2 rc3 rootfs and kernel image and tried to run like this in a oe initialized environment (which I believe used to work):

runqemu ~/bzImage--4.8.17+git0+3edb4de355_9bcb4ea3fa-r0.2-qemux86-20170202012221.bin ~/core-image-sato-sdk-qemux86-20170202090705.rootfs.tar.bz2

Issues encountered:

1. Does not find native QEMU:
| runqemu - INFO - QEMU binary not found in /mnt/extra-ssd/tmp/work/core2-64-poky-linux/defaultpkgname/1.0-r0/recipe-sysroot-native/usr/bin/qemu-system-i386, trying host's QEMU


2. Does not find native tunctl:
| runqemu - INFO - Running sudo /home/jku/src/poky/scripts/runqemu-ifdown tap0 /mnt/extra-ssd/tmp/work/core2-64-poky-linux/defaultpkgname/1.0-r0/recipe-sysroot-native
| Error: Unable to find tunctl binary in '/mnt/extra-ssd/tmp/work/core2-64-poky-linux/defaultpkgname/1.0-r0/recipe-sysroot-native/usr/bin', please bitbake qemu-helper-native
Comment 1 Jose Perez C 2017-03-16 15:31:39 UTC
May be related with this Bug 11119 also.
Comment 2 Jussi Kukkonen 2017-03-17 08:13:10 UTC
(In reply to comment #1)
> May be related with this Bug 11119 also.

Yeah definitely the same issue, that one is about not finding native pseudo.
Comment 3 brian avery 2017-04-02 19:01:41 UTC
I rolled back to YP_2.2.1 and built core-image-minimal.
The following works:
runqemu tmp/deploy/images/qemux86/bzImage-qemux86.bin tmp/deploy/images/qemux86/core-image-minimal-qemux86.ext4  

---
The following fail in interesting ways:
runqemu tmp/deploy/images/qemux86/bzImage-qemux86.bin tmp/deploy/images/qemux86/core-image-minimal-qemux86.wic  
runqemu tmp/deploy/images/qemux86/bzImage-qemux86.bin tmp/deploy/images/qemux86/core-image-minimal-qemux86.cpio  
runqemu tmp/deploy/images/qemux86/bzImage-qemux86.bin tmp/deploy/images/qemux86/core-image-minimal-qemux86.tar.bz2  
+++
Basically our runqemu setup has 2 ways to run:
1) using ext[2,3,4] as a raw root image
2) using an extracted rootfs from a tar.bz2 file that was extracted using runqemu-etract-sdk . This program makes a directory structure for the rootfs and uses pseudo to manage the permissions.  Once you have a rootfs in a dir structure, it assumes you are using user mode nfs (this is how eclipse works with qemu images).
----
The problem of finding pseudo Bug 11119 is still true.
Comment 4 Jussi Kukkonen 2017-04-03 07:36:48 UTC
What you're saying is that (after the recipe sysroot related runqemu issues are handled), this bug is invalid and I should download the .ext4 rootfs version if I want to run the QA images?
Comment 5 brian avery 2017-04-03 19:37:37 UTC
correct ext4 is easiest. you can use the tar.gz version after unpacking it into a directory with runqemu-extract-sdk foo.tgz DUCK.  you will get a DUCK and a pseudo_DUCK dir. but then runqemu wants to use userspace nfs and I *think* needs some extra command line and setup stuff. not too sure about the unfsd approach.
Comment 6 brian avery 2017-04-13 19:25:37 UTC
in master commits 0637c5ab2579e03d5e503211b0b9d7e3c11e9af1 - ec9b108f468160e6f5abe215f37f7b32b3c2e305
Comment 7 oscar lopez arandas 2017-06-06 15:56:34 UTC
Runqemu work with recipe sysroots

Build Configuration:
BB_VERSION        = "1.34.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "universal"
TARGET_SYS        = "i586-poky-linux"
MACHINE           = "qemux86"
DISTRO            = "poky"
DISTRO_VERSION    = "2.3"
TUNE_FEATURES     = "m32 i586"
Commit :0637c5ab2579e03d5e503211b0b9d7e3c11e9af1

STEPS: 
https://wiki.yoctoproject.org/wiki/Steps_for_Automated_Testing_on_QEMU
    logs and evidence of need
===================================================================
root@oscar-ThinkPad-T540p:~/1747/build# runqemu qemux86
runqemu - INFO - Assuming MACHINE = qemux86
runqemu - INFO - Running MACHINE=qemux86 bitbake -e...
runqemu - INFO - MACHINE: qemux86
runqemu - INFO - DEPLOY_DIR_IMAGE: /home/oscar/1747/build/tmp/deploy/images/qemux86
runqemu - INFO - Running ls -t /home/oscar/1747/build/tmp/deploy/images/qemux86/*.qemuboot.conf...
runqemu - INFO - CONFFILE: /home/oscar/1747/build/tmp/deploy/images/qemux86/core-image-sato-qemux86-20170605173233.qemuboot.conf
runqemu - INFO - Continuing with the following parameters:

KERNEL: [tmp/deploy/images/qemux86/bzImage--4.10.15+git0+79a4c1b415_d2c1ed3c0c-r0-qemux86-20170605173233.bin]
MACHINE: [qemux86]
FSTYPE: [ext4]
ROOTFS: [tmp/deploy/images/qemux86/core-image-sato-qemux86-20170605173233.rootfs.ext4]
CONFFILE: [/home/oscar/1747/build/tmp/deploy/images/qemux86/core-image-sato-qemux86-20170605173233.qemuboot.conf]

runqemu - INFO - Running /sbin/ip link...
runqemu - INFO - Setting up tap interface under sudo
runqemu - INFO - Acquiring lockfile /tmp/qemu-tap-locks/tap0.lock...
runqemu - INFO - Created tap: tap0
runqemu - INFO - Network configuration: 192.168.7.2::192.168.7.1:255.255.255.0
runqemu - INFO - Running ldd tmp/work/x86_64-linux/qemu-helper-native/1.0-r1/recipe-sysroot-native/usr/bin//qemu-system-i386...
runqemu - INFO - Running tmp/work/x86_64-linux/qemu-helper-native/1.0-r1/recipe-sysroot-native/usr/bin//qemu-system-i386 -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:02 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -drive file=tmp/deploy/images/qemux86/core-image-sato-qemux86-20170605173233.rootfs.ext4,if=virtio,format=raw -vga vmware -show-cursor -usb -usbdevice tablet -device virtio-rng-pci   -cpu qemu32 -m 256 -serial mon:vc -serial null -kernel tmp/deploy/images/qemux86/bzImage--4.10.15+git0+79a4c1b415_d2c1ed3c0c-r0-qemux86-20170605173233.bin -append 'root=/dev/vda rw highres=off  mem=256M ip=192.168.7.2::192.168.7.1:255.255.255.0 vga=0 uvesafb.mode_option=640x480-32 oprofile.timer=1 uvesafb.task_timeout=-1 '
================================================================================
Comment 8 oscar lopez arandas 2017-06-06 15:57:36 UTC
Created attachment 3798 [details]
runqemux