#!/usr/bin/bash # SPDX-License-Identifier: MPL-2.0 # A mini scirpt to handle chrooting into different environments, # especially for Alpine Linux devenv on chroots instead of containers/VMs. # Chroot command is optional and assume login binary CHROOT_COMMAND=${2:-"/usr/bin/login"} TARGET_DIR=$1 if [[ $TARGET_DIR == "" ]]; then echo "Usage: $0 TARGET_DIR [CHROOT_COMMAND]" exit 1 fi if [ $EUID != "0" ]; then echo "error: Must be root to proceed!" exit 1 fi echo "===> Mounting required parts for chroot operation..." mount -o bind /dev "$TARGET_DIR/dev" mount -t proc none "$TARGET_DIR/proc" mount -o bind /sys "$TARGET_DIR/sys" echo " Kernel and device mount setup done!" sleep 3 if [[ -f "$TARGET_DIR/setup-chroot-env.sh" ]]; then echo "===> Preparing chroot environment..." if ! bash "$TARGET_DIR/setup-chroot-env.sh"; then echo "! Chroot env setup failed, please proceed at your own risk." else echo " Setup done!" fi sleep 3 fi echo "===> Teleporting to the chroot environment in 3 seconds..." sleep 3 exec chroot "$TARGET_DIR" "${CHROOT_COMMAND}"