<insert "BTW I use arch" meme here>
Installation
The (Still) Manual Bits
In the past Arch Linux was somewhat notorious for its installation experience. It was relatively manual and entirely text based when compared with other Linux distros. I’m happy to report than in 2025, even if you want to dual boot with Windows, is easy. There are however still some manual steps.
First, if you’re dual booting I would recommend installing Windows first. This will just make this whole process less error prone.
Creating Free Disk Space
To get started, you’ll need some free space on your drive for the Arch install. In Windows, open Disk Management and shrink an existing partition. I chose to reserve 1TB out of my 4TB NVMe SSD for Arch.
Next we’ll use rufus to create a bootable install from the Arch ISO + USB stick.
Once Rufus is finished we can do the reboot -> BIOS/Boot menu keyboard dance to boot into the Arch ISO.
Creating Partitions
Before we use the new (to me, since the last time I did a fresh install was ~2018) archinstall
helper util is to create actual partitions out of the free space we set aside.
Use fdisk or parted to find where the free space is:
fdisk -l
Or with parted:
sudo parted /dev/nvme0n1 unit MiB print free
You’ll see output like this:
Number Start End Size File system Name Flags
...
5 2789802MiB 2790826MiB 1024MiB fat32 boot, esp
6 2790826MiB 3814802MiB 1023976MiB ext4
We need two partitions: one for EFI (formatted as fat32) and one for the root filesystem (typically ext4). The EFI partition should be around 512MB–1GB.
You can create the partitions using:
parted /dev/sda --script mkpart primary fat32 <start>MiB <start>+512MiB
parted /dev/sda --script mkpart primary ext4 <start>+512MiB <end>
Replace and with the actual values you got from the previous step.
archinstall helper
The archinstall
tool now provides a relatively friendly text-based UI for customizing your install: encryption, desktop environment, packages, and more.
My machine is already connected to the network via ethernet. We’ll run pacman -Syy
and pacman -S archinstall
to make sure we have the latest version of archinstall
.
Mount Partitions
You’ll want to mount your partitions manually before running archinstall. This helps the installer recognize your intended root and boot partitions:
mount /dev/nvme0n1p6 /mnt
mkdir -p /mnt/boot
mount /dev/nvme0n1p5 /mnt/boot
archinstall
Options
This is a brief walkthrough of the options presented to you in archinstall
as of June 2025, and what you might want to change in the installer.
- Change your locale and keyboard layout as necessarry. The default for me was already correct other than setting
en-CA
, because it’s colour not color. - Choose a few package mirror regions.
- I went with a combo of regions closest to me, one or two EU countries, and one distant region.
- In the disk section just ensure you select the “pre-mounted configuration” option, which looks for these /mnt and /mnt/boot mounts.
- You can skip encryption if this is a desktop machine that will never leave your house but set it up on laptops, please.
- For the bootloader most people will recommend you select
grub
if you’re dual booting. I chose to usesystemd-bootctl
since it’s a more minimal install and I was going to be installingrEFInd
anways. - As the greeter (login screen) I chose
ly
but if you want a GUI login screengdm
andlightdm
are nice. - Set
use swap
to true unless you’re on an older machine with very limited hardware specs. - Choose whatever hostname and root/user password you want, and make sure you give your user sudo rights. Next are the fun parts:
- For profile we’re going to select desktop.
- Here you can select from various pre-packaged desktop environments, from full DEs like KDE to something more minimal such as a tiling WM. Since I’m coming from my previous install running i3 but I want to run wayland I chose sway.
- I have an AMD gpu so I chose AMD open source for GPU drivers.
- Choose pipewire for audio, it plays nicer with newer audio hardware and requires less manual intervention IME. For example, if you have something like a Focusrite audio interface and want to split each physical input into separate logical inputs within the OS, I had nothing but issues with pulse.
- For the kernel leave the default unless you have a reason not to.
linux-lts
is probably a better choice if this is a server install.
- For network you can select either copy ISO config or install network manager.
- You can search for and select additional packages to install right here from within
archinstall
.- I’ve already got a package list and install automation in my dotfiles repo but it’s probably a good idea to install things you know you will need such as
git
,vim
,basic system utils
or drivers, etc.
- I’ve already got a package list and install automation in my dotfiles repo but it’s probably a good idea to install things you know you will need such as
- Finally you’re going to want to enable the multilib repo and potentially testing as well, and then enable the automatic time sync.
If you’re worried about any of your options here, for example if you want to leave archinstall
and double check your partitions, use the Save configuration
option to write your current config to files that can be pulled in next time:
archinstall --config myconfig.json
Hit install and confirm the installation.
Booting into Arch
After the install completes your machine will reboot. Pull out the USB at this point, and spam whatever key is required to get into your boot menu/BIOS.
In your BIOS’ boot menu, move the UEFI bootloader to the highest priority of your boot list. You can even disable the other bootloaders so remove any annoying issues such as not being presented with the option of booting into Arch vs Windows at boot time.
Save & exit out of the BIOS, we should now get out Linux bootloader which likely doesn’t show your Windows install as an option yet.
Login and go about installing the rest of your required packages, but make sure you install refind and run refind-install
. This should just work. Reboot again into your BIOS and move the rEFInd bootloader to the front of the boot order priority.
And we’re done!