summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorJeff Dike <jdike@x86_64.user-mode-linux.org>2010-07-21 11:04:59 -0400
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-20 16:20:09 +0100
commitc791544bb02e852644c55401018bc17ec1b9b40e (patch)
tree33d510d91af137a96b1782b9fe8d901867d604f4 /scripts
parentb5b3825ce6df45b16e1f3e15001da213bc8b0a55 (diff)
downloadpoky-c791544bb02e852644c55401018bc17ec1b9b40e.tar.gz
qemu: Use a TAP device instead of slirp for networking
With this patch, a persistent TAP device is set up by poky-qemu-ifup, which is now run before qemu. The qemu command line now uses the device that was constructed (rather than the hard-coded tap0) and it is told not to run any networking scripts. When qemu shuts down, poky-qemu-ifdown removes the TAP device. sudo use - sudo is used to run poky-qemu-ifup. sudo is no longer used to run qemu, as qemu no longer needs privileges to set up networking. poky-qemu-ifdown is run without privileges, as you can remove a TAP device which you own. Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/poky-qemu-ifdown10
-rwxr-xr-xscripts/poky-qemu-ifup10
-rwxr-xr-xscripts/poky-qemu-internal15
3 files changed, 25 insertions, 10 deletions
diff --git a/scripts/poky-qemu-ifdown b/scripts/poky-qemu-ifdown
index 2212353118..d9e9e95861 100755
--- a/scripts/poky-qemu-ifdown
+++ b/scripts/poky-qemu-ifdown
@@ -17,11 +17,9 @@
17# with this program; if not, write to the Free Software Foundation, Inc., 17# with this program; if not, write to the Free Software Foundation, Inc.,
18# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 19
20TAP=$1
20 21
21IFCONFIG=`which ifconfig` 22TUNCTL=`which tunctl`
22if [ "x$IFCONFIG" = "x" ]; then 23[ "$TUNCTL" = "" ] && TUNCTL=/usr/sbin/tunctl
23 # better than nothing...
24 IFCONFIG=/sbin/ifconfig
25fi
26 24
27$IFCONFIG tap0 down 25$TUNCTL -d $TAP
diff --git a/scripts/poky-qemu-ifup b/scripts/poky-qemu-ifup
index cb1891e271..e7f689d251 100755
--- a/scripts/poky-qemu-ifup
+++ b/scripts/poky-qemu-ifup
@@ -17,6 +17,12 @@
17# with this program; if not, write to the Free Software Foundation, Inc., 17# with this program; if not, write to the Free Software Foundation, Inc.,
18# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 19
20USER=$1
21
22TUNCTL=`which tunctl`
23[ "$TUNCTL" = "" ] && TUNCTL=/usr/sbin/tunctl
24
25TAP=`$TUNCTL -b -u $USER`
20 26
21IFCONFIG=`which ifconfig` 27IFCONFIG=`which ifconfig`
22if [ "x$IFCONFIG" = "x" ]; then 28if [ "x$IFCONFIG" = "x" ]; then
@@ -24,7 +30,7 @@ if [ "x$IFCONFIG" = "x" ]; then
24 IFCONFIG=/sbin/ifconfig 30 IFCONFIG=/sbin/ifconfig
25fi 31fi
26 32
27$IFCONFIG tap0 192.168.7.1 33$IFCONFIG $TAP 192.168.7.1
28 34
29# setup NAT for tap0 interface to have internet access in QEMU 35# setup NAT for tap0 interface to have internet access in QEMU
30IPTABLES=`which iptables` 36IPTABLES=`which iptables`
@@ -35,3 +41,5 @@ fi
35$IPTABLES -A POSTROUTING -t nat -j MASQUERADE -s 192.168.7.0/24 41$IPTABLES -A POSTROUTING -t nat -j MASQUERADE -s 192.168.7.0/24
36echo 1 > /proc/sys/net/ipv4/ip_forward 42echo 1 > /proc/sys/net/ipv4/ip_forward
37$IPTABLES -P FORWARD ACCEPT 43$IPTABLES -P FORWARD ACCEPT
44
45echo $TAP
diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal
index 62c64727c0..8ff3add511 100755
--- a/scripts/poky-qemu-internal
+++ b/scripts/poky-qemu-internal
@@ -53,8 +53,13 @@ fi
53 53
54QEMUIFUP=`which poky-qemu-ifup` 54QEMUIFUP=`which poky-qemu-ifup`
55QEMUIFDOWN=`which poky-qemu-ifdown` 55QEMUIFDOWN=`which poky-qemu-ifdown`
56
57USER=`id -u`
58echo 'Setting up tap interface under sudo'
59TAP=`sudo $QEMUIFUP $USER`
60
56KERNEL_NETWORK_CMD="ip=192.168.7.2::192.168.7.1:255.255.255.0" 61KERNEL_NETWORK_CMD="ip=192.168.7.2::192.168.7.1:255.255.255.0"
57QEMU_TAP_CMD="-net tap,vlan=0,ifname=tap0,script=$QEMUIFUP,downscript=$QEMUIFDOWN" 62QEMU_TAP_CMD="-net tap,vlan=0,ifname=$TAP,script=no,downscript=no"
58QEMU_NETWORK_CMD="-net nic,vlan=0 $QEMU_TAP_CMD" 63QEMU_NETWORK_CMD="-net nic,vlan=0 $QEMU_TAP_CMD"
59KERNCMDLINE="mem=$QEMU_MEMORY" 64KERNCMDLINE="mem=$QEMU_MEMORY"
60QEMU_UI_OPTIONS="-show-cursor -usb -usbdevice wacom-tablet" 65QEMU_UI_OPTIONS="-show-cursor -usb -usbdevice wacom-tablet"
@@ -298,9 +303,13 @@ else
298 echo "Warning: distccd not present, no distcc support loaded." 303 echo "Warning: distccd not present, no distcc support loaded."
299fi 304fi
300 305
301echo "Running $QEMU using sudo..." 306
307
308echo "Running $QEMU..."
302echo $QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS $* --append "$KERNCMDLINE" 309echo $QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS $* --append "$KERNCMDLINE"
303sudo $QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS $* --append "$KERNCMDLINE" || /bin/true 310$QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS $* --append "$KERNCMDLINE" || /bin/true
311
312$QEMUIFDOWN $TAP
304 313
305trap - INT TERM QUIT 314trap - INT TERM QUIT
306return 315return