grid 1.0KB

123456789101112131415161718192021222324252627282930313233343536
  1. #!/bin/sh
  2. COMMAND="$1"
  3. JAIL_PREFIX="/grid/jail"
  4. case $COMMAND in
  5. bundle)
  6. src="$3"
  7. target="$2"
  8. exec tar -C "$src" -caf "$target.g" .
  9. exit 0
  10. ;;
  11. *)
  12. image=`readlink -f "$1"`
  13. app_hash=`sha256sum "$image" | awk '{print $1}'`
  14. jail_path_prefix="$JAIL_PREFIX/$app_hash"
  15. rootfs_path="$jail_path_prefix/rootfs"
  16. data_path="$jail_path_prefix/data"
  17. chroot_path="$jail_path_prefix/chroot"
  18. work_path="$jail_path_prefix/work"
  19. if [ -d "$jail_path_prefix" ]; then
  20. umount -r "$rootfs_path" 2>/dev/null
  21. umount -r "$chroot_path" 2>/dev/null
  22. umount -r "$data_path" 2>/dev/null
  23. umount -r "$work_path" 2>/dev/null
  24. fi
  25. mkdir -p "$rootfs_path"
  26. mkdir -p "$data_path"
  27. mkdir -p "$chroot_path"
  28. mkdir -p "$work_path"
  29. archivemount -o readonly "$image" "$rootfs_path/"
  30. mount -t overlay overlay -o "lowerdir=$rootfs_path/,upperdir=$data_path/,workdir=$work_path/" "$chroot_path/"
  31. exec bwrap --bind "$chroot_path/" / /bin/start
  32. ;;
  33. esac