#!/bin/sh set -x # We need to put the rootfs somewhere where we can modify some # parts of the content on first boot (namely file permissions). # Other than that nothing should ever modify the content of the # rootfs. DATA_PATH=$SNAP_COMMON/ ROOTFS_PATH=$DATA_PATH/rootfs ANDROID_IMG=$SNAP/android.img if [ ! -e $ANDROID_IMG ]; then echo "ERROR: android image does not exist" exit 1 fi start() { # Make sure our setup path for the container rootfs # is present as lxc is statically configured for # this path. mkdir -p $SNAP_COMMON/lxc # We start the bridge here as long as a oneshot service unit is not # possible. See snapcraft.yaml for further details. $SNAP/bin/anbox-bridge.sh start # Ensure FUSE support for user namespaces is enabled echo Y | sudo tee /sys/module/fuse/parameters/userns_mounts || echo "WARNING: kernel doesn't support fuse in user namespaces" # Only try to use AppArmor when the kernel has support for it AA_EXEC="$SNAP/usr/sbin/aa-exec -p unconfined --" if [ ! -d /sys/kernel/security/apparmor ]; then echo "WARNING: AppArmor support is not available!" AA_EXEC="" fi exec $AA_EXEC $SNAP/bin/anbox-wrapper.sh container-manager \ --data-path=$DATA_PATH \ --android-image=$ANDROID_IMG } stop() { $SNAP/bin/anbox-bridge.sh stop } case "$1" in start) start ;; stop) stop ;; *) echo "ERROR: Unknown command '$1'" exit 1 ;; esac