summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/runqemu-ifup20
-rwxr-xr-xscripts/runqemu-internal5
2 files changed, 16 insertions, 9 deletions
diff --git a/scripts/runqemu-ifup b/scripts/runqemu-ifup
index f80538f53c..e4c3dafeef 100755
--- a/scripts/runqemu-ifup
+++ b/scripts/runqemu-ifup
@@ -34,7 +34,7 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
usage() {
- echo "sudo $(basename $0) <gid> <native-sysroot-basedir>"
+ echo "sudo $(basename $0) <uid> <gid> <native-sysroot-basedir>"
}
if [ $EUID -ne 0 ]; then
@@ -42,13 +42,14 @@ if [ $EUID -ne 0 ]; then
exit 1
fi
-if [ $# -ne 2 ]; then
+if [ $# -ne 3 ]; then
usage
exit 1
fi
-GROUP="-g $1"
-NATIVE_SYSROOT_DIR=$2
+USERID="-u $1"
+GROUP="-g $2"
+NATIVE_SYSROOT_DIR=$3
TUNCTL=$NATIVE_SYSROOT_DIR/usr/bin/tunctl
if [ ! -x "$TUNCTL" ]; then
@@ -59,9 +60,14 @@ fi
TAP=`$TUNCTL -b $GROUP 2>&1`
STATUS=$?
if [ $STATUS -ne 0 ]; then
- echo "tunctl failed:"
- echo $TAP
- exit 1
+# If tunctl -g fails, try using tunctl -u, for older host kernels
+# which do not support the TUNSETGROUP ioctl
+ TAP=`$TUNCTL -b $USERID 2>&1`
+ STATUS=$?
+ if [ $STATUS -ne 0 ]; then
+ echo "tunctl failed:"
+ exit 1
+ fi
fi
IFCONFIG=`which ifconfig 2> /dev/null`
diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
index 1831a098c6..fb0d80660f 100755
--- a/scripts/runqemu-internal
+++ b/scripts/runqemu-internal
@@ -173,13 +173,14 @@ if [ "$TAP" = "" ]; then
fi
GROUPID=`id -g`
+ USERID=`id -u`
echo "Setting up tap interface under sudo"
# Redirect stderr since we could see a LD_PRELOAD warning here if pseudo is loaded
# but inactive. This looks scary but is harmless
- tap=`sudo $QEMUIFUP $GROUPID $OECORE_NATIVE_SYSROOT 2> /dev/null`
+ tap=`sudo $QEMUIFUP $USERID $GROUPID $OECORE_NATIVE_SYSROOT 2> /dev/null`
if [ $? -ne 0 ]; then
# Re-run standalone to see verbose errors
- sudo $QEMUIFUP $GROUPID $OECORE_NATIVE_SYSROOT
+ sudo $QEMUIFUP $USERID $GROUPID $OECORE_NATIVE_SYSROOT
return
fi
LOCKFILE="$LOCKDIR/$tap"