mirror of
				https://github.com/ItsDrike/dotfiles.git
				synced 2025-11-04 01:16:35 +00:00 
			
		
		
		
	Merge branch 'arch' into gentoo
This commit is contained in:
		
						commit
						1694d13121
					
				
					 3 changed files with 81 additions and 78 deletions
				
			
		| 
						 | 
				
			
			@ -1,39 +0,0 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
# Ensure we run as root
 | 
			
		||||
if [ "$EUID" -ne 0 ]; then
 | 
			
		||||
    echo "Must be ran as root"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Take chroot user as 1st argument, default to root
 | 
			
		||||
if [ $# -ge 1 ]; then
 | 
			
		||||
    USERNAME="$1"
 | 
			
		||||
else
 | 
			
		||||
    USERNAME="root"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
MOUNT_POINT="/mnt/arch"
 | 
			
		||||
 | 
			
		||||
# Make sure the partition is mounted according to fstab
 | 
			
		||||
mount "$MOUNT_POINT" 2> /dev/null
 | 
			
		||||
 | 
			
		||||
# Mount necessary directories for chroot to be possible
 | 
			
		||||
mount --types proc /proc "$MOUNT_POINT/proc"
 | 
			
		||||
mount --rbind /sys "$MOUNT_POINT/sys"
 | 
			
		||||
mount --make-rslave "$MOUNT_POINT/sys"
 | 
			
		||||
mount --rbind /dev "$MOUNT_POINT/dev"
 | 
			
		||||
mount --make-rslave "$MOUNT_POINT/dev"
 | 
			
		||||
 | 
			
		||||
# Use /bin/su for chrooting with --login to also run
 | 
			
		||||
# /etc/profile and ~/.profile or ~/.zprofile
 | 
			
		||||
chroot "$MOUNT_POINT" "/bin/su" "$USERNAME" --login
 | 
			
		||||
 | 
			
		||||
# Unmount recursively mounted directories
 | 
			
		||||
umount -l "$MOUNT_POINT/dev"
 | 
			
		||||
umount -l "$MOUNT_POINT/sys"
 | 
			
		||||
umount -l "$MOUNT_POINT/proc"
 | 
			
		||||
umount -R "$MOUNT_POINT"
 | 
			
		||||
 | 
			
		||||
# Remount partition according to fstab
 | 
			
		||||
mount "$MOUNT_POINT"
 | 
			
		||||
							
								
								
									
										81
									
								
								root/usr/local/bin/auto-chroot
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										81
									
								
								root/usr/local/bin/auto-chroot
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,81 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
yes_no() {
 | 
			
		||||
    while true; do
 | 
			
		||||
        printf "$1 (y/n): "
 | 
			
		||||
        read -r yn
 | 
			
		||||
        case $yn in
 | 
			
		||||
            [Yy]* ) return 0;;
 | 
			
		||||
            [Nn]* ) return 1;;
 | 
			
		||||
            * ) echo "Please answer yes or no";;
 | 
			
		||||
        esac
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Ensure we run as root
 | 
			
		||||
if [ "$EUID" -ne 0 ]; then
 | 
			
		||||
    echo "Must be ran as root"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Take NEWROOT as 1st argument
 | 
			
		||||
