diff options
author | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2017-08-10 15:55:31 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2017-09-05 13:17:23 +0000 |
commit | 91eb3abd63537ac225e4b797e3bdeadf46bccd12 (patch) | |
tree | 7aeb4bd8f2edfa0db2ab6bf528488b6cdd7e4b31 /start-container-qemu.sh | |
parent | 3f83b0f4badc171ff1627d451c367193995cd7fb (diff) |
start-container-qemu.sh: Fix behavior for "test" containers.
When current directory is not bind-mounted in the container we can't
change into it in ${prefix}container_exec. This is the case for
"test" containers. Fix by defining a local helper that executes commands
in "/" directory.
Change-Id: Ia4e05b51c9688b03ddbd4ead13718c75f510fb3f
Diffstat (limited to 'start-container-qemu.sh')
-rwxr-xr-x | start-container-qemu.sh | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/start-container-qemu.sh b/start-container-qemu.sh index 3a2e2ac3..dbf739a1 100755 --- a/start-container-qemu.sh +++ b/start-container-qemu.sh @@ -42,15 +42,19 @@ trap "rm $container; cleanup_all_containers" EXIT eval "host=\$${prefix}container_host" eval "port=\$${prefix}container_port" eval "container_id=\$${prefix}container_id" +container_exec () +{ + remote_exec "$host:$port:/" "$@" +} # FIXME: install qemu-system-arm into docker images. -${prefix}container_exec sudo apt-get update -${prefix}container_exec sudo apt-get install -y qemu-system-arm nfs-kernel-server +container_exec sudo apt-get update +container_exec sudo apt-get install -y qemu-system-arm nfs-kernel-server # /tmp is a scratch volume outside of / filesystem. nfsroot="/tmp/nfsroot" -${prefix}container_exec sudo mkdir "$nfsroot" -${prefix}container_exec sudo rsync -a --one-file-system / $nfsroot/ +container_exec sudo mkdir "$nfsroot" +container_exec sudo rsync -a --one-file-system / $nfsroot/ nfsip=$(docker -H $host:2375 inspect --format {{.NetworkSettings.IPAddress}} "$container_id") @@ -59,22 +63,22 @@ nfsip=$(docker -H $host:2375 inspect --format {{.NetworkSettings.IPAddress}} "$c # NFS module loaded, which seems easiest achieved by installing "nfs-kernel-server" # package on the host. bind_mounts=($(print_bind_mounts "$task")) -echo "$nfsroot *(rw,async,no_root_squash,no_subtree_check,insecure)" | ${prefix}container_exec sudo tee -a /etc/exports +echo "$nfsroot *(rw,async,no_root_squash,no_subtree_check,insecure)" | container_exec sudo tee -a /etc/exports for bind_mount in "${bind_mounts[@]}"; do dir="${bind_mount##*:}" mkdir -p "$nfsroot/$dir" - echo "$dir *(rw,async,no_root_squash,no_subtree_check,insecure)" | ${prefix}container_exec sudo tee -a /etc/exports - echo "$nfsip:$dir $dir nfs defaults,proto=udp 0 0" | ${prefix}container_exec sudo tee -a "$nfsroot/etc/fstab" + echo "$dir *(rw,async,no_root_squash,no_subtree_check,insecure)" | container_exec sudo tee -a /etc/exports + echo "$nfsip:$dir $dir nfs defaults,proto=udp 0 0" | container_exec sudo tee -a "$nfsroot/etc/fstab" done -${prefix}container_exec sudo /etc/init.d/rpcbind start -${prefix}container_exec sudo /etc/init.d/nfs-kernel-server start +container_exec sudo /etc/init.d/rpcbind start +container_exec sudo /etc/init.d/nfs-kernel-server start # Add tcwg-buildslave to "kvm" group to avoid running QEMU as root -${prefix}container_exec sudo addgroup $USER kvm +container_exec sudo addgroup $USER kvm # CPU is limited (on contention) by docker container. -ncpus=$(${prefix}container_exec nproc --all) +ncpus=$(container_exec nproc --all) memory=$(print_memory_limit "$task" "$weight") # Reduce memory limit for VM to leave something for QEMU itself. memory=$(($memory*2/3)) @@ -86,14 +90,14 @@ rsync -e "ssh -p$port" -az "$(ls $(basename "$initrd_url"))" "$host:/tmp/initrd" # "-f" is to start qemu in the background. # "-Snone" is to avoid mixing this session with any other shared sessions. -remote_exec "$host:$port:$(pwd):-f -Snone" \ +remote_exec "$host:$port:/:-f -Snone" \ qemu-system-aarch64 -machine virt -enable-kvm -cpu host \ -smp $ncpus -m $memory -nographic -monitor none \ -kernel /tmp/kernel -initrd /tmp/initrd \ -append "root=/dev/nfs nfsroot=$nfsip:$nfsroot,udp rw ip=dhcp" \ -netdev user,id=unet,hostfwd=tcp::2222-:22 \ -device virtio-net-device,netdev=unet \ - -s + -s > ${prefix}qemu.log 2>&1 qemu_port=$(docker -H $host:2375 port $container_id 2222 | cut -d: -f 2) |