Add install.sh
This commit is contained in:
parent
9e071066ac
commit
f8c325b121
66
install.sh
Normal file
66
install.sh
Normal file
@ -0,0 +1,66 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Load configuration
|
||||
if [[ ! -f .env ]]; then
|
||||
echo "Missing .env. Copy .env.template and edit it before running."
|
||||
exit 1
|
||||
fi
|
||||
source .env
|
||||
|
||||
echo ">>> Arch Secure Install starting on ${DISK}"
|
||||
|
||||
timedatectl set-ntp true
|
||||
|
||||
# Wipe and partition
|
||||
sgdisk --zap-all "${DISK}"
|
||||
sgdisk -n1:0:+512M -t1:EF00 -c1:"EFI System Partition" "${DISK}"
|
||||
sgdisk -n2:0:0 -t2:8309 -c2:"Linux LUKS" "${DISK}"
|
||||
partprobe "${DISK}"
|
||||
|
||||
EFI="${DISK}p1"
|
||||
ROOT="${DISK}p2"
|
||||
|
||||
echo ">>> Formatting EFI partition"
|
||||
mkfs.fat -F32 "${EFI}"
|
||||
|
||||
echo ">>> Setting up LUKS2 on ${ROOT}"
|
||||
echo -n "${LUKS_PASSPHRASE}" | cryptsetup luksFormat --type luks2 "${ROOT}" -
|
||||
echo -n "${LUKS_PASSPHRASE}" | cryptsetup open "${ROOT}" "${LUKS_NAME}" -
|
||||
|
||||
echo ">>> Creating Btrfs filesystem"
|
||||
mkfs.btrfs /dev/mapper/"${LUKS_NAME}"
|
||||
|
||||
mount /dev/mapper/"${LUKS_NAME}" /mnt
|
||||
|
||||
for subvol in ${BTRFS_SUBVOLS}; do
|
||||
btrfs subvolume create "/mnt/${subvol}"
|
||||
done
|
||||
umount /mnt
|
||||
|
||||
echo ">>> Mounting subvolumes"
|
||||
mount -o subvol=@,${BTRFS_OPTS} /dev/mapper/"${LUKS_NAME}" /mnt
|
||||
mkdir -p /mnt/{boot,home,var/log,var/cache}
|
||||
|
||||
mount -o subvol=@home,${BTRFS_OPTS} /dev/mapper/"${LUKS_NAME}" /mnt/home
|
||||
mount -o subvol=@log /dev/mapper/"${LUKS_NAME}" /mnt/var/log
|
||||
mount -o subvol=@cache /dev/mapper/"${LUKS_NAME}" /mnt/var/cache
|
||||
mount "${EFI}" /mnt/boot
|
||||
|
||||
echo ">>> Installing base system"
|
||||
pacstrap -K /mnt base linux linux-firmware btrfs-progs systemd-ukify systemd-bootctl
|
||||
|
||||
echo ">>> Generating fstab"
|
||||
genfstab -U /mnt >> /mnt/etc/fstab
|
||||
|
||||
echo ">>> Copying configuration"
|
||||
mkdir -p /mnt/root/install
|
||||
cp .env /mnt/root/install/.env
|
||||
cp chroot_setup.sh /mnt/root/install/
|
||||
cp firstboot.sh /mnt/root/install/
|
||||
chmod +x /mnt/root/install/{chroot_setup.sh,firstboot.sh}
|
||||
|
||||
echo ">>> Chrooting into new system"
|
||||
arch-chroot /mnt /root/install/chroot_setup.sh
|
||||
|
||||
echo ">>> Installation complete. Reboot when ready."
|
||||
Loading…
Reference in New Issue
Block a user