if [ $# -ge 1 ]; then
 | 
			
		||||
    NEWROOT="$1"
 | 
			
		||||
else
 | 
			
		||||
    echo "Provide newroot directory"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Take chroot user as 2nd argument, default to root
 | 
			
		||||
if [ $# -ge 2 ]; then
 | 
			
		||||
    USERNAME="$2"
 | 
			
		||||
else
 | 
			
		||||
    USERNAME="root"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Check if given NEWROOT is already mounted, if it is
 | 
			
		||||
# set REMOUNT to the mount source, so that we can remount
 | 
			
		||||
# it once we're done.
 | 
			
		||||
df_out=$(df --output=source,target | grep -w "$NEWROOT")
 | 
			
		||||
if [ -n "$df_out" ]; then
 | 
			
		||||
    REMOUNT="$(echo $df_out | awk '{print $1}')"
 | 
			
		||||
else
 | 
			
		||||
    # If the target isn't mounted already, check
 | 
			
		||||
    # if user gave $3 (mount location)
 | 
			
		||||
    if [ $# -ge 3 ]; then
 | 
			
		||||
        mount "$3" "$NEWROOT"
 | 
			
		||||
    else
 | 
			
		||||
        # If user didn't give mount location, try to
 | 
			
		||||
        # mount according to fstab
 | 
			
		||||
        if [ -n "$(grep -w "$NEWROOT" /etc/fstab)" ]; then
 | 
			
		||||
            mount "$NEWROOT"
 | 
			
		||||
        else
 | 
			
		||||
            # Ask for user confirmation to ensure that filesystem
 | 
			
		||||
            # is ready for chroot in given NEWROOT, exit if not
 | 
			
		||||
            yes_no "$NEWROOT wasn't mounted, is your filesystem in place?" || exit 1
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Mount necessary directories for chroot to be possible
 | 
			
		||||
mount --types proc /proc "$NEWROOT/proc"
 | 
			
		||||
mount --rbind /sys "$NEWROOT/sys"
 | 
			
		||||
mount --make-rslave "$NEWROOT/sys"
 | 
			
		||||
mount --rbind /dev "$NEWROOT/dev"
 | 
			
		||||
mount --make-rslave "$NEWROOT/dev"
 | 
			
		||||
 | 
			
		||||
# Use /bin/su for chrooting with --login to also run
 | 
			
		||||
# /etc/profile and ~/.profile or ~/.zprofile
 | 
			
		||||
chroot "$NEWROOT" "/bin/su" "$USERNAME" --login
 | 
			
		||||
 | 
			
		||||
# Unmount recursively mounted directories
 | 
			
		||||
umount -l "$NEWROOT/dev"
 | 
			
		||||
umount -l "$NEWROOT/sys"
 | 
			
		||||
umount -l "$NEWROOT/proc"
 | 
			
		||||
umount -R "$NEWROOT"
 | 
			
		||||
 | 
			
		||||
# Remount partition according to fstab if REMOUT is set
 | 
			
		||||
# in order to leave the filesystem in the state it was
 | 
			
		||||
if [ -n "$REMOUNT" ]; then
 | 
			
		||||
    mount "$REMOUNT" "$NEWROOT"
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			@ -1,39 +0,0 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
# Ensure we run as root
 | 
			
		||||
if [ "$EUID" -ne 0 ]; then
 | 
			
		||||
    echo "Must be ran as root"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Take chroot user as 1st argument, default to root
 | 
			
		||||
if [ $# -ge 1 ]; then
 | 
			
		||||
    USERNAME="$1"
 | 
			
		||||
else
 | 
			
		||||
    USERNAME="root"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
MOUNT_POINT="/mnt/gentoo"
 | 
			
		||||
 | 
			
		||||
# Make sure the partition is mounted according to fstab
 | 
			
		||||
mount "$MOUNT_POINT" 2> /dev/null
 | 
			
		||||
 | 
			
		||||
# Mount necessary directories for chroot to be possible
 | 
			
		||||
mount --types proc /proc "$MOUNT_POINT/proc"
 | 
			
		||||
mount --rbind /sys "$MOUNT_POINT/sys"
 | 
			
		||||
mount --make-rslave "$MOUNT_POINT/sys"
 | 
			
		||||
mount --rbind /dev "$MOUNT_POINT/dev"
 | 
			
		||||
mount --make-rslave "$MOUNT_POINT/dev"
 | 
			
		||||
 | 
			
		||||
# Use /bin/su for chrooting with --login to also run
 | 
			
		||||
# /etc/profile and ~/.profile or ~/.zprofile
 | 
			
		||||
chroot "$MOUNT_POINT" "/bin/su" "$USERNAME" --login
 | 
			
		||||
 | 
			
		||||
# Unmount recursively mounted directories
 | 
			
		||||
umount -l "$MOUNT_POINT/dev"
 | 
			
		||||
umount -l "$MOUNT_POINT/sys"
 | 
			
		||||
umount -l "$MOUNT_POINT/proc"
 | 
			
		||||
umount -R "$MOUNT_POINT"
 | 
			
		||||
 | 
			
		||||
# Remount partition according to fstab
 | 
			
		||||
mount "$MOUNT_POINT"
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue