diff --git a/install.sh b/install.sh index b3604a2..7784a80 100755 --- a/install.sh +++ b/install.sh @@ -1,3 +1,74 @@ #!/bin/bash -echo "goo" +source install.conf + +# make command silent +s() { + $* >/dev/null 2>&1 +} + +# check for internet +s ping -c1 archlinux.org +if [[ "$?" -ne 0 ]]; then + echo "internet connection needed" + exit 1 +fi + +# determine efi or bios boot mode +if [[ ! "$boot_mode" ]]; then + s ls /sys/firmware/efi/efivars + if [[ "$?" -eq 0 ]]; then + echo "selected efi boot mode" + boot_mode='efi' + else + echo "selected bios boot mode" + boot_mode='bios' + fi +fi + +echo "update system clock" +s timedatectl set-ntp true + +echo "create partitions" +s wipefs -af "$storage_device" +if [[ "$boot_mode" == "efi" ]]; then + sgdisk -n "1:2048:+1G" -t "1:EF00" "$storage_device" +else + sgdisk -n "1:2048:+1G" -t "1:EF02" "$storage_device" +fi +sgdisk -n "2:0:0" -t "2:8309" "$storage_device" + +echo "creating luks partition" +echo "$encryption_password" | cryptsetup -q luksFormat --type luks1 "${storage_device}2" +echo "$encryption_password" | cryptsetup -q open "${storage_device}2" lvm + +echo "creating lvm" +s pvcreate /dev/mapper/lvm +s vgcreate vg /dev/mapper/lvm +s lvcreate -L 8G vg -n swap +s lvcreate -l 100%FREE vg -n root + +echo "formatting filesystems" +if [[ "$boot_mode" == "efi" ]]; then + s mkfs.vfat -F32 "${storage_device}1" +else + s mkfs.vfat "${storage_device}1" +fi +s mkfs.ext4 /dev/vg/root +s mkswap /dev/cg/swap + +echo "mounting filesystems" +s mount /dev/vg/root /mnt +if [[ "$boot_mode" == "efi" ]]; then + s mkdir /mnt/efi + s mount "${storage_device}1" /mnt/efi +else + s mkdir /mnt/boot + s mount "${storage_device}1" /mnt/boot +fi + +echo "installing base system" +pacstrap /mnt base + +echo "generating fstab" +s genfstab -U /mnt >> /mnt/etc/fstab