Install Arch Linux is thing I always want to do for my laptop/PC since I had my laptop in ninth grade.
This is not a guide for everyone, this is just save for myself in a future and for anyone who want to walk in my shoes.
Check disks carefully:
lsblk
Check UEFI mode:
ls /sys/firmware/efi/efivars
For wifi, use iwd.
cgdisk /dev/sdx
UEFI/GPT layout:
Mount point | Partition | Partition type | Suggested size |
---|---|---|---|
/mnt/efi |
/dev/efi_system_partition |
EFI System Partition | 512 MiB |
/mnt/boot |
/dev/extended_boot_loader_partition |
Extended Boot Loader Partition | 1 GiB |
/mnt |
/dev/root_partition |
Root Partition |
BIOS/GPT layout:
Mount point | Partition | Partition type | Suggested size |
---|---|---|---|
BIOS boot partition | 1 MiB | ||
/mnt |
/dev/root_partition |
Root Partition |
LVM:
# Create physical volumes
pvcreate /dev/sdaX
# Create volume groups
vgcreate RootGroup /dev/sdaX /dev/sdaY
# Create logical volumes
lvcreate -l +100%FREE RootGroup -n rootvol
Format:
# efi
mkfs.fat -F32 /dev/efi_system_partition
# boot
mkfs.fat -F32 /dev/extended_boot_loader_partition
# root
mkfs.ext4 -L ROOT /dev/root_partition
# root with btrfs
mkfs.btrfs -L ROOT /dev/root_partition
# root on lvm
mkfs.ext4 /dev/RootGroup/rootvol
Mount:
# root
mount /dev/root_partition /mnt
# root with btrfs
mount -o compress=zstd /dev/root_partition /mnt
# root on lvm
mount /dev/RootGroup/rootvol /mnt
# efi
mount --mkdir /dev/efi_system_partition /mnt/efi
# boot
mount --mkdir /dev/extended_boot_loader_partition /mnt/boot
pacstrap -K /mnt base linux linux-firmware
# AMD
pacstrap -K /mnt amd-ucode
# Intel
pacstrap -K /mnt intel-ucode
# Btrfs
pacstrap -K /mnt btrfs-progs
# LVM
pacstrap -K /mnt lvm2
# Text editor
pacstrap -K /mnt neovim
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc
Edit /etc/locale.gen
:
# Uncomment en_US.UTF-8 UTF-8
Generate locales:
locale-gen
Edit /etc/locale.conf
:
LANG=en_US.UTF-8
Edit /etc/hostname
:
myhostname
Edit /etc/mkinitcpio.conf
:
# LVM
# https://wiki.archlinux.org/title/Install_Arch_Linux_on_LVM#Adding_mkinitcpio_hooks
HOOKS=(base udev ... block lvm2 filesystems)
# https://wiki.archlinux.org/title/mkinitcpio#Common_hooks
# Replace udev with systemd
mkinitcpio -P
passwd
# NetworkManager
pacman -Syu networkmanager
systemctl enable NetworkManager.service
# Bluetooth
pacman -Syu bluez
systemctl enable bluetooth.service
# Clock
timedatectl set-ntp true
Always remember to check dependencies when install packages.
Sudo:
pacman -Syu sudo
EDITOR=nvim visudo
# Uncomment group wheel
# Add user if don't want to use systemd-homed
useradd -m -G wheel -c "The Joker" joker
# Or using zsh
useradd -m -G wheel -s /usr/bin/zsh -c "The Joker" joker
# Set password
passwd joker
systemctl enable systemd-homed.service
homectl create joker --real-name="The Joker" --member-of=wheel
# Using zsh
homectl update joker --shell=/usr/bin/zsh
Note:
Can not run homectl
when install Arch Linux.
Should run on the first boot.
Install Xorg:
pacman -Syu xorg-server
pacman -Syu gnome-shell \
gnome-control-center gnome-system-monitor \
gnome-tweaks gnome-backgrounds gnome-screenshot gnome-keyring gnome-logs \
gnome-console gnome-text-editor \
nautilus xdg-user-dirs-gtk file-roller evince eog
# Login manager
pacman -Syu gdm
systemctl enable gdm.service
pacman -Syu plasma-meta \
kde-system-meta
# Login manager
pacman -Syu sddm
systemctl enable sddm.service
Uncomment in /etc/pacman.conf
:
# Misc options
Color
ParallelDownloads
pacman -Syu pipewire wireplumber \
pipewire-alsa pipewire-pulse \
gst-plugin-pipewire pipewire-v4l2
pacman -Syu flatpak
https://wiki.archlinux.org/index.php/swap#Swap_file
https://wiki.archlinux.org/index.php/swap#Swappiness
https://wiki.archlinux.org/index.php/Systemd/Journal#Journal_size_limit
https://wiki.archlinux.org/index.php/Core_dump#Disabling_automatic_core_dumps
https://wiki.archlinux.org/index.php/Solid_state_drive#Periodic_TRIM
https://wiki.archlinux.org/index.php/Silent_boot
https://wiki.archlinux.org/title/Improving_performance#Watchdogs
https://wiki.archlinux.org/title/PRIME
This guide is updated regularly I promise.