Arch Linux - it's really not that complicated
This is a step by step installation documentation on how I install Arch Linux on my Dell XPS 13 (9370) - my primary work setup. This is quite opinionated (e.g. f2fs root partition) and not applicable on every machine out there. But perhaps a rough guideline on how to easily install Arch Linux nonetheless. Please also consult the official Arch Linux Documentation. The step-by-step instructions can also be found on my Github. Make sure to boot from USB using UEFI - this is required by systemd-boot! Once done it can take some seconds - confirm it worked using ping CAUTION Find the correct disk/partition names for yourself using Boot partition Root partition (choose filesystem - assuming f2fs) f2fs-tools is needed if you chose f2fs as your partition With some recent XPS Laptops linux-zen seems to be working better, e.g. resolves screen flickering issues (For AMD replace intel-ucode with amd-ucode in every step that follows) Get luks-uuid with: Create the entry: Overview
Enter BIOS with F2 and configure:
Boot from USB
Set the desired keymap
loadkeys en_US-utf8 (Optional) Connect to wifi
wifi-menuping 1.1.1.1 Sync clock
timedatectl set-ntp true Create two partitions:
lsblk. From here on I am using mine as an example. Do not blindly copy and paste these, it might not work or you might destroy partitions you don't want to destroy.cgdisk /dev/nvme0n1 (Optional) Install f2fs-tools
pacman -S f2fs-tools Formatting and encryption
mkfs.fat -F32 /dev/nvme0n1p1cryptsetup luksFormat --type=luks2 /dev/nvme0n1p2cryptsetup open /dev/nvme0n1p2 luksmkfs.f2fs -l luks /dev/mapper/luks Mount root and boot partition
mount /dev/mapper/luks /mntmkdir -p /mnt/bootmount /dev/nvme0n1p1 /mnt/boot Change Pacman mirror priority, move the closer mirrors to the top
vim /etc/pacman.d/mirrorlist Install the base system plus a few extra packages
pacstrap /mnt base linux linux-firmware zsh vim git sudo efibootmgr wpa_supplicant
dialog iw f2fs-tools
Generate fstab
genfstab -L /mnt >> /mnt/etc/fstab Enter the new system
arch-chroot /mnt Setup time
rm /etc/localtimeln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtimehwclock --systohc Generate required locales
vim /etc/locale.genlocale-gen Set the desired locale
echo 'LANG=en_US.UTF-8' > /etc/locale.conf Set desired keymap and font
echo 'KEYMAP=us' > /etc/vconsole.conf Set the hostname
echo '<hostname>' > /etc/hostname Add hostname to /etc/hosts:
vim /etc/hosts127.0.0.1 localhost
::1 localhost
127.0.1.1 <hostname>.localdomain <hostname>
Set password for root
passwd Add real user
useradd -m -g users -G wheel -s /bin/zsh <username>passwd <username>echo '<username> ALL=(ALL) ALL' > /etc/sudoers.d/<username> Configure mkinitcpio with modules needed for the initrd image
vim /etc/mkinitcpio.conf# Optional - for f2fs module crypto-crc32 is required however
MODULES=(crypto-crc32)
# Important - Use the correct order
HOOKS=(base systemd autodetect modconf block keyboard sd-vconsole sd-encrypt filesystems)
Regenerate the initrd image
mkinitcpio -P Setup systemd-boot
bootctl --path=/boot install Enable Intel microcode updates
pacman -S intel-ucode Create bootloader entry
cryptsetup luksUUID /dev/nvme0n1p2vim /boot/loader/entries/arch.conftitle Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options rw luks.uuid=<uuid> luks.name=<uuid>=luks root=/dev/mapper/luks
Set default bootloader entry
vim /boot/loader/loader.confdefault arch
(Optional) - Setup Gnome
pacman -S gnomesystemctl enable gdm Exit, unmount and reboot
exitumount -R /mntreboot