diff options
| -rwxr-xr-x | scripts/poky-qemu-internal | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal index 3d718391f7..01486ccff6 100755 --- a/scripts/poky-qemu-internal +++ b/scripts/poky-qemu-internal | |||
| @@ -69,14 +69,23 @@ for tap in $POSSIBLE; do | |||
| 69 | done | 69 | done |
| 70 | 70 | ||
| 71 | if [ "$TAP" = "" ]; then | 71 | if [ "$TAP" = "" ]; then |
| 72 | USER=`id -u` | 72 | GROUPID=`id -g` |
| 73 | echo 'Setting up tap interface under sudo' | 73 | echo 'Setting up tap interface under sudo' |
| 74 | TAP=`sudo $QEMUIFUP $USER` | 74 | TAP=`sudo $QEMUIFUP $GROUPID` |
| 75 | LOCKFILE="" | 75 | LOCKFILE="" |
| 76 | else | 76 | else |
| 77 | echo "Using preconfigured tap device '$TAP'" | 77 | echo "Using preconfigured tap device '$TAP'" |
| 78 | fi | 78 | fi |
| 79 | 79 | ||
| 80 | release_lock() { | ||
| 81 | if [ "$LOCKFILE" = "" ]; then | ||
| 82 | $QEMUIFDOWN $TAP | ||
| 83 | else | ||
| 84 | echo "Releasing lockfile of preconfigured tap device '$TAP'" | ||
| 85 | rm -f $LOCKFILE | ||
| 86 | fi | ||
| 87 | } | ||
| 88 | |||
| 80 | KERNEL_NETWORK_CMD="ip=192.168.7.2::192.168.7.1:255.255.255.0" | 89 | KERNEL_NETWORK_CMD="ip=192.168.7.2::192.168.7.1:255.255.255.0" |
| 81 | QEMU_TAP_CMD="-net tap,vlan=0,ifname=$TAP,script=no,downscript=no" | 90 | QEMU_TAP_CMD="-net tap,vlan=0,ifname=$TAP,script=no,downscript=no" |
| 82 | QEMU_NETWORK_CMD="-net nic,vlan=0 $QEMU_TAP_CMD" | 91 | QEMU_NETWORK_CMD="-net nic,vlan=0 $QEMU_TAP_CMD" |
| @@ -108,12 +117,14 @@ esac | |||
| 108 | 117 | ||
| 109 | if [ "$TYPE" != "nfs" -a ! -f "$HDIMAGE" ]; then | 118 | if [ "$TYPE" != "nfs" -a ! -f "$HDIMAGE" ]; then |
| 110 | echo "Error: Image file $HDIMAGE doesn't exist" | 119 | echo "Error: Image file $HDIMAGE doesn't exist" |
| 120 | release_lock | ||
| 111 | return | 121 | return |
| 112 | fi | 122 | fi |
| 113 | 123 | ||
| 114 | if [ "$TYPE" = "nfs" ]; then | 124 | if [ "$TYPE" = "nfs" ]; then |
| 115 | NFS_SERVER=`echo $HDIMAGE | sed 's/^\([^:]*\):.*/\1/'` | 125 | NFS_SERVER="192.168.7.1" |
| 116 | NFS_DIR=`echo $HDIMAGE | sed 's/^[^:]*:\(.*\)/\1/'` | 126 | NFS_DIR=`echo $HDIMAGE | sed 's/^[^:]*:\(.*\)/\1/'` |
| 127 | UNFS_OPTS="nfsvers=2,mountprog=21111,nfsprog=11111,udp" | ||
| 117 | fi | 128 | fi |
| 118 | 129 | ||
| 119 | if [ "$NFS_SERVER" = "" ]; then | 130 | if [ "$NFS_SERVER" = "" ]; then |
| @@ -123,6 +134,7 @@ fi | |||
| 123 | 134 | ||
| 124 | if [ ! -f "$ZIMAGE" ]; then | 135 | if [ ! -f "$ZIMAGE" ]; then |
| 125 | echo "Error: Kernel image file $ZIMAGE doesn't exist" | 136 | echo "Error: Kernel image file $ZIMAGE doesn't exist" |
| 137 | release_lock | ||
| 126 | return | 138 | return |
| 127 | fi | 139 | fi |
| 128 | 140 | ||
| @@ -138,9 +150,10 @@ if [ "$MACHINE" = "qemuarm" -o "$MACHINE" = "qemuarmv6" -o "$MACHINE" = "qemuarm | |||
| 138 | if [ "$TYPE" = "nfs" ]; then | 150 | if [ "$TYPE" = "nfs" ]; then |
| 139 | if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then | 151 | if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then |
| 140 | echo "Error: NFS mount point $HDIMAGE doesn't exist" | 152 | echo "Error: NFS mount point $HDIMAGE doesn't exist" |
| 153 | release_lock | ||
| 141 | return | 154 | return |
| 142 | fi | 155 | fi |
| 143 | KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" | 156 | KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" |
| 144 | QEMUOPTIONS="$QEMU_NETWORK_CMD -M versatilepb --no-reboot $QEMU_UI_OPTIONS" | 157 | QEMUOPTIONS="$QEMU_NETWORK_CMD -M versatilepb --no-reboot $QEMU_UI_OPTIONS" |
| 145 | fi | 158 | fi |
| 146 | if [ "$MACHINE" = "qemuarmv6" ]; then | 159 | if [ "$MACHINE" = "qemuarmv6" ]; then |
| @@ -161,9 +174,10 @@ if [ "$MACHINE" = "qemux86" ]; then | |||
| 161 | if [ "$TYPE" = "nfs" ]; then | 174 | if [ "$TYPE" = "nfs" ]; then |
| 162 | if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then | 175 | if [ "$NFS_SERVER" = "192.168.7.1" -a ! -d "$NFS_DIR" ]; then |
| 163 | echo "Error: NFS mount point $HDIMAGE doesn't exist." | 176 | echo "Error: NFS mount point $HDIMAGE doesn't exist." |
| 177 | release_lock | ||
| 164 | return | 178 | return |
| 165 | fi | 179 | fi |
| 166 | KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" | 180 | KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" |
| 167 | QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS" | 181 | QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS" |
| 168 | fi | 182 | fi |
| 169 | fi | 183 | fi |
| @@ -181,9 +195,10 @@ if [ "$MACHINE" = "qemux86-64" ]; then | |||
| 181 | fi | 195 | fi |
| 182 | if [ ! -d "$HDIMAGE" ]; then | 196 | if [ ! -d "$HDIMAGE" ]; then |
| 183 | echo "Error: NFS mount point $HDIMAGE doesn't exist." | 197 | echo "Error: NFS mount point $HDIMAGE doesn't exist." |
| 198 | release_lock | ||
| 184 | return | 199 | return |
| 185 | fi | 200 | fi |
| 186 | KERNCMDLINE="root=/dev/nfs nfsroot=192.168.7.1:$HDIMAGE rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" | 201 | KERNCMDLINE="root=/dev/nfs nfsroot=$NFS_SERVER:$NFS_DIR,$UNFS_OPTS rw $KERNEL_NETWORK_CMD mem=$QEMU_MEMORY" |
| 187 | QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS" | 202 | QEMUOPTIONS="$QEMU_NETWORK_CMD $QEMU_UI_OPTIONS" |
| 188 | fi | 203 | fi |
| 189 | fi | 204 | fi |
| @@ -258,11 +273,13 @@ if [ "$MACHINE" = "nokia800-maemo" ]; then | |||
| 258 | if [ ! -e "$HDIMAGE.qemuflash" ]; then | 273 | if [ ! -e "$HDIMAGE.qemuflash" ]; then |
| 259 | if [ ! -e "$HDIMAGE.initfs" ]; then | 274 | if [ ! -e "$HDIMAGE.initfs" ]; then |
| 260 | echo "Error, $HDIMAGE.initfs must exist!" | 275 | echo "Error, $HDIMAGE.initfs must exist!" |
| 276 | release_lock | ||
| 261 | return | 277 | return |
| 262 | fi | 278 | fi |
| 263 | if [ ! -e "$HDIMAGE.config" ]; then | 279 | if [ ! -e "$HDIMAGE.config" ]; then |
| 264 | echo "Error, $HDIMAGE.config must exist!" | 280 | echo "Error, $HDIMAGE.config must exist!" |
| 265 | echo "To generate it, take an n800 and cat /dev/mtdblock1 > $HDIMAGE.config" | 281 | echo "To generate it, take an n800 and cat /dev/mtdblock1 > $HDIMAGE.config" |
| 282 | release_lock | ||
| 266 | return | 283 | return |
| 267 | fi | 284 | fi |
| 268 | echo "'Flashing' config partition, please wait..." | 285 | echo "'Flashing' config partition, please wait..." |
| @@ -280,6 +297,7 @@ fi | |||
| 280 | 297 | ||
| 281 | if [ "x$QEMUOPTIONS" = "x" ]; then | 298 | if [ "x$QEMUOPTIONS" = "x" ]; then |
| 282 | echo "Error: Unable to support this combination of options" | 299 | echo "Error: Unable to support this combination of options" |
| 300 | release_lock | ||
| 283 | return | 301 | return |
| 284 | fi | 302 | fi |
| 285 | 303 | ||
| @@ -302,6 +320,7 @@ QEMUBIN=`which $QEMU` | |||
| 302 | 320 | ||
| 303 | if [ ! -x "$QEMUBIN" ]; then | 321 | if [ ! -x "$QEMUBIN" ]; then |
| 304 | echo "Error: No QEMU binary '$QEMU' could be found." | 322 | echo "Error: No QEMU binary '$QEMU' could be found." |
| 323 | release_lock | ||
| 305 | return | 324 | return |
| 306 | fi | 325 | fi |
| 307 | 326 | ||
| @@ -310,6 +329,7 @@ function _quit() { | |||
| 310 | #echo kill `cat $PIDFILE` | 329 | #echo kill `cat $PIDFILE` |
| 311 | kill `cat $PIDFILE` | 330 | kill `cat $PIDFILE` |
| 312 | fi | 331 | fi |
| 332 | release_lock | ||
| 313 | return | 333 | return |
| 314 | } | 334 | } |
| 315 | 335 | ||
| @@ -326,18 +346,11 @@ else | |||
| 326 | echo "Warning: distccd not present, no distcc support loaded." | 346 | echo "Warning: distccd not present, no distcc support loaded." |
| 327 | fi | 347 | fi |
| 328 | 348 | ||
| 329 | |||
| 330 | |||
| 331 | echo "Running $QEMU..." | 349 | echo "Running $QEMU..." |
| 332 | echo $QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS $* --append "$KERNCMDLINE" | 350 | echo $QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS $* --append "$KERNCMDLINE" |
| 333 | $QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS $* --append "$KERNCMDLINE" || /bin/true | 351 | $QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS $* --append "$KERNCMDLINE" || /bin/true |
| 334 | 352 | ||
| 335 | if [ "$LOCKFILE" = "" ]; then | 353 | release_lock |
| 336 | $QEMUIFDOWN $TAP | ||
| 337 | else | ||
| 338 | echo "Releasing preconfigured tap device '$TAP'" | ||
| 339 | rm -f $LOCKFILE | ||
| 340 | fi | ||
| 341 | 354 | ||
| 342 | trap - INT TERM QUIT | 355 | trap - INT TERM QUIT |
| 343 | return | 356 | return |
