71 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
# This script bootstraps arch linux with the utmost essentials. It expects an internet
 | 
						|
# connection, and the harddrives to be set up (and one of the mounted to /mnt).
 | 
						|
 | 
						|
MOUNT=/mnt
 | 
						|
 | 
						|
exists() { command -v "$1" >/dev/null; }
 | 
						|
arch() { arch-chroot "$MOUNT" /bin/bash -c "$1"; }
 | 
						|
pac() { pacstrap "$MOUNT" $@; }
 | 
						|
 | 
						|
if ! exists arch-chroot; then
 | 
						|
    >&2 echo "Meant to be run from the Arch Linux installer"
 | 
						|
    exit 1
 | 
						|
elif ! grep "$MOUNT " /proc/mounts >/dev/null; then
 | 
						|
    >&2 echo "$MOUNT isn't mounted"
 | 
						|
    exit 2
 | 
						|
elif ! ping -c1 http://google.com >/dev/null; then
 | 
						|
    >&2 echo "No internet connection detected!"
 | 
						|
    exit 3
 | 
						|
fi
 | 
						|
 | 
						|
#
 | 
						|
set -e
 | 
						|
 | 
						|
## Collect info
 | 
						|
# hostname
 | 
						|
read -rp "Hostname:\t" host
 | 
						|
 | 
						|
#
 | 
						|
echo "$host" > "$MOUNT/etc/hostname"
 | 
						|
 | 
						|
# ensure keys are up to date
 | 
						|
pacman-key --refresh-keys
 | 
						|
pacman -Syy
 | 
						|
 | 
						|
# bootstrap
 | 
						|
pac base base-devel intel-ucode
 | 
						|
# device mounting drivers
 | 
						|
pac dosfstools ntfs-3g exfat-utils hfsprogs
 | 
						|
 | 
						|
# networking support
 | 
						|
WIRELESS_DEV=$(ip link | grep wlp | awk '{print $2}'| sed 's/://' | sed '1!d')
 | 
						|
if [[ $WIRELESS_DEV ]]; then
 | 
						|
    echo "==> ${WIRELESS_DEV} interface detected"
 | 
						|
    pac iw wireless_tools wpa_actiond wpa_supplicant dialog netctl
 | 
						|
fi
 | 
						|
 | 
						|
WIRED_DEV=$(ip link | grep "en[sop]" | awk '{print $2}'| sed 's/://' | sed '1!d')
 | 
						|
if [[ $WIRED_DEV ]]; then
 | 
						|
    echo "==> ${WIRED_DEV} interface detected"
 | 
						|
    arch "systemctl enable dhcpcd@${WIRED_DEV}.service"
 | 
						|
fi
 | 
						|
# Speed up connections on boot
 | 
						|
if ! grep "^noarp$" $MOUNT/etc/dhcpcd.conf; then
 | 
						|
    echo -e "\nnoarp" >> $MOUNT/etc/dhcpcd.conf
 | 
						|
fi
 | 
						|
 | 
						|
# locale
 | 
						|
sed -i '/^#en_US\.UTF-8/s/^#//' $MOUNT/etc/locale.gen
 | 
						|
arch "locale-gen"
 | 
						|
# datetime
 | 
						|
pac ntp
 | 
						|
arch "systemctl enable ntpd.service"
 | 
						|
arch "ln -sfv /usr/share/zoneinfo/America/Toronto /etc/localtime"
 | 
						|
 | 
						|
# finalization
 | 
						|
genfstab -U "$MOUNT" >> "$MOUNT/etc/fstab"
 | 
						|
arch "bootctl --path=/boot install"
 | 
						|
arch "mkinitcpio -p linux"
 |