So, you want to install Arch Linux.
Excellent.
This means you are brave, curious, and possibly the kind of person who sees a perfectly working computer and thinks:
“Nice. But what if I manually installed the operating system myself?”
Welcome.
Arch Linux has a reputation for being difficult.
That reputation is not completely fake.
But Arch is not impossible. It is just honest. Very honest. Sometimes brutally honest. Like a terminal-shaped fitness trainer shouting:
“You wanted control? Good. Now choose your partitions.”
This guide will walk you through a basic Arch Linux installation using either:
- UEFI + GPT for most modern computers,
- BIOS + MBR for older machines.
We will keep things practical, clear, and beginner-friendly.
But serious warning first:
Installing Arch Linux can erase your disk if you choose the wrong drive.
So before typing commands like a heroic keyboard warrior, stop and check what you are doing.
The terminal has no emotional intelligence.
It will delete exactly what you tell it to delete.
Before You Start
You need:
- an Arch Linux ISO,
- a USB stick,
- a computer or laptop,
- internet access,
- patience,
- and the ability to read before pressing Enter.
That last one is important.
Very important.
Especially when disks are involved.
This guide assumes you are doing a clean installation.
If you are dual-booting with Windows or preserving existing data, do not blindly follow the partitioning commands.
That is how sadness becomes permanent.
UEFI or BIOS?
Before installing Arch, you need to know how your computer boots.
Most modern computers use UEFI.
Older machines may use BIOS, also called Legacy BIOS.
After booting from the Arch ISO, run:
ls /sys/firmware/efi
If the directory exists, you are booted in UEFI mode.
If it does not exist, you are in BIOS/Legacy mode.
This matters because the bootloader installation is different.
UEFI and BIOS are like two doors into the same house.
But if you try to use the wrong key, the house will politely refuse to boot.
Check Your Disk Name
Before touching partitions, check your disks:
lsblk
You may see something like:
sda
├─sda1
└─sda2
Or on NVMe drives:
nvme0n1
├─nvme0n1p1
└─nvme0n1p2
In this guide, I will use /dev/sdX as an example.
You must replace it with your real disk.
Examples:
/dev/sda/dev/nvme0n1
Do not use /dev/sdX literally.
That is not a disk.
That is a placeholder.
A very dangerous placeholder if misunderstood.
Prepare the USB Stick
On Linux, you can write the ISO to a USB stick with:
sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdX status=progress oflag=sync
Again: replace /dev/sdX with your USB device.
Not a partition like /dev/sdX1.
The whole device.
Check first:
lsblk
This command is powerful.
Powerful like a chainsaw.
Useful, but not something you wave around while distracted.
Set the Keyboard Layout
After booting into the Arch ISO, you can list available keymaps:
localectl list-keymaps
For a US keyboard:
loadkeys us
For another layout, replace us with the correct keymap.
The keyboard layout matters because typing passwords with the wrong layout is a beautiful way to create future suffering.
Connect to the Internet
If you use Ethernet, internet may already work.
Test it:
ping archlinux.org
If you use Wi-Fi, open iwctl:
iwctl
List devices:
device list
Scan for networks:
station wlan0 scan
Show available networks:
station wlan0 get-networks
Connect:
station wlan0 connect your-wifi-name
Exit:
exit
Test again:
ping archlinux.org
If ping works, good.
The internet is alive.
Your installation has a fighting chance.
Installation with UEFI and GPT
Use this path for most modern laptops and desktops.
UEFI is the normal choice today.
If your machine is from the last decade, there is a good chance this is the path you want.
Step 1: Partition the Disk for UEFI
Start partitioning:
fdisk /dev/sdX
Inside fdisk, create a new GPT partition table:
g
Create the EFI partition:
n
Choose the default partition number, default first sector, and set size:
+512M
Change its type to EFI System:
t
1
Create the root partition:
n
Accept defaults to use the rest of the disk.
Write changes:
w
You now have something like:
/dev/sdX1 EFI
/dev/sdX2 root
For NVMe, it may look like:
/dev/nvme0n1p1
/dev/nvme0n1p2
Disk names change.
The danger remains.
Step 2: Format the Partitions
Format the EFI partition as FAT32:
mkfs.fat -F32 /dev/sdX1
Format the root partition as ext4:
mkfs.ext4 /dev/sdX2
This erases data on those partitions.
Not “moves it somewhere safe”.
Not “hides it politely”.
Erases it.
Linux is efficient like that.
Step 3: Mount the Partitions
Mount the root partition:
mount /dev/sdX2 /mnt
Create the boot directory:
mkdir -p /mnt/boot
Mount the EFI partition:
mount /dev/sdX1 /mnt/boot
Your future Arch system is now mounted under /mnt.
At this point, /mnt is basically the construction site.
Hard hat recommended.
Emotionally, at least.
Step 4: Install the Base System
Install the base packages:
pacstrap -K /mnt base base-devel linux linux-firmware nano man-db man-pages texinfo networkmanager sudo
This installs:
- the basic Arch system,
- Linux kernel,
- firmware,
- development tools,
- documentation,
- a text editor,
- NetworkManager,
- sudo.
You can install fewer packages.
But beginners usually enjoy having internet after reboot.
Strange, I know.
Step 5: Generate fstab
Generate the file system table:
genfstab -U /mnt >> /mnt/etc/fstab
Check it:
cat /mnt/etc/fstab
The fstab file tells your system what partitions to mount at boot.
If this file is wrong, your system may boot into confusion.
And confusion is not a desktop environment.
Step 6: Enter the New System
Now enter your new Arch installation:
arch-chroot /mnt
You are now inside your installed system.
Not fully booted into it yet.
But close enough to feel powerful.
Do not let it go to your head.
Step 7: Set the Time Zone
For Italy, use:
ln -sf /usr/share/zoneinfo/Europe/Rome /etc/localtime
hwclock --systohc
For another region, replace Europe/Rome.
You can list time zones with:
timedatectl list-timezones
Time matters.
Especially when logs say something failed “tomorrow”.
Step 8: Set Localization
Edit the locale file:
nano /etc/locale.gen
Uncomment:
en_US.UTF-8 UTF-8
Then generate locales:
locale-gen
Set the system language:
echo "LANG=en_US.UTF-8" > /etc/locale.conf
This gives your system a basic UTF-8 locale.
Because computers should understand normal text instead of acting like accents are ancient magic.
Step 9: Set Hostname
Choose a name for your computer:
echo "archpc" > /etc/hostname
Edit hosts:
nano /etc/hosts
Add:
127.0.0.1 localhost
::1 localhost
127.0.1.1 archpc.localdomain archpc
Replace archpc with your chosen hostname.
Your computer now has a name.
Treat it with respect.
Or at least do not name it test-final-final2.
Step 10: Set Root Password
Set the root password:
passwd
Choose something strong.
Not 123456.
Not password.
Not arch.
The system is giving you control.
Do not respond with comedy-level security.
Step 11: Install CPU Microcode
For Intel CPUs:
pacman -S intel-ucode
For AMD CPUs:
pacman -S amd-ucode
Install the one that matches your processor.
Not both for fun.
This helps your CPU receive important microcode updates during boot.
Tiny updates.
Big importance.
Like firmware vitamins.
Step 12: Install GRUB for UEFI
Install GRUB and EFI tools:
pacman -S grub efibootmgr
Install GRUB:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
Generate the GRUB configuration:
grub-mkconfig -o /boot/grub/grub.cfg
If there are no errors, good.
Your system now has a bootloader.
That means it has a way to wake up without the USB stick.
A small miracle.
Step 13: Create a User
Create a normal user:
useradd -m -G wheel,video,audio -s /bin/bash admin
Set the password:
passwd admin
You can replace admin with your own username.
Using root for everyday work is like driving a truck through your kitchen.
Technically possible.
Not recommended.
Step 14: Enable sudo
Open the sudo configuration:
EDITOR=nano visudo
Find and uncomment this line:
%wheel ALL=(ALL:ALL) ALL
Save and exit.
Now users in the wheel group can use sudo.
You have delegated power.
Use it wisely.
Or at least read commands before copying them.
Step 15: Enable NetworkManager
Enable NetworkManager:
systemctl enable NetworkManager.service
This is important.
If you forget it, you may reboot into a beautiful new Arch system with no internet.
That is not minimalism.
That is suffering.
Step 16: Optional GNOME Minimal Desktop
If you want a minimal GNOME desktop, install:
pacman -S gnome-shell gdm gnome-control-center gnome-disk-utility alacritty xorg-server network-manager-applet pavucontrol ttf-dejavu ttf-droid noto-fonts noto-fonts-emoji git wget rsync openssh ntfs-3g gst-libav gnome-keyring
Enable GDM:
systemctl enable gdm.service
This gives you a graphical login and a minimal GNOME setup.
Not the full GNOME kingdom.
More like GNOME with a small backpack.
Step 17: Exit and Reboot
Exit chroot:
exit
Unmount everything:
umount -R /mnt
Reboot:
reboot
Remove the USB stick when appropriate.
If everything went well, your system should boot into Arch Linux.
If it does not, welcome to the second part of Arch installation:
“Learning why it did not boot.”
A classic.
Installation with BIOS and MBR
Use this path for older computers that boot in Legacy BIOS mode.
This is simpler in some ways, but less modern.
Still useful.
Older machines deserve love too.
Sometimes also new thermal paste.
Step 1: Partition the Disk for BIOS
Start partitioning:
fdisk /dev/sdX
Create a new DOS partition table:
o
Create a new partition:
n
Accept defaults to use the full disk.
Make it bootable:
a
Write changes:
w
You now have:
/dev/sdX1
Again, replace disk names properly.
The computer will not forgive creative guessing.
Step 2: Format the Partition
Format the root partition:
mkfs.ext4 /dev/sdX1
This erases that partition.
Yes, again.
Arch gives many opportunities to prove you selected the correct disk.
Step 3: Mount the Partition
Mount it:
mount /dev/sdX1 /mnt
Now the root partition is ready.
No EFI partition needed in this BIOS/MBR path.
Old-school booting.
Vintage, but functional.
Step 4: Install the Base System
Install the base packages:
pacstrap -K /mnt base base-devel linux linux-firmware nano man-db man-pages texinfo networkmanager sudo
Same idea as before.
Base system, kernel, firmware, tools, network, and sudo.
Because rebooting without network is a rite of passage, but not one we need today.
Step 5: Generate fstab
genfstab -U /mnt >> /mnt/etc/fstab
Check it:
cat /mnt/etc/fstab
If it looks reasonable, continue.
If it looks empty, something is wrong.
An empty fstab is not minimalism.
It is a warning.
Step 6: Enter the New System
arch-chroot /mnt
Now configure the system from inside.
Same as UEFI.
Different bootloader installation later.
Same emotional tension.
Step 7: Time Zone
For Italy:
ln -sf /usr/share/zoneinfo/Europe/Rome /etc/localtime
hwclock --systohc
For another region, choose another time zone.
Your system should know where it lives.
Even if emotionally it still lives in the terminal.
Step 8: Localization
Edit:
nano /etc/locale.gen
Uncomment:
en_US.UTF-8 UTF-8
Generate locale:
locale-gen
Set language:
echo "LANG=en_US.UTF-8" > /etc/locale.conf
Clean and simple.
Like we wish all configuration files were.
Step 9: Hostname and Hosts
Set hostname:
echo "archpc" > /etc/hostname
Edit hosts:
nano /etc/hosts
Add:
127.0.0.1 localhost
::1 localhost
127.0.1.1 archpc.localdomain archpc
Replace archpc if you choose another name.
A good hostname is useful.
A funny hostname is tempting.
Choose wisely.
Step 10: Set Root Password
passwd
Use a real password.
Your future self will thank you.
Or at least not curse you.
Step 11: Install CPU Microcode
For Intel:
pacman -S intel-ucode
For AMD:
pacman -S amd-ucode
Choose the correct one.
This is not a buffet.
Step 12: Install GRUB for BIOS
Install GRUB:
pacman -S grub
Install it to the disk, not the partition:
grub-install --target=i386-pc /dev/sdX
Important:
Use the disk:
/dev/sdX
Not:
/dev/sdX1
Then generate the configuration:
grub-mkconfig -o /boot/grub/grub.cfg
This is one of those commands where one character can decide whether your system boots or stares into the void.
Read carefully.
Step 13: Create a User
useradd -m -G wheel,video,audio -s /bin/bash admin
passwd admin
Replace admin if you want your own username.
This user will be your normal daily account.
Root is not for casual living.
Root is for serious moments and mild fear.
Step 14: Enable sudo
EDITOR=nano visudo
Uncomment:
%wheel ALL=(ALL:ALL) ALL
Save and exit.
Now your normal user can use sudo.
Congratulations.
You have given yourself controlled danger.
Step 15: Enable NetworkManager
systemctl enable NetworkManager.service
This ensures networking starts after reboot.
Internet after installation is a beautiful thing.
Especially when something needs fixing.
Which, on Arch, is not impossible.
Step 16: Optional GNOME Minimal Desktop
Install a minimal GNOME setup:
pacman -S gnome-shell gdm gnome-control-center gnome-disk-utility alacritty xorg-server network-manager-applet pavucontrol ttf-dejavu ttf-droid noto-fonts noto-fonts-emoji git wget rsync openssh ntfs-3g gst-libav gnome-keyring
Enable GDM:
systemctl enable gdm.service
This gives you a graphical environment.
Because yes, even Arch users are allowed to have windows.
Emotionally and graphically.
Step 17: Exit and Reboot
Exit:
exit
Unmount:
umount -R /mnt
Reboot:
reboot
Remove the USB stick when needed.
If your system boots, congratulations.
You installed Arch Linux.
You are now legally allowed to say:
“I use Arch, by the way.”
Use this power responsibly.
Maybe not during dinner.
After the First Boot
Log in with your user.
If you installed GNOME and enabled GDM, you should see a graphical login screen.
If you boot into terminal, log in and start checking services:
systemctl status NetworkManager
Connect to Wi-Fi if needed:
nmtui
Update the system:
sudo pacman -Syu
Install anything else you need:
sudo pacman -S firefox
Or, if you prefer something more dramatic, continue building your perfect Arch setup one package at a time.
That is the Arch way.
Common Beginner Problems
No internet after reboot
Check NetworkManager:
systemctl status NetworkManager
If it is not enabled:
sudo systemctl enable --now NetworkManager
GRUB does not appear
Boot back into the USB, mount your partitions, chroot again, and reinstall GRUB.
This is annoying.
But very educational.
In the same way falling off a bicycle is educational.
Wrong disk selected
This is why we checked lsblk.
If you formatted the wrong disk, there is no funny paragraph here.
Only silence.
And backups.
Always have backups.
Final Thoughts
You have now walked through a basic Arch Linux installation.
You learned how to:
- check UEFI or BIOS mode,
- partition a disk,
- format partitions,
- mount the system,
- install the base packages,
- generate
fstab, - enter with
arch-chroot, - configure locale and time,
- install GRUB,
- create a user,
- enable sudo,
- enable NetworkManager,
- optionally install a minimal GNOME desktop.
That is a lot.
And yes, it may feel complicated the first time.
But that is the point.
Arch Linux teaches you what is happening under the hood.
It does not hide the system from you.
It hands you the keys and says:
“Try not to crash.”
And once you succeed, the reward is beautiful:
A clean Linux system that you built yourself.
Not by accident.
Not by clicking “Next” twelve times.
But step by step.
Command by command.
Welcome to Arch Linux.
Enjoy the control.
Respect the terminal.
And remember:
Always check the disk name before formatting.
