mirror of
https://mau.dev/andreijiroh-dev/dotfiles.git
synced 2024-11-14 10:19:37 +00:00
847b847c79
Also in this commit: * Added handle-pinentry wrapper script to exec right pinentry based on environment. * Add VS Code config for stuff like GitLens settings and recommended extensions. Signed-off-by: Andrei Jiroh Halili <ajhalili2006@andreijiroh.eu.org>
39 lines
1.1 KiB
Bash
Executable file
39 lines
1.1 KiB
Bash
Executable file
#!/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}"
|