A step-by-step guide for people who looked at Ubuntu and thought "nah, I want to suffer more intentionally." No GUI. No hand-holding. Just you, a terminal, and the haunting question of whether you partitioned the right disk.
/dev/sda.# Find your IP address ip a # Set a password for the live session (NOT your real machine) passwd
Then SSH in from another machine: ssh root@<IP_FROM_ip_a>
timedatectl set-ntp true
iwctl's little interactive dungeon. It's not as bad as it looks. It's worse.iwctl # Now inside iwctl interactive prompt: device list # find your WiFi adapter name station <device> scan # scan for networks station <device> get-networks # list them station <device> connect <SSID> # connect (enter password when asked) exit
Replace <device> (e.g. wlan0) and <SSID> with your network name.
lsblk. Assumes /dev/sda — yours may be /dev/nvme0n1 or /dev/vda. Destroying data on the wrong disk is a timeless tradition you do not want to join.cfdisk /dev/sda
yes → Quit
# Format partitions mkfs.fat -F32 /dev/sda1 # EFI partition mkfs.ext4 /dev/sda2 # root partition # Mount them mount /dev/sda2 /mnt mkdir -p /mnt/boot mount /dev/sda1 /mnt/boot
nano /etc/pacman.d/mirrorlist # Add these at the TOP of the file (BD mirrors — fast locally): Server = http://mirror.limda.net/archlinux/$repo/os/$arch Server = https://mirror.limda.net/archlinux/$repo/os/$arch Server = http://mirror.xeonbd.com/archlinux/$repo/os/$arch Server = https://mirror.xeonbd.com/archlinux/$repo/os/$arch
Save with Ctrl+O, exit with Ctrl+X. If you don't know nano keybinds yet... welcome.
pacstrap /mnt base linux linux-firmware nano openssh btop networkmanager
vim git sudo. It's cheaper now than re-entering chroot later.genfstab -U /mnt >> /mnt/etc/fstab # Verify it looks sane (2 entries expected) cat /mnt/etc/fstab
arch-chroot /mnt
# Hostname — name your machine. Be creative. Or don't. echo "myhostname" > /etc/hostname # Timezone — symlink your zone ln -sf /usr/share/zoneinfo/Asia/Dhaka /etc/localtime hwclock --systohc # Locale echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen locale-gen echo "LANG=en_US.UTF-8" > /etc/locale.conf # Root password (don't use "password". Or do. I'm a guide, not your dad.) passwd # Enable SSH and NetworkManager on boot systemctl enable sshd systemctl enable NetworkManager
Replace myhostname and Asia/Dhaka with your actual hostname and timezone. List zones: ls /usr/share/zoneinfo/
ls /sys/firmware/efi — if the directory exists, you're UEFI. Pick accordingly.pacman -S grub efibootmgr grub-install \ --target=x86_64-efi \ --efi-directory=/boot \ --bootloader-id=GRUB grub-mkconfig \ -o /boot/grub/grub.cfg
pacman -S grub grub-install \ --target=i386-pc \ /dev/sda grub-mkconfig \ -o /boot/grub/grub.cfg
exit # leave chroot umount -R /mnt # unmount everything cleanly reboot # this is it. godspeed.