From cfe726e34f700ac318d51a7f9bb15944d0bd9db1 Mon Sep 17 00:00:00 2001 From: Ivan Mahonin Date: Dec 12 2019 18:34:10 +0000 Subject: fix mounts --- diff --git a/chrooter/chrooter.sh b/chrooter/chrooter.sh index 5281420..553941b 100755 --- a/chrooter/chrooter.sh +++ b/chrooter/chrooter.sh @@ -21,10 +21,10 @@ trap 'image_unmount; exit 1' SIGINT image_mount_add() { echo "Mount: $1 -> $2" sudo mkdir -p "$IMAGE_MOUNT_DIR/root$2" - sudo mount --bind "$1" "$IMAGE_MOUNT_DIR/root$2" - echo "umount \"$IMAGE_MOUNT_DIR/root$2\" \\" >> "/$PREFIX/$INSTANCE_NAME.umount.sh" - echo "|| (echo \"next try after 10 seconds\" && sleep 10 && umount -f \"$IMAGE_MOUNT_DIR/root$2\") \\" >> "/$PREFIX/$INSTANCE_NAME.umount.sh" - echo "|| (echo \"final try after 10 seconds\" && sleep 10 && umount -f \"$IMAGE_MOUNT_DIR/root$2\")" >> "/$PREFIX/$INSTANCE_NAME.umount.sh" + sudo mount --rbind "$1" "$IMAGE_MOUNT_DIR/root$2" + echo "umount -R \"$IMAGE_MOUNT_DIR/root$2\" \\" >> "/$PREFIX/$INSTANCE_NAME.umount.sh" + echo "|| (echo \"next try after 10 seconds\" && sleep 10 && umount -Rf \"$IMAGE_MOUNT_DIR/root$2\") \\" >> "/$PREFIX/$INSTANCE_NAME.umount.sh" + echo "|| (echo \"final try after 10 seconds\" && sleep 10 && umount -Rf \"$IMAGE_MOUNT_DIR/root$2\")" >> "/$PREFIX/$INSTANCE_NAME.umount.sh" } image_mount() { @@ -37,7 +37,7 @@ image_mount() { if [ -z "$1" ]; then echo "Image name was not set" return 1 - fi + fi local IMAGE_NAME="$(echo $1 | tr "/:" "_")" local IMAGE_FILE="$BASE_DIR/image/$IMAGE_NAME.zip" @@ -178,36 +178,39 @@ build() { local WORK_DIR= chroot_file_begin - local MODE= - for ARG in $@; do - if [ -z "$WORK_DIR" ]; then - if [ "$MODE" = "-t" ]; then - IMAGE_NAME="$ARG" - echo "Set image name: $IMAGE_NAME" - MODE= - continue - fi - fi - - if [ ! -z "$MODE" ]; then - echo "Unknown commandline argument: $MODE" - fi - - MODE= - if [ ! -z "$WORK_DIR" ]; then - echo "Unknown commandline argument: $ARG" + local MODE= + for ARG in $@; do + if [ -z "$WORK_DIR" ]; then + if [ "$MODE" = "-t" ]; then + IMAGE_NAME="$ARG" + echo "Set image name: $IMAGE_NAME" + MODE= + continue + fi + fi + + if [ ! -z "$MODE" ]; then + echo "Unknown commandline argument: $MODE" + fi + + MODE= + if [ ! -z "$WORK_DIR" ]; then + echo "Unknown commandline argument: $ARG" + elif [ "$ARG" = "--privileged=true" ]; then + PRIVILEGED=1 + echo "Set privileged: true" elif [ "${ARG:0:1}" = "-" ]; then - SUBMODE="$(echo "$ARG" | cut -d'=' -f 1)" - SUBVALUE="$(echo "$ARG" | cut -d'=' -f 2-)" - if [ "$SUBMODE" = "--build-arg" ]; then - ENVKEY="$(echo "$SUBVALUE" | cut -d'=' -f 1)" - ENVVALUE="$(echo "$SUBVALUE" | cut -d'=' -f 2-)" - chroot_file_env "$ENVKEY" "$ENVVALUE" - continue - else - MODE=$ARG - fi - else + SUBMODE="$(echo "$ARG" | cut -d'=' -f 1)" + SUBVALUE="$(echo "$ARG" | cut -d'=' -f 2-)" + if [ "$SUBMODE" = "--build-arg" ]; then + ENVKEY="$(echo "$SUBVALUE" | cut -d'=' -f 1)" + ENVVALUE="$(echo "$SUBVALUE" | cut -d'=' -f 2-)" + chroot_file_env "$ENVKEY" "$ENVVALUE" + continue + else + MODE=$ARG + fi + else WORK_DIR=$ARG echo "Set work dir: $WORK_DIR" fi @@ -221,7 +224,7 @@ build() { echo "Image name was not set" return 1 fi - + local BUILDFILE="$WORK_DIR/Buildfile" if [ ! -f "$BUILDFILE" ]; then echo "Buildfile not found at: $BUILDFILE" diff --git a/env/debian-7-32bit/build.sh b/env/debian-7-32bit/build.sh index 2031c50..4598e5e 100755 --- a/env/debian-7-32bit/build.sh +++ b/env/debian-7-32bit/build.sh @@ -12,4 +12,4 @@ if [ -f $CONFIG_FILE ]; then fi mkdir -p $PACKET_BUILD_DIR -chrooter build -t morevnaproject/build-debian-7-32 $CHROOTER_BUILD_OPTIONS "$SCRIPT_DIR" +chrooter build -t morevnaproject/build-debian-7-32 --privileged=true $CHROOTER_BUILD_OPTIONS "$SCRIPT_DIR" diff --git a/env/debian-7-64bit/build.sh b/env/debian-7-64bit/build.sh index 1bb0672..4b9cc70 100755 --- a/env/debian-7-64bit/build.sh +++ b/env/debian-7-64bit/build.sh @@ -13,4 +13,4 @@ fi export PACKET_BUILD_DIR mkdir -p $PACKET_BUILD_DIR -chrooter build -t morevnaproject/build-debian-7-64 $CHROOTER_BUILD_OPTIONS "$SCRIPT_DIR" +chrooter build -t morevnaproject/build-debian-7-64 --privileged=true $CHROOTER_BUILD_OPTIONS "$SCRIPT_DIR"