chroot.sh 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/bin/bash
  2. while true; do
  3. passwd && break
  4. done
  5. TZuser=$(cat tzfinal.tmp)
  6. AES_NI=$(cat aes.tmp)
  7. DRIVE=$(cat drive)
  8. PVALUE=$(echo "${DRIVE}" | grep "^nvme" | sed 's/.*[0-9]/p/')
  9. # TODO: Add Selection TUI
  10. echo KEYMAP=de_CH-latin1 >/etc/vconsole.conf
  11. ln -sf /usr/share/zoneinfo/"$TZuser" /etc/localtime
  12. hwclock --systohc
  13. # TODO: Add Selection TUI
  14. echo "LANG=en_GB.UTF-8" >>/etc/locale.conf
  15. echo "en_GB.UTF-8 UTF-8" >>/etc/locale.gen
  16. locale-gen
  17. pacman --noconfirm --needed -S networkmanager
  18. systemctl enable NetworkManager
  19. ls /sys/firmware/efi/efivars && EFI=yes
  20. if [ "$EFI" = "yes" ]; then
  21. if [ "$AES_NI" = "yes" ]; then
  22. SWAP_LETTER="2"
  23. ROOT_LETTER="3"
  24. else
  25. SWAP_LETTER="2"
  26. ROOT_LETTER="4"
  27. fi
  28. else
  29. if [ "$AES_NI" = "yes" ]; then
  30. SWAP_LETTER="1"
  31. ROOT_LETTER="2"
  32. else
  33. SWAP_LETTER="1"
  34. ROOT_LETTER="3"
  35. fi
  36. fi
  37. LUKS_UUID=$(blkid -s UUID -o value /dev/"${DRIVE}${PVALUE}${ROOT_LETTER}")
  38. pacman --noconfirm --needed -S grub
  39. if [ "$AES_NI" = "yes" ]; then
  40. # AES Fully-Encrypted Root Setup (Includes Keyfile logic)
  41. dd bs=512 count=4 if=/dev/urandom of=/crypto_keyfile.bin
  42. while true; do
  43. cryptsetup luksAddKey /dev/"${DRIVE}${PVALUE}${ROOT_LETTER}" /crypto_keyfile.bin && break
  44. done
  45. chmod 000 /crypto_keyfile.bin
  46. sed -i 's|^FILES=.*|FILES=(/crypto_keyfile.bin)|' /etc/mkinitcpio.conf
  47. sed -i 's|^HOOKS=.*|HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)|' /etc/mkinitcpio.conf
  48. mkinitcpio -P
  49. sed -i "s|^GRUB_CMDLINE_LINUX=.*|GRUB_CMDLINE_LINUX=\"rd.luks.name=${LUKS_UUID}=cryptroot rd.luks.key=${LUKS_UUID}=/crypto_keyfile.bin\"|" /etc/default/grub
  50. sed -i 's/#GRUB_ENABLE_CRYPTODISK/GRUB_ENABLE_CRYPTODISK/' /etc/default/grub
  51. SWAP_CIPHER="aes-cbc-essiv:sha256"
  52. else
  53. # Adiantum Unencrypted Boot Setup (NO Keyfile logic to prevent plaintext key leak)
  54. sed -i 's|^HOOKS=.*|HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)|' /etc/mkinitcpio.conf
  55. mkinitcpio -P
  56. sed -i "s|^GRUB_CMDLINE_LINUX=.*|GRUB_CMDLINE_LINUX=\"rd.luks.name=${LUKS_UUID}=cryptroot\"|" /etc/default/grub
  57. SWAP_CIPHER="xchacha12,aes-adiantum-plain64"
  58. fi
  59. echo "swap /dev/${DRIVE}${PVALUE}${SWAP_LETTER} /dev/urandom swap,cipher=${SWAP_CIPHER},size=256" >>/etc/crypttab
  60. if [ "$EFI" = "yes" ]; then
  61. pacman --noconfirm --needed -S efibootmgr
  62. grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub /dev/"${DRIVE}" --recheck
  63. else
  64. grub-install --target=i386-pc /dev/"${DRIVE}" --recheck
  65. fi
  66. grub-mkconfig -o /boot/grub/grub.cfg
  67. # Cleanup
  68. rm drive tzfinal.tmp aes.tmp