My personally preferred way of installing Arch Linux using KDE Plasma with encrypted Btrfs, systemd-boot and UEFI.
Go to file
martin schmidt 98c5a04842 Update README.md 2022-01-12 16:05:31 +00:00
README.md Update README.md 2022-01-12 16:05:31 +00:00

README.md

Simple, modern and secure installation of Arch Linux with KDE Plasma.

Load the preferred keyboard. In my case it's "de" for Germany.
$ loadkeys de

List devices to make sure you partition the right device.
$ lsblk

Partition the device using gdisk (assuming /dev/sda).
$ gdisk /dev/sda

Create GPT and EFI-partion.
# Creates new GPT-partition table.
$ o
# Accept.
$ y
# Create a new partition, accept default partition number 1 and first sector.
$ n
# Enter partition size (second sector), 512 MB should be plenty for /boot and accept.
$ +512M
# Mark as EFI.
$ ef00
# New main partition, accept all the following using "y".
$ n

Print and check your partitions. There should be a 512 MiB EFI system partition and a Linux filesystem filling up the rest of the space
$ p

Write partitions to device.
$ w
# Accept.
$ y

Encrypt primary partition.
$ cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2
$ YES

Open encrypted partition and mount to container "lvm".
$ cryptsetup luksOpen /dev/vda2 lvm

Create LVM physical volume.
$ pvcreate /dev/mapper/lvm

Create LVM volume group called "main".
$ vgcreate main /dev/mapper/lvm

Create LVM logical volumes for /root and /home.
Your root volume should be 25-50 GB big, your home volume takes up the remaining space.

$ lvcreate -L 25G -n root main
$ lvcreate -l 100%FREE -n home main

Create the filesystems and mount your volumes.
$ mkfs.fat -F 32 -n UEFI /dev/sda1
-F specifies the type of file allocation tables used (12, 16 or 32 bit).
-n sets the volume name (label) of the filesystem to "UEFI".

Create ext4 filesystem on root and home volumes.
$ mkfs.ext4 -L root /dev/mapper/main-root
$ mkfs.ext4 -L home /dev/mapper/main-home

Create mountpoints and mount partitions.
$ mount /dev/mapper/main-root /mnt
$ mkdir /mnt/boot
$ mkdir /mnt/home
$ mount /dev/sda1 /mnt/boot $ mount /dev/mapper/main-home /mnt/home

Optionally update mirrorlist using reflector.
In this case use the latest 10 mirrors from Germany, that have been synchronized within the last 24 hours and sort the by download-rate and write them to the pacman mirrorlist.
$ reflector --verbose --latest 10 --country Germany --age 24 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

Install base system and basic packages (network, editor, sudo).
The package base-devel is not necessary but recommended.
$ pacstrap /mnt base base-devel linux linux-firmware networkmanager nano sudo lvm2

Generate fstab.
$ genfstab -Up /mnt > /mnt/etc/fstab
-U = Use UUID for source identifiers (shortcut for -t LABEL).
-p Exclude pseudofs mounts (default behavior).

Chroot into your installation.
$ arch-chroot /mnt

Set your hostname.
$ echo mycomputer > /etc/hostname

Generate locale.gen for your preferred language (and preferribly english).
$ nano /etc/locale.gen
Uncomment your language, e.g. de_DE.UTF-8 UTF-8 (and en_US.UTF-8).

Generate the locale.
$ locale-gen

Add necessary HOOKS and MODULES.
$ nano /etc/mkinitcpio.conf

MODULES=(ext4)
HOOKS=(base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems fsck shutdown)

Create mkinitcpio.
$ mkinitcpio -p linux

Start NetworkManager for automatic network access on next boot.
$ systemctl enable NetworkManager

Set a root-password.
$ passwd

Install systemd-boot bootloader.
$ bootctl install

Create the bootloader config.
$ nano /bootloader/entries/arch.conf

Add the following:

title    Arch Linux
linux    /vmlinuz-linux
initrd   /initramfs-linux.img
options  cryptdevice=/dev/sda2:main root=/dev/mapper/main-root rw lang=de init=/usr/lib/systemd/systemd locale=de_DE.UTF-8

Create a fallback config.
$ cp /boot/loader/entries/arch.conf /boot/loader/entries/arch-fallback.conf

Edit the fallback config.
$ nano /boot/loader/entries/arch-fallback.conf

Change it to the following:

title    Arch Linux Fallback
initrd   /initramfs-linux-fallback.img

Edit loader config.
$ nano /boot/loader/loader.conf

Change it to the following:

timeout 1
default arch.conf

Exit and reboot.
$ exit
$ umount /mnt/boot
$ umount /mnt/home
$ reboot

Enter encryption-password and login as root.
You have to set the keyboard one last time.
$ loadkeys de

Set the keyboard to your preferred language permantently.
$ echo KEYMAP=de-latin1-nodeadkeys > /etc/vconsole.conf

Create a user with a /home-directory.
$ useradd -m $myusername

Set password for your user.
$ passwd $myusername

Add $myusername to group wheel for sudo access.
$ gpasswd -a $myusername wheel

Edit sudoers-file for sudo access.
$ nano /etc/sudoers

Uncomment „%wheel ALL=(ALL) ALL“.
** Don't forget to also delete the space between the # and %wheel.**

Logout as root.
$ exit

Login as you user.

Install SDDM and a minimal KDE Plasma. Select the default when unsure.
$ pacman -S sddm sddm-kcm plasma-desktop

Install KDE terminal for easier installation of packages in Plasma.
$ pacman -S konsole

Enable and start SDDM to login to Plasma.
$ systemctl enable sddm
$ systemctl start sddm

Now you are logged in to your Plasma desktop environment and ready to configure and use your Arch Linux.

Suggested packages to install.

  • microcode (https://wiki.archlinux.org/index.php/Microcode)
  • kde-gtk-config (Adds graphical settings for GTK apps.)
  • kdeplasma-addons („All kind of addons to improve your Plasma experience.“)
  • kscreen (Adds screen section to graphical settings.)
  • ksystemlog (Graphical system log viewer)
  • partitionmanager (Graphical partition manager)
  • plasma-nm (Network manager applet)
  • plasma-pa (Audio manager applet)
  • powerdevil (Adds energy manager to graphical settings.)
  • spectacle (Graphical screenshot tool.)
  • systemd-swap (https://wiki.archlinux.org/index.php/swap#systemd-swap)