Last active
March 14, 2022 12:55
-
-
Save deccer/f8d07eaf4ea8e004fea11a964b2236b5 to your computer and use it in GitHub Desktop.
Arch Linux - Base Install Script - UEFI LVM EXT4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
set -o pipefail | |
set -o errtrace | |
set -o nounset | |
set -o errexit | |
KEYMAP='us' | |
LANG='en_US' | |
TIMEZONE='Europe/Berlin' | |
FONT=Lat2-Terminus16 | |
BLOCKDEVICEDISK=/dev/sda | |
BLOCKDEVICEBOOT=/dev/sda1 | |
BLOCKDEVICELVM=/dev/sda2 | |
VOLUMEGROUP=vg | |
LOGICALROOT=root | |
LOGICALROOTSIZE=8G | |
LOGICALSWAP=swap | |
LOGICALSWAPSIZE=2G | |
LOGICALHOME=home | |
MNT=/mnt | |
HOSTNAME=archbox | |
DEFAULTUSER=deccer | |
( | |
echo o | |
echo Y | |
echo n | |
echo 1 | |
echo | |
echo +256M | |
echo ef00 | |
echo n | |
echo 2 | |
echo | |
echo | |
echo 8e00 | |
echo w | |
echo Y | |
) | sudo gdisk $BLOCKDEVICEDISK > /dev/null | |
mkfs.fat -F 32 $BLOCKDEVICEBOOT | |
pvcreate $BLOCKDEVICELVM -f | |
vgcreate $VOLUMEGROUP $BLOCKDEVICELVM -f | |
lvcreate -L$LOGICALSWAPSIZE $VOLUMEGROUP -n $LOGICALSWAP | |
lvcreate -L$LOGICALROOTSIZE $VOLUMEGROUP -n $LOGICALROOT | |
lvcreate -l 100%FREE $VOLUMEGROUP -n $LOGICALHOME -q -y | |
mkfs.ext4 /dev/mapper/$VOLUMEGROUP-$LOGICALROOT | |
mkfs.ext4 /dev/mapper/$VOLUMEGROUP-$LOGICALHOME | |
mkswap /dev/mapper/$VOLUMEGROUP-$LOGICALSWAP | |
swapon /dev/mapper/$VOLUMEGROUP-$LOGICALSWAP | |
mount /dev/mapper/$VOLUMEGROUP-$LOGICALROOT $MNT | |
mkdir -p $MNT/{boot,home} | |
mount $BLOCKDEVICEBOOT $MNT/boot | |
mount /dev/mapper/$VOLUMEGROUP-$LOGICALHOME $MNT/home | |
pacstrap $MNT base base-devel | |
genfstab -U $MNT >> $MNT/etc/fstab | |
arch-chroot $MNT ln -sf /usr/share/zoneinfo/$TIMEZONE /etc/localtime | |
arch-chroot $MNT hwclock --systohc | |
echo $LANG.UTF-8 UTF-8 > /mnt/etc/locale.gen | |
arch-chroot $MNT locale-gen | |
echo LANG=$LANG.UTF-8 >> $MNT/etc/locale.conf | |
echo KEYMAP=$KEYMAP > $MNT/etc/vconsole.conf | |
echo FONT=$FONT >> $MNT/etc/vconsole.conf | |
echo $HOSTNAME >> $MNT/etc/hostname | |
echo 127.0.0.1 $HOSTNAME.localdomain $HOSTNAME >> $MNT/etc/hosts | |
arch-chroot $MNT useradd -m -G wheel -s /bin/bash $DEFAULTUSER | |
echo 'root ALL=(ALL) ALL' > $MNT/etc/sudoers | |
echo '%wheel ALL=(ALL) ALL' >> $MNT/etc/sudoers | |
MKINITCPIOCONF=$MNT/etc/mkinitcpio.conf | |
echo 'MODULES=()' > $MKINITCPIOCONF | |
echo 'BINARIES=()' >> $MKINITCPIOCONF | |
echo 'FILES=()' >> $MKINITCPIOCONF | |
echo 'HOOKS=(base udev autodetect modconf block lvm2 filesystems keyboard fsck)' >> $MKINITCPIOCONF | |
echo 'COMPRESSION=lzma' >> $MKINITCPIOCONF | |
arch-chroot $MNT mkinitcpio -p linux | |
LOADERCONF=$MNT/boot/loader/loader.conf | |
arch-chroot $MNT bootctl --path=/boot install | |
echo 'default arch' > $LOADERCONF | |
echo 'timeout 3' >> $LOADERCONF | |
echo 'editor 0' >> $LOADERCONF | |
BOOTENTRY=$MNT/boot/loader/entries/arch.conf | |
echo 'title Arch Linux' > $BOOTENTRY | |
echo 'linux /vmlinuz-linux' >> $BOOTENTRY | |
echo 'initrd /initramfs-linux.img' >> $BOOTENTRY | |
echo 'options root=/dev/mapper/$VOLUMEGROUP-$LOGICALROOT rw' >> $BOOTENTRY | |
arch-chroot $MNT systemctl enable dhcpcd.service | |
echo 'Installation almost complete. Setting passwords' | |
echo 'Choose a root password:' | |
arch-chroot $MNT passwd | |
echo Choose a password for $DEFAULTUSER: | |
arch-chroot $MNT passwd $DEFAULTUSER | |
umount -R $MNT | |
clear | |
echo 'Installation finished, please reboot now.' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment