diff options
-rwxr-xr-x | scripts/poky-qemu-ifdown | 18 | ||||
-rwxr-xr-x | scripts/poky-qemu-ifup | 53 |
2 files changed, 35 insertions, 36 deletions
diff --git a/scripts/poky-qemu-ifdown b/scripts/poky-qemu-ifdown index 93a87559af..ece2dc998a 100755 --- a/scripts/poky-qemu-ifdown +++ b/scripts/poky-qemu-ifdown | |||
@@ -1,6 +1,15 @@ | |||
1 | #!/bin/bash | 1 | #!/bin/bash |
2 | # | 2 | # |
3 | # QEMU network interface configuration script. | 3 | # QEMU network configuration script to bring down tap devices. This |
4 | # utility needs to be run as root, and will use the tunctl binary | ||
5 | # from a Poky sysroot. | ||
6 | # | ||
7 | # If you find yourself calling this script a lot, you can add the | ||
8 | # the following to your /etc/sudoers file to be able to run this | ||
9 | # command without entering your password each time: | ||
10 | # | ||
11 | # <my-username> ALL=NOPASSWD: /path/to/poky-qemu-ifup | ||
12 | # <my-username> ALL=NOPASSWD: /path/to/poky-qemu-ifdown | ||
4 | # | 13 | # |
5 | # Copyright (c) 2006-2010 Intel Corp. | 14 | # Copyright (c) 2006-2010 Intel Corp. |
6 | # | 15 | # |
@@ -18,9 +27,14 @@ | |||
18 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | 27 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
19 | 28 | ||
20 | usage() { | 29 | usage() { |
21 | echo "$0 <tap-dev> <native-sysroot-basedir>" | 30 | echo "sudo $0 <tap-dev> <native-sysroot-basedir>" |
22 | } | 31 | } |
23 | 32 | ||
33 | if [ $EUID -ne 0 ]; then | ||
34 | echo "Error: This script (poky-qemu-ifdown) must be run with root privileges" | ||
35 | exit 1 | ||
36 | fi | ||
37 | |||
24 | if [ $# -ne 2 ]; then | 38 | if [ $# -ne 2 ]; then |
25 | usage | 39 | usage |
26 | exit 1 | 40 | exit 1 |
diff --git a/scripts/poky-qemu-ifup b/scripts/poky-qemu-ifup index 5ae6c6aefb..cd4c47b608 100755 --- a/scripts/poky-qemu-ifup +++ b/scripts/poky-qemu-ifup | |||
@@ -6,14 +6,17 @@ | |||
6 | # tunctl which does not support the group permissions option, hence | 6 | # tunctl which does not support the group permissions option, hence |
7 | # the need to use Poky's version. | 7 | # the need to use Poky's version. |
8 | # | 8 | # |
9 | # If this script is being run standalone in order to set up a bank of tap | 9 | # If you find yourself calling this script a lot, you can add the |
10 | # devices for later qemu use, then a group id must be the first argument. | 10 | # the following to your /etc/sudoers file to be able to run this |
11 | # The resulting tap device will be group-owned by this group, and qemu | 11 | # command without entering your password each time: |
12 | # users must be members of this group. | ||
13 | # | 12 | # |
14 | # If the kernel is too old to support TUNSETGROUP, then a user must be passed | 13 | # <my-username> ALL=NOPASSWD: /path/to/poky-qemu-ifup |
15 | # in as the second argument, the tap device will be owned by that user, and | 14 | # <my-username> ALL=NOPASSWD: /path/to/poky-qemu-ifdown |
16 | # only that user will be able to use it. | 15 | # |
16 | # If you'd like to create a bank of tap devices at once, you should use | ||
17 | # the poky-gen-tapdevs script instead. If tap devices are set up using | ||
18 | # that script, the poky-qemu script will never end up calling this | ||
19 | # script. | ||
17 | # | 20 | # |
18 | # Copyright (c) 2006-2010 Intel Corp. | 21 | # Copyright (c) 2006-2010 Intel Corp. |
19 | # | 22 | # |
@@ -31,26 +34,24 @@ | |||
31 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | 34 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
32 | 35 | ||
33 | usage() { | 36 | usage() { |
34 | echo "$0 <gid> {uid} <native-sysroot-basedir>" | 37 | echo "sudo $0 <gid> <native-sysroot-basedir>" |
35 | echo "Where uid is *only* included if this script complains when it's missing" | ||
36 | } | 38 | } |
37 | 39 | ||
38 | if [[ $# -lt 2 || $# -gt 3 ]]; then | 40 | if [ $EUID -ne 0 ]; then |
41 | echo "Error: This script (poky-qemu-ifup) must be run with root privileges" | ||
42 | exit 1 | ||
43 | fi | ||
44 | |||
45 | if [ $# -ne 2 ]; then | ||
39 | usage | 46 | usage |
40 | exit 1 | 47 | exit 1 |
41 | fi | 48 | fi |
42 | 49 | ||
43 | USER="" | ||
44 | GROUP="-g $1" | 50 | GROUP="-g $1" |
45 | if [ $# -eq 2 ]; then | 51 | NATIVE_SYSROOT_DIR=$2 |
46 | NATIVE_SYSROOT_DIR=$2 | ||
47 | else | ||
48 | USER=$2 | ||
49 | NATIVE_SYSROOT_DIR=$3 | ||
50 | fi | ||
51 | 52 | ||
52 | TUNCTL=$NATIVE_SYSROOT_DIR/usr/bin/tunctl | 53 | TUNCTL=$NATIVE_SYSROOT_DIR/usr/bin/tunctl |
53 | if [ ! -e "$TUNCTL" ]; then | 54 | if [ ! -x "$TUNCTL" ]; then |
54 | echo "Error: Unable to find tunctl binary in '$NATIVE_SYSROOT_DIR/usr/bin'" | 55 | echo "Error: Unable to find tunctl binary in '$NATIVE_SYSROOT_DIR/usr/bin'" |
55 | 56 | ||
56 | if [[ "$NATIVE_SYSROOT_DIR" =~ ^\/opt\/poky ]]; then | 57 | if [[ "$NATIVE_SYSROOT_DIR" =~ ^\/opt\/poky ]]; then |
@@ -64,22 +65,6 @@ fi | |||
64 | 65 | ||
65 | TAP=`$TUNCTL -b $GROUP 2>&1` | 66 | TAP=`$TUNCTL -b $GROUP 2>&1` |
66 | STATUS=$? | 67 | STATUS=$? |
67 | if [[ "$TAP" =~ "TUNSETGROUP" ]]; then | ||
68 | # TUNSETGROUP failed because of permissions or the kernel being too old | ||
69 | # Retry, falling back to a specific user | ||
70 | if [ "$USER" = "" ]; then | ||
71 | echo "TUNSETGROUP failed - add a username to the command line in order" | ||
72 | echo "to have the tap device owned by that user" | ||
73 | exit 1 | ||
74 | fi | ||
75 | TAP=`$TUNCTL -b -u $USER 2>&1` | ||
76 | STATUS=$? | ||
77 | # Force this to appear on stderr in order that the user sees it if this | ||
78 | # is running from poky-qemu-internal and in order to avoid having this | ||
79 | # output confuse it. | ||
80 | echo "Only user $USER will be able to use $TAP - upgrade the kernel to " 1>&2 | ||
81 | echo "2.6.23 or later in order to allow group access to tap devices" 1>&2 | ||
82 | fi | ||
83 | if [ $STATUS -ne 0 ]; then | 68 | if [ $STATUS -ne 0 ]; then |
84 | echo "tunctl failed:" | 69 | echo "tunctl failed:" |
85 | echo $TAP | 70 | echo $TAP |