Most what you will find in this post comes from this gist. I’m rewritting this here as a note in any case. Some more info about the installation process here on ArchWiki and also more info about the post-installation process.
- Boot USB flash drive and make sure it’s connected via Ethernet.
- Change terminal keys if you are not in qwerty:
loadkeys fr
- Disable the beeping sound (this one will save your ears and sanity):
setterm -blength 0
- Check if the system was booted with UEFI:
cat /sys/firmware/efi/fw_platform_size
It should exists and be 64 if it’s booted in UEFI x86_64. If that’s the case, continue.
- Check that you have an IP address and try a ping to check your Internet connectivity:
ip address ping 8.8.8.8
- Update system clock and check status:
timedatectl set-ntp true timedatectl status
- Enable SSH, this might be useful if you want to continue the installation from elsewhere or transfer files via sftp:
systemctl start sshd
- List the disks then proceed with creating the partitions:
fdisk -l cfdisk /dev/sda
Create a EFI partition of 256M to 512M, a several GB swap partition and what is left with a Linux root partition.
- Format the partitions:
mkfs.fat -F32 /dev/sda1 mkfs.ext4 -L root -m 0 /dev/sda3
- Mount the root partition:
mount -o noatime /dev/sda3 /mnt
- Install the base packages:
pacstrap -Ki /mnt base linux linux-firmware
- Generate the fstab:
genfstab -U -p /mnt >> /mnt/etc/fstab
- Chroot in the filesystem:
arch-chroot /mnt
- Configure the terminal keyboard:
vim /etc/vconsole.conf
- Set the timezone:
ln -sf /usr/share/zoneinfo/Europe/Brussels /etc/localtime
- Update the hardware clock:
hwclock --systohc
- Install other packages:
pacman -S grub efibootmgr dosfstools openssh os-prober mtools net-tools inetutils netctl dhcpcd dhclient vim
- Edit and set-up the locale:
vim /etc/locale.gen locale-gen
- Setup root password:
passwd
- Create and mount EFI directory:
mkdir /boot/EFI mount -o noatime /dev/sda1 /boot/EFI
- Time to install the GRUB bootloader and write the config:
grub-install --target=x86_64-efi --bootloader-id=grub_uefi --recheck grub-mkconfig -o /boot/grub/grub.cfg
- If needed you might configure an extra entry within the GRUB boot list, for instance for a dualboot with FreeBSD. To that end, edit
/etc/grub.d/40_custom
and add (at the end of this file):menuentry FreeBSD { insmod ufs2 set root='(hd0,gpt3)' chainloader /boot/loader.efi }
Then update the grub configuration with:
grub-mkconfig -o /boot/grub/grub.cfg
- Time to reboot:
exit reboot