Restructure container manager startup script
Mount /cache and /data properly and stop bridge correctly.
This commit is contained in:
parent
03583e360c
commit
cbb4beaac2
2 changed files with 50 additions and 31 deletions
|
|
@ -21,41 +21,59 @@ if [ ! -e $SYSTEM_IMG ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Extract ramdisk content instead of trying to bind mount the
|
start() {
|
||||||
# cpio image file to allow modifications.
|
# Extract ramdisk content instead of trying to bind mount the
|
||||||
rm -Rf $RAMDISK_PATH
|
# cpio image file to allow modifications.
|
||||||
mkdir -p $RAMDISK_PATH
|
rm -Rf $RAMDISK_PATH
|
||||||
cd $RAMDISK_PATH
|
mkdir -p $RAMDISK_PATH
|
||||||
cat $INITRD | gzip -d | cpio -i
|
cd $RAMDISK_PATH
|
||||||
|
cat $INITRD | gzip -d | cpio -i
|
||||||
|
|
||||||
# FIXME those things should be fixed in the build process
|
# FIXME those things should be fixed in the build process
|
||||||
chmod +x $RAMDISK_PATH/anbox-init.sh
|
chmod +x $RAMDISK_PATH/anbox-init.sh
|
||||||
|
|
||||||
# Setup the read-only rootfs
|
# Setup the read-only rootfs
|
||||||
mkdir -p $ROOTFS_PATH
|
mkdir -p $ROOTFS_PATH
|
||||||
mount -o bind,ro $RAMDISK_PATH $ROOTFS_PATH
|
mount -o bind,ro $RAMDISK_PATH $ROOTFS_PATH
|
||||||
mount -o loop,ro $SYSTEM_IMG $ROOTFS_PATH/system
|
mount -o loop,ro $SYSTEM_IMG $ROOTFS_PATH/system
|
||||||
|
|
||||||
# but certain top-level directories need to be in a writable space
|
# but certain top-level directories need to be in a writable space
|
||||||
for dir in cache data; do
|
for dir in cache data; do
|
||||||
mkdir -p $DATA_PATH/android-$dir
|
mkdir -p $DATA_PATH/android-$dir
|
||||||
mount -o bind $DATA_PATH/android-$dir $ROOTFS_PATH/$dir
|
mount -o bind $DATA_PATH/android-$dir $ROOTFS_PATH/$dir
|
||||||
done
|
done
|
||||||
|
|
||||||
# Make sure our setup path for the container rootfs
|
# Make sure our setup path for the container rootfs
|
||||||
# is present as lxc is statically configured for
|
# is present as lxc is statically configured for
|
||||||
# this path.
|
# this path.
|
||||||
mkdir -p $SNAP_COMMON/lxc
|
mkdir -p $SNAP_COMMON/lxc
|
||||||
|
|
||||||
# We start the bridge here as long as a oneshot service unit is not
|
# We start the bridge here as long as a oneshot service unit is not
|
||||||
# possible. See snapcraft.yaml for further details.
|
# possible. See snapcraft.yaml for further details.
|
||||||
$SNAP/bin/anbox-bridge.sh start
|
$SNAP/bin/anbox-bridge.sh start
|
||||||
|
|
||||||
$SNAP/usr/sbin/aa-exec -p unconfined -- $SNAP/bin/anbox-wrapper.sh container-manager
|
exec $SNAP/usr/sbin/aa-exec -p unconfined -- $SNAP/bin/anbox-wrapper.sh container-manager
|
||||||
pid=$!
|
}
|
||||||
waitpid $pid
|
|
||||||
|
|
||||||
$SNAP/bin/anbox-bridge.sh stop
|
stop() {
|
||||||
|
for dir in cache data; do
|
||||||
|
umount $ROOTFS_PATH/$dir
|
||||||
|
done
|
||||||
|
umount $ROOTFS_PATH/system
|
||||||
|
umount $ROOTFS_PATH
|
||||||
|
|
||||||
umount $ROOTFS_PATH/system
|
$SNAP/bin/anbox-bridge.sh stop
|
||||||
umount $ROOTFS_PATH/data
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
stop
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "ERROR: Unknown command '$1'"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,8 @@ apps:
|
||||||
anbox:
|
anbox:
|
||||||
command: bin/anbox-wrapper.sh
|
command: bin/anbox-wrapper.sh
|
||||||
container-manager:
|
container-manager:
|
||||||
command: bin/container-manager.sh
|
command: bin/container-manager.sh start
|
||||||
|
stop-command: bin/container-manager.sh stop
|
||||||
daemon: simple
|
daemon: simple
|
||||||
# FIXME: a oneshot unit with start/stop commands needs also RemainAfterExit=yes
|
# FIXME: a oneshot unit with start/stop commands needs also RemainAfterExit=yes
|
||||||
# but this isn't supported by snapd yet. See LP #1647169 for details.
|
# but this isn't supported by snapd yet. See LP #1647169 for details.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue