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) " + echo "sudo $(basename $0) " } 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"