summaryrefslogtreecommitdiff
path: root/start-container-qemu.sh
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2017-08-10 15:55:31 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2017-09-05 13:17:23 +0000
commit91eb3abd63537ac225e4b797e3bdeadf46bccd12 (patch)
tree7aeb4bd8f2edfa0db2ab6bf528488b6cdd7e4b31 /start-container-qemu.sh
parent3f83b0f4badc171ff1627d451c367193995cd7fb (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-xstart-container-qemu.sh30
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)