Install Arch

  1. download Arch ISO
  2. mount Arch ISO onto USB using Rufus.
    1. Partition scheme: MBR
    2. File system: FAT32
    3. defaults for remaining
  3. disable secure boot in BIOS
  4. boot into Arch ISO
  5. increase font size
# medium
setfont ter-928n

# large
setfont ter-132b
  1. connect to network
iwctl

# connect to network
device list
station wlan0 scan
station wlan0 get-networks
station wlan0 connect "Network Name"

# exit iwctl
exit

# cpmmet to network
iwctl --passphrase <pwd> station wlan0 connect <ssid>
  1. set time-zone
# list timezones
timedatectl list-timezones
# type / to start searching

# set timezone
timedatectl set-timezone America/Toronto
  1. partition table
# list devices
# note down <os-drive>
# ex. /nvme0n1 or /sda1
lsblk
fdisk -l # for more details

# start fdisk on <os-drive> 
fdisk /dev/<os-drive>

# type following in order
# (note) q ENTER to quit, nothing will be saved until w ENTER

# create new label
g 
ENTER

# partitions (1. 1GB boot and 2. rest)
n ENTER ENTER ENTER +1G ENTER

t ENTER 1 ENTER

n ENTER ENTER ENTER ENTER

# verify
p

# write and quit
w ENTER
  1. disk formatting and mounting
    Recommended option: BTRFS
    Simple option: EXT4

  2. install linux and base packages

# base - bare minimum
# linux - kernal
# linux-firmware - more device drivers
pacstrap /mnt base linux linux-firmware 

# fetch the disk mounting points
genfstab -U /mnt >> /mnt/etc/fstab

# verify it matches step 9
cat /mnt/etc/fstab

# move to system
arch-chroot /mnt
  1. install important packages
# base-devel - package building tools
# sudo - privilege
# grub efibootmgr - bootloader
# btrfs-progs - utilites for file system management
# intel-ucode # or amd-ucode for amd cpus
# networkmanager - ethernet and wifi
# reflector - manage pacman mirrors
# git curl wget - download files
# vim - text editor
# man-db man-pages - manuals for commands
pacman -S base-devel sudo grub efibootmgr btrfs-progs intel-ucode networkmanager reflector git curl wget vim man-db man-pages
  1. setup timezone and locale
# set timezone and sync hardware clock
# ex. <region>/<city>: America/Toronto
ln -sf /usr/share/zoneinfo/<region>/<city> /etc/localtime
hwclock --systohc

# set language
vim /etc/locale.gen
# look for UTF-8 version
# use / to search, then ENTER to go to line, arrow keys to navigate
# use i to edit, then delete # beside the desired line to uncomment
# use ESC :wq to save and quit
# ex. sequence: /en_US ENTER i BACKSPACE ESC :wq ENTER
locale-gen

# use the same line that was uncommented
echo "LANG=en_US.UTF-8" > /etc/locale.conf
  1. setup locale and network
# set hostname
# ex. "jimbo"
echo "<host-name>" > /etc/hostname

# create host file entries, add following lines
vim /etc/hosts
# 127.0.0.1 localhost
# ::1 localhost
# 127.0.1.1 <host-name>

# set root password
passwd

# add new user 
# ex. <user>: bimbo
useradd -mG wheel <user>
passwd <user>
EDITOR=vim visudo
# find the line saying:
# uncomment to allow members of group wheel to execte any command
# remove the # from the line right below
  1. finishing up
# update mkinitcpio config
vim /etc/mkinitcpio.conf
# add btrfs to modules
# ex. MODULES=(btrfs)
mkinitcpio -P

# setup grub
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

# enable network manager
systemctl enable NetworkManager
ping google.ca # test
# Ctrl + C to quit

# exit and reboot
exit
umount -R /mnt
reboot

# login with your created user

# enable time sync
timedatectl set-ntp true

# if on wifi
nmcli device wifi list # list networks
nmcli device wifi connect <SSID> # connect to network

# update system
sudo pacman -Syu

Arch is installed and ready to use. Continue installing features and configuring them.

Continue Setting Up

paru -S greetd-tuigreet
sudo vim /etc/greetd/config.toml

# copy this and fill in username
[terminal]
vt = 1

[default_session]
command = "tuigreet --asterisks --time --remember --theme border=magenta;text=cyan;prompt=green;time=red;action=blue;button=yellow;container=black;input=red --cmd Hyprland"
user = "<username>"

# start greeter service
sudo systemctl enable greetd
sudo systemctl start greetd