diff options
| author | Scott Garman <scott.a.garman@intel.com> | 2010-10-03 21:16:24 -0700 |
|---|---|---|
| committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-10-07 19:55:50 +0100 |
| commit | e70c8981f250ead9e025ecd27aef94b67d784fc6 (patch) | |
| tree | 0644d5cfb98596f71e5cce7ff8f1e23508c4a4a2 | |
| parent | 8532405c1d6b2184ca88922506b725110a1f7627 (diff) | |
| download | poky-e70c8981f250ead9e025ecd27aef94b67d784fc6.tar.gz | |
Allow running of multiple QEMU nfs instances
These changes allow multiple instances of the userspace NFS server
to run, when brought up by consecutive instances of the poky-qemu
control script.
This fixes [BUGID #393]
Signed-off-by: Scott Garman <scott.a.garman@intel.com>
| -rwxr-xr-x | scripts/poky-export-rootfs | 39 | ||||
| -rwxr-xr-x | scripts/poky-qemu-internal | 31 |
2 files changed, 39 insertions, 31 deletions
diff --git a/scripts/poky-export-rootfs b/scripts/poky-export-rootfs index ef527dc058..f3552516ad 100755 --- a/scripts/poky-export-rootfs +++ b/scripts/poky-export-rootfs | |||
| @@ -61,11 +61,11 @@ if [ ! -d ~/.poky-sdk ]; then | |||
| 61 | mkdir -p ~/.poky-sdk | 61 | mkdir -p ~/.poky-sdk |
| 62 | fi | 62 | fi |
| 63 | 63 | ||
| 64 | TARGET_VIRT_INSTANCE=${TARGET_VIRT_INSTANCE:=0} | 64 | NFS_INSTANCE=${NFS_INSTANCE:=0} |
| 65 | EXPORTS=~/.poky-sdk/exports$TARGET_VIRT_INSTANCE | 65 | EXPORTS=~/.poky-sdk/exports$NFS_INSTANCE |
| 66 | RMTAB=~/.poky-sdk/rmtab$TARGET_VIRT_INSTANCE | 66 | RMTAB=~/.poky-sdk/rmtab$NFS_INSTANCE |
| 67 | NFSPID=~/.poky-sdk/nfs$TARGET_VIRT_INSTANCE.pid | 67 | NFSPID=~/.poky-sdk/nfs$NFS_INSTANCE.pid |
| 68 | MOUNTPID=~/.poky-sdk/mount$TARGET_VIRT_INSTANCE.pid | 68 | MOUNTPID=~/.poky-sdk/mount$NFS_INSTANCE.pid |
| 69 | 69 | ||
| 70 | PSEUDO_OPTS="-P $POKY_NATIVE_SYSROOT/usr" | 70 | PSEUDO_OPTS="-P $POKY_NATIVE_SYSROOT/usr" |
| 71 | PSEUDO_LOCALSTATEDIR="$NFS_EXPORT_DIR/var/pseudo" | 71 | PSEUDO_LOCALSTATEDIR="$NFS_EXPORT_DIR/var/pseudo" |
| @@ -78,15 +78,14 @@ if [ ! -d "$PSEUDO_LOCALSTATEDIR" ]; then | |||
| 78 | fi | 78 | fi |
| 79 | 79 | ||
| 80 | # rpc.mountd RPC port | 80 | # rpc.mountd RPC port |
| 81 | NFS_MOUNTPROG="21111" | 81 | NFS_MOUNTPROG=$[ 21111 + $NFS_INSTANCE ] |
| 82 | # rpc.nfsd RPC port | 82 | # rpc.nfsd RPC port |
| 83 | NFS_NFSPROG="11111" | 83 | NFS_NFSPROG=$[ 11111 + $NFS_INSTANCE ] |
| 84 | # NFS port number | 84 | # NFS port number |
| 85 | NFS_PORT="3049" | 85 | NFS_PORT=$[ 3049 + $NFS_INSTANCE ] |
| 86 | 86 | ||
| 87 | ## For debugging you would additionally add | 87 | ## For debugging you would additionally add |
| 88 | ## --debug all | 88 | ## --debug all |
| 89 | |||
| 90 | MOUNTD_OPTS="--allow-non-root --mount-pid $MOUNTPID -f $EXPORTS --rmtab $RMTAB --prog $NFS_MOUNTPROG -r" | 89 | MOUNTD_OPTS="--allow-non-root --mount-pid $MOUNTPID -f $EXPORTS --rmtab $RMTAB --prog $NFS_MOUNTPROG -r" |
| 91 | NFSD_OPTS="--allow-non-root --nfs-pid $NFSPID -f $EXPORTS --prog $NFS_NFSPROG -P $NFS_PORT -r" | 90 | NFSD_OPTS="--allow-non-root --nfs-pid $NFSPID -f $EXPORTS --prog $NFS_NFSPROG -P $NFS_PORT -r" |
| 92 | 91 | ||
| @@ -102,7 +101,7 @@ case "$1" in | |||
| 102 | echo "Starting User Mode rpc.mountd" | 101 | echo "Starting User Mode rpc.mountd" |
| 103 | echo " $PSEUDO $PSEUDO_OPTS $POKY_NATIVE_SYSROOT/usr/sbin/rpc.mountd $MOUNTD_OPTS" | 102 | echo " $PSEUDO $PSEUDO_OPTS $POKY_NATIVE_SYSROOT/usr/sbin/rpc.mountd $MOUNTD_OPTS" |
| 104 | $PSEUDO $PSEUDO_OPTS $POKY_NATIVE_SYSROOT/usr/sbin/rpc.mountd $MOUNTD_OPTS | 103 | $PSEUDO $PSEUDO_OPTS $POKY_NATIVE_SYSROOT/usr/sbin/rpc.mountd $MOUNTD_OPTS |
| 105 | if [ ! $? = 0 ] ; then | 104 | if [ ! $? = 0 ]; then |
| 106 | echo "=====================" | 105 | echo "=====================" |
| 107 | echo "Error starting MOUNTD" | 106 | echo "Error starting MOUNTD" |
| 108 | echo "=====================" | 107 | echo "=====================" |
| @@ -125,26 +124,26 @@ case "$1" in | |||
| 125 | echo "Starting User Mode nfsd" | 124 | echo "Starting User Mode nfsd" |
| 126 | echo " $PSEUDO $PSEUDO_OPTS $POKY_NATIVE_SYSROOT/usr/sbin/rpc.nfsd $NFSD_OPTS" | 125 | echo " $PSEUDO $PSEUDO_OPTS $POKY_NATIVE_SYSROOT/usr/sbin/rpc.nfsd $NFSD_OPTS" |
| 127 | $PSEUDO $PSEUDO_OPTS $POKY_NATIVE_SYSROOT/usr/sbin/rpc.nfsd $NFSD_OPTS | 126 | $PSEUDO $PSEUDO_OPTS $POKY_NATIVE_SYSROOT/usr/sbin/rpc.nfsd $NFSD_OPTS |
| 128 | if [ ! $? = 0 ] ; then | 127 | if [ ! $? = 0 ]; then |
| 129 | echo "Error starting nfsd" | 128 | echo "Error starting nfsd" |
| 130 | exit 1 | 129 | exit 1 |
| 131 | fi | 130 | fi |
| 132 | # Check to make sure everything started ok. | 131 | # Check to make sure everything started ok. |
| 133 | if [ ! -f $MOUNTPID ] ; then | 132 | if [ ! -f $MOUNTPID ]; then |
| 134 | echo "rpc.mountd did not start correctly" | 133 | echo "rpc.mountd did not start correctly" |
| 135 | exit 1 | 134 | exit 1 |
| 136 | fi | 135 | fi |
| 137 | if [ ! -f $NFSPID ] ; then | 136 | if [ ! -f $NFSPID ]; then |
| 138 | echo "rpc.nfsd did not start correctly" | 137 | echo "rpc.nfsd did not start correctly" |
| 139 | exit 1 | 138 | exit 1 |
| 140 | fi | 139 | fi |
| 141 | ps -fp `cat $MOUNTPID` > /dev/null 2> /dev/null | 140 | ps -fp `cat $MOUNTPID` > /dev/null 2> /dev/null |
| 142 | if [ ! $? = 0 ] ; then | 141 | if [ ! $? = 0 ]; then |
| 143 | echo "rpc.mountd did not start correctly" | 142 | echo "rpc.mountd did not start correctly" |
| 144 | exit 1 | 143 | exit 1 |
| 145 | fi | 144 | fi |
| 146 | ps -fp `cat $NFSPID` > /dev/null 2> /dev/null | 145 | ps -fp `cat $NFSPID` > /dev/null 2> /dev/null |
| 147 | if [ ! $? = 0 ] ; then | 146 | if [ ! $? = 0 ]; then |
| 148 | echo "rpc.nfsd did not start correctly" | 147 | echo "rpc.nfsd did not start correctly" |
| 149 | exit 1 | 148 | exit 1 |
| 150 | fi | 149 | fi |
| @@ -153,25 +152,29 @@ case "$1" in | |||
| 153 | echo "nfsroot=IP_ADDRESS:$NFS_EXPORT_DIR,nfsvers=2,mountprog=$NFS_MOUNTPROG,nfsprog=$NFS_NFSPROG,udp" | 152 | echo "nfsroot=IP_ADDRESS:$NFS_EXPORT_DIR,nfsvers=2,mountprog=$NFS_MOUNTPROG,nfsprog=$NFS_NFSPROG,udp" |
| 154 | ;; | 153 | ;; |
| 155 | stop) | 154 | stop) |
| 156 | if [ -f "$MOUNTPID" ] ; then | 155 | if [ -f "$MOUNTPID" ]; then |
| 157 | echo "Stopping rpc.mountd" | 156 | echo "Stopping rpc.mountd" |
| 158 | kill `cat $MOUNTPID` | 157 | kill `cat $MOUNTPID` |
| 159 | rm -f $MOUNTPID | 158 | rm -f $MOUNTPID |
| 160 | else | 159 | else |
| 161 | echo "No PID file, not stopping rpc.mountd" | 160 | echo "No PID file, not stopping rpc.mountd" |
| 162 | fi | 161 | fi |
| 163 | if [ -f "$NFSPID" ] ; then | 162 | if [ -f "$NFSPID" ]; then |
| 164 | echo "Stopping rpc.nfsd" | 163 | echo "Stopping rpc.nfsd" |
| 165 | kill `cat $NFSPID` | 164 | kill `cat $NFSPID` |
| 166 | rm -f $NFSPID | 165 | rm -f $NFSPID |
| 167 | else | 166 | else |
| 168 | echo "No PID file, not stopping rpc.nfsd" | 167 | echo "No PID file, not stopping rpc.nfsd" |
| 169 | fi | 168 | fi |
| 169 | if [ -f "$EXPORTS" ]; then | ||
| 170 | echo "Removing exports file" | ||
| 171 | rm -f $EXPORTS | ||
| 172 | fi | ||
| 170 | ;; | 173 | ;; |
| 171 | restart) | 174 | restart) |
| 172 | $0 stop $NFS_EXPORT_DIR | 175 | $0 stop $NFS_EXPORT_DIR |
| 173 | $0 start $NFS_EXPORT_DIR | 176 | $0 start $NFS_EXPORT_DIR |
| 174 | if [ ! $? = 0 ] ; then | 177 | if [ ! $? = 0 ]; then |
| 175 | exit 1 | 178 | exit 1 |
| 176 | fi | 179 | fi |
| 177 | ;; | 180 | ;; |
diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal index 0ea38eef60..532b255da9 100755 --- a/scripts/poky-qemu-internal +++ b/scripts/poky-qemu-internal | |||
| @@ -50,8 +50,9 @@ if [ -z "$QEMU_MEMORY" ]; then | |||
| 50 | 50 | ||
| 51 | fi | 51 | fi |
| 52 | 52 | ||
| 53 | # This flag file is created when poky-gen-tapdevs creates a bank of | 53 | # This file is created when poky-gen-tapdevs creates a bank of tap |
| 54 | # tap devices, indicating that the user does not have sudo privs. | 54 | # devices, indicating that the user should not bring up new ones using |
| 55 | # sudo. | ||
| 55 | NOSUDO_FLAG="/etc/poky-nosudo" | 56 | NOSUDO_FLAG="/etc/poky-nosudo" |
| 56 | 57 | ||
| 57 | QEMUIFUP=`which poky-qemu-ifup` | 58 | QEMUIFUP=`which poky-qemu-ifup` |
| @@ -113,18 +114,17 @@ else | |||
| 113 | fi | 114 | fi |
| 114 | 115 | ||
| 115 | release_lock() { | 116 | release_lock() { |
| 116 | if [ "$LOCKFILE" = "" ]; then | 117 | if [ ! -e "$NOSUDO_FLAG" ]; then |
| 117 | $QEMUIFDOWN $TAP $POKY_NATIVE_SYSROOT | 118 | $QEMUIFDOWN $TAP $POKY_NATIVE_SYSROOT |
| 118 | else | ||
| 119 | echo "Releasing lockfile of preconfigured tap device '$TAP'" | ||
| 120 | lockfile-remove $LOCKFILE | ||
| 121 | fi | ||
| 122 | |||
| 123 | if [ "$NFSRUNNING" = "true" ]; then | ||
| 124 | echo "Shutting down the userspace NFS server:" | ||
| 125 | echo "poky-export-rootfs stop $ROOTFS" | ||
| 126 | poky-export-rootfs stop $ROOTFS | ||
| 127 | fi | 119 | fi |
| 120 | echo "Releasing lockfile of preconfigured tap device '$TAP'" | ||
| 121 | lockfile-remove $LOCKFILE | ||
| 122 | |||
| 123 | if [ "$NFSRUNNING" = "true" ]; then | ||
| 124 | echo "Shutting down the userspace NFS server..." | ||
| 125 | echo "poky-export-rootfs stop $ROOTFS" | ||
| 126 | poky-export-rootfs stop $ROOTFS | ||
| 127 | fi | ||
| 128 | } | 128 | } |
| 129 | 129 | ||
| 130 | n1=$[ (`echo $TAP | sed 's/tap//'` * 2) + 1 ] | 130 | n1=$[ (`echo $TAP | sed 's/tap//'` * 2) + 1 ] |
| @@ -136,6 +136,9 @@ QEMU_NETWORK_CMD="-net nic,vlan=0 $QEMU_TAP_CMD" | |||
| 136 | KERNCMDLINE="mem=$QEMU_MEMORY" | 136 | KERNCMDLINE="mem=$QEMU_MEMORY" |
| 137 | QEMU_UI_OPTIONS="-show-cursor -usb -usbdevice wacom-tablet" | 137 | QEMU_UI_OPTIONS="-show-cursor -usb -usbdevice wacom-tablet" |
| 138 | 138 | ||
| 139 | NFS_INSTANCE=`echo $TAP | sed 's/tap//'` | ||
| 140 | export NFS_INSTANCE | ||
| 141 | |||
| 139 | SERIALOPTS="" | 142 | SERIALOPTS="" |
| 140 | if [ "x$SERIAL_LOGFILE" != "x" ]; then | 143 | if [ "x$SERIAL_LOGFILE" != "x" ]; then |
| 141 | SERIALOPTS="-serial file:$SERIAL_LOGFILE" | 144 | SERIALOPTS="-serial file:$SERIAL_LOGFILE" |
| @@ -172,7 +175,9 @@ fi | |||
| 172 | if [ "$FSTYPE" = "nfs" ]; then | 175 | if [ "$FSTYPE" = "nfs" ]; then |
| 173 | NFS_SERVER="192.168.7.1" | 176 | NFS_SERVER="192.168.7.1" |
| 174 | NFS_DIR=`echo $ROOTFS | sed 's/^[^:]*:\(.*\)/\1/'` | 177 | NFS_DIR=`echo $ROOTFS | sed 's/^[^:]*:\(.*\)/\1/'` |
| 175 | UNFS_OPTS="nfsvers=2,mountprog=21111,nfsprog=11111,udp" | 178 | MOUNTD_PORT=$[ 21111 + $NFS_INSTANCE ] |
| 179 | NFSD_PORT=$[ 11111 + $NFS_INSTANCE ] | ||
| 180 | UNFS_OPTS="nfsvers=2,mountprog=$MOUNTD_PORT,nfsprog=$NFSD_PORT,udp" | ||
| 176 | 181 | ||
| 177 | PSEUDO_LOCALSTATEDIR=~/.poky-sdk/pseudo | 182 | PSEUDO_LOCALSTATEDIR=~/.poky-sdk/pseudo |
| 178 | export PSEUDO_LOCALSTATEDIR | 183 | export PSEUDO_LOCALSTATEDIR |
