diff options
author | Martin Jansa <martin.jansa@gmail.com> | 2017-04-27 22:53:35 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-04-29 11:17:22 +0100 |
commit | 9784ad79a4d0b75507f1bdff8454e86aabb8f759 (patch) | |
tree | dbb5be22f6b42a31d1f7e69c49cd13d7ea5b408d /scripts | |
parent | d4dafce19bd198bde11c567bf3fc4786e5eadf3f (diff) | |
download | poky-9784ad79a4d0b75507f1bdff8454e86aabb8f759.tar.gz |
runqemu-gen-tapdevs: fix runqemu-ifup script call
The tunctl binary is here:
OE @ /OE/openembedded-core # find /OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/
/OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/
/OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/sysroot-providers
/OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/sysroot-providers/qemu-helper-native
/OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/usr
/OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/usr/bin
/OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/usr/bin/tunctl
But the script still complains that it cannot find tunctl:
OE @ /OE/openembedded-core # ./scripts/runqemu-gen-tapdevs 1026 1026 4 /OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/
Note: Destroying pre-existing tap interface tap0...
TUNSETIFF: Device or resource busy
Creating 4 tap devices for UID: 1026 GID: 1026...
Creating tap0
Error running tunctl: Error: Unable to find tunctl binary in '/OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/', please bitbake qemu-helper-native
The message is actually from runqemu-ifup, which is called from runqemu-gen-tapdevs as:
++ ./scripts/runqemu-ifup 1026 1026 /OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/
But runqemu-ifup expects 3rd parameter to be STAGING_BINDIR_NATIVE directly not just SYSROOT dir
STAGING_BINDIR_NATIVE=$3
because tunctl is then used as:
TUNCTL=$STAGING_BINDIR_NATIVE/tunctl
It looks like it got broken by:
commit cc5513bf7a6114e14bb307acb88a44e9cf0aed8a
Author: Ed Bartosh <ed.bartosh@linux.intel.com>
Date: Wed Apr 12 23:40:59 2017 +0300
runqemu: use bindir_native property to run ifup/down scripts
Used self.bindir_native to point out to the native sysroot
when running runqemu-ifup and runqemu-ifdown scripts.
[YOCTO #11266]
[YOCTO #11193]
Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Seemingly obvious fix would be to call runqemu-gen-tapdevs with path to STAGING_BINDIR_NATIVE in 4th parameter as well, but that won't work, because runqemu-gen-tapdevs checks for TUNCTL=$SYSROOT/usr/bin/tunctl
OE @ /OE/openembedded-core # ./scripts/runqemu-gen-tapdevs 1026 1026 4 /OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/usr/bin/
Error: /OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/usr/bin//usr/bin/tunctl is not an executable
I've tested that with this change it can call tunctl:
OE @ /OE/openembedded-core # ./scripts/runqemu-gen-tapdevs 1026 1026 4
/OE/build/oe-core/tmp-glibc/sysroots-components/x86_64/qemu-helper-native/usr/bin
Note: Destroying pre-existing tap interface tap0...
TUNSETIFF: Device or resource busy
Creating 4 tap devices for UID: 1026 GID: 1026...
Creating tap0
Creating tap1
Creating tap2
Creating tap3
Note: For systems running NetworkManager, it's recommended
Note: that the tap devices be set as unmanaged in the
Note: NetworkManager.conf file. Add the following lines to
Note: /etc/NetworkManager/NetworkManager.conf
[keyfile]
unmanaged-devices=interface-name:tap*
but runqemu itself still doesn't work for me:
OE qemux86@ ~/build/oe-core $ runqemu
runqemu - INFO - Running MACHINE=qemux86 bitbake -e...
runqemu - INFO - Running ls -t /OE/build/oe-core/tmp-glibc/deploy/images/qemux86/*.qemuboot.conf...
runqemu - INFO - CONFFILE: /OE/build/oe-core/tmp-glibc/deploy/images/qemux86/core-image-sato-qemux86-20170427174052.qemuboot.conf
runqemu - INFO - Overriding conf file setting of STAGING_DIR_NATIVE to /OE/build/oe-core/tmp-glibc/work/i586-oe-linux/defaultpkgname/1.0-r0/recipe-sysroot-native from Bitbake environment
runqemu - INFO - Continuing with the following parameters:
KERNEL: [tmp-glibc/deploy/images/qemux86/bzImage--4.10.9+git0+ad2e885015_fe0fb8da3d-r0.2-qemux86-20170427085800.bin]
MACHINE: [qemux86]
FSTYPE: [ext4]
ROOTFS: [tmp-glibc/deploy/images/qemux86/core-image-sato-qemux86-20170427174052.rootfs.ext4]
CONFFILE: [/OE/build/oe-core/tmp-glibc/deploy/images/qemux86/core-image-sato-qemux86-20170427174052.qemuboot.conf]
runqemu - INFO - Running /bin/ip link...
runqemu - INFO - Acquiring lockfile /tmp/qemu-tap-locks/tap0.lock...
runqemu - INFO - Using preconfigured tap device tap0
runqemu - INFO - If this is not intended, touch /tmp/qemu-tap-locks/tap0.skip to make runqemu skip tap0.
runqemu - INFO - Network configuration: 192.168.7.2::192.168.7.1:255.255.255.0
runqemu - INFO - Running ldd tmp-glibc/work/x86_64-linux/qemu-helper-native/1.0-r1/recipe-sysroot-native/usr/bin//qemu-system-i386...
runqemu - INFO - Running tmp-glibc/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-glibc/deploy/images/qemux86/core-image-sato-qemux86-20170427174052.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-glibc/deploy/images/qemux86/bzImage--4.10.9+git0+ad2e885015_fe0fb8da3d-r0.2-qemux86-20170427085800.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 '
qemu-system-i386: -netdev tap,id=net0,ifname=tap0,script=no,downscript=no: could not configure /dev/net/tun (tap0): Device or resource busy
runqemu - INFO - Releasing lockfile for tap device 'tap0'
Traceback (most recent call last):
File "/OE/build/oe-core/openembedded-core/scripts/runqemu", line 1235, in <module>
ret = main()
File "/OE/build/oe-core/openembedded-core/scripts/runqemu", line 1228, in main
config.start_qemu()
File "/OE/build/oe-core/openembedded-core/scripts/runqemu", line 1139, in start_qemu
raise Exception('Failed to run %s' % cmd)
Exception: Failed to run tmp-glibc/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-glibc/deploy/images/qemux86/core-image-sato-qemux86-20170427174052.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-glibc/deploy/images/qemux86/bzImage--4.10.9+git0+ad2e885015_fe0fb8da3d-r0.2-qemux86-20170427085800.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 '
(From OE-Core rev: a31b1434c5f1edbd4e8faca813b4f084297c061d)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/runqemu-gen-tapdevs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/scripts/runqemu-gen-tapdevs b/scripts/runqemu-gen-tapdevs index 49e1efce7c..11de318c1a 100755 --- a/scripts/runqemu-gen-tapdevs +++ b/scripts/runqemu-gen-tapdevs | |||
@@ -23,13 +23,13 @@ | |||
23 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | 23 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
24 | 24 | ||
25 | usage() { | 25 | usage() { |
26 | echo "Usage: sudo $0 <uid> <gid> <num> <native-sysroot-basedir>" | 26 | echo "Usage: sudo $0 <uid> <gid> <num> <staging_bindir_native>" |
27 | echo "Where <uid> is the numeric user id the tap devices will be owned by" | 27 | echo "Where <uid> is the numeric user id the tap devices will be owned by" |
28 | echo "Where <gid> is the numeric group id the tap devices will be owned by" | 28 | echo "Where <gid> is the numeric group id the tap devices will be owned by" |
29 | echo "<num> is the number of tap devices to create (0 to remove all)" | 29 | echo "<num> is the number of tap devices to create (0 to remove all)" |
30 | echo "<native-sysroot-basedir> is the path to the build system's native sysroot" | 30 | echo "<native-sysroot-basedir> is the path to the build system's native sysroot" |
31 | echo "e.g. $ bitbake qemu-helper-native" | 31 | echo "e.g. $ bitbake qemu-helper-native" |
32 | echo "$ sudo $0 1000 1000 4 tmp/sysroots-components/x86_64/qemu-helper-native/" | 32 | echo "$ sudo $0 1000 1000 4 tmp/sysroots-components/x86_64/qemu-helper-native/usr/bin" |
33 | exit 1 | 33 | exit 1 |
34 | } | 34 | } |
35 | 35 | ||
@@ -46,9 +46,9 @@ fi | |||
46 | TUID=$1 | 46 | TUID=$1 |
47 | GID=$2 | 47 | GID=$2 |
48 | COUNT=$3 | 48 | COUNT=$3 |
49 | SYSROOT=$4 | 49 | STAGING_BINDIR_NATIVE=$4 |
50 | 50 | ||
51 | TUNCTL=$SYSROOT/usr/bin/tunctl | 51 | TUNCTL=$STAGING_BINDIR_NATIVE/tunctl |
52 | if [[ ! -x "$TUNCTL" || -d "$TUNCTL" ]]; then | 52 | if [[ ! -x "$TUNCTL" || -d "$TUNCTL" ]]; then |
53 | echo "Error: $TUNCTL is not an executable" | 53 | echo "Error: $TUNCTL is not an executable" |
54 | usage | 54 | usage |
@@ -87,7 +87,7 @@ if [ $COUNT -gt 0 ]; then | |||
87 | echo "Creating $COUNT tap devices for UID: $TUID GID: $GID..." | 87 | echo "Creating $COUNT tap devices for UID: $TUID GID: $GID..." |
88 | for ((index=0; index < $COUNT; index++)); do | 88 | for ((index=0; index < $COUNT; index++)); do |
89 | echo "Creating tap$index" | 89 | echo "Creating tap$index" |
90 | ifup=`$RUNQEMU_IFUP $TUID $GID $SYSROOT 2>&1` | 90 | ifup=`$RUNQEMU_IFUP $TUID $GID $STAGING_BINDIR_NATIVE 2>&1` |
91 | if [ $? -ne 0 ]; then | 91 | if [ $? -ne 0 ]; then |
92 | echo "Error running tunctl: $ifup" | 92 | echo "Error running tunctl: $ifup" |
93 | exit 1 | 93 | exit 1 |