Beginners Guide to Dual-Booting Arch Linux and Windows 11

NOTICE: THIS GUIDE IS WORK IN PROGRESS

An absolute beginners guide to installing Arch Linux alongside Windows 11 with pictures.

In this guide we will go over two different methods for setting up a Windows and Arch Linux dual-boot environment. The first method is for an already existing Windows 11 install. And in the second method we install Arch Linux first then Windows 11. The latter may be easier for you unless you already have Windows installed, and you don’t want to erase it. If you want to use the second method; install Arch Linux first; skip to Method 2 now.

Method 1: Windows Already Installed

First things first, we’ll need to allocate some free space for the Arch Linux install.

1. Make Space for Arch Linux

Start by opening Disk Management in Windows:

001


Then locate your (C:) partition. Right click it, then click “Shrink Volume…”:

002


Enter the amount of space to shrink in MB. You can also think of this is the amount of space you want to give Linux.

You can convert GBs to MBs using this calculator.
  100000 MB

After entering the amount click “Shrink”:

003


You should now hav unallocated space for Arch Linux to use.

unallocated space



2. Creating a USB Flash Installation Medium

If you’re not sure or if you haven’t flashed the Arch Linux ISO to a usb flash drive yet I recommend using USBWriter since it’s simple to use and requires no special workarounds.

Download the Arch Linux ISO from https://archlinux.org/download/ or use this direct download link: archlinux-x86_64.iso

Then open USBWriter and write the Arch Linux ISO to your USB flash drive. NOTE: Before you click “Write” make sure you have the correct Target device.

USBWriter


3. Boot from the USB Flash Drive

In windows if you Shift + Click the Restart button it will allow you to select a device to boot from after restarting.

Shift + Restart


Then after restarting you should get the following screen:

Choose an option


Click Use a device then click on your USB Flash drive to boot from it. In my case it’s the UEFI Sandisk Ultra:

Choose a device


When booting from the flash drive you should get the following screen to appear. Note that you need to make sure you are booting in UEFI mode for this guide to work.

Arch Linux ISO Boot Screen


4. Adding Linux Partitions

Because we have Windows on the same drive as we want to install Arch Linux we have to manually partition it to prevent the Arch Linux installer from deleting Windows.

The first think you need to do is identify the path of your storage device (aka hard drive or ssd).

Run the fdisk -l command to see you storage drives:

fdisk -l command example

Instead of /dev/sda as the device path you might have something like /dev/nvme0n1. Whatever it is make note of or if you forget you can always run the fdisk -l command again

In the above example I identified /dev/sda3 as my main Windows partition aka Local Disk (C:). We basically want to make sure we leave that partition alone. The EFI System partition that is on the same drive we’ll use later for booting Linux as well. Currently, it’s being used to boot Windows.

We’ll start by adding two partitions to our device/disk using fdisk.

Run fdisk /dev/xx replacing /dev/xx with the path to your device that you noted earlier, for example /dev/sda or /dev/nvme0n1. Do not use the partition path. In my screenshot above /dev/sda1 to /dev/sda4 are partitions. Make sure you use the device path instead.

In my case it’s /dev/sda without the numbers, but it could be something like /dev/nvme0n1.

When running fdisk /dev/xx you’ll get a prompt like this:

Command (m for help):

Just type n and press enter to create a new partition. The first partition we are creating is a linux extended boot partition. It is used as part of the boot process and is where are linux kernel will reside. We need to create it because our Windows boot partition is too small for both Windows and Linux.

You’ll then get a prompt to enter a partition number. Leaving it blank will use the default value which should be fine. So just press Enter.

For First sector just press Enter again to use the default. This is the starting point of your new partition.

For last sector type +1G. This will create a partition of 1GB.

Now type t to change the partition type of the partition we just created. It will ask for a partition number. Most likely the default is the one you just created but verify and if it is press enter again.

When you see the following prompt:

Partition type or alias (type L to list all):

type xbootldr and press enter.

Your progress should look something like the following:

fdisk create extended boot partition

If you made any mistakes you can cancel everything and close fdisk by pressing Ctrl + C then start over by running fdisk /dev/xx again.

Now we’ll add another partition. This will be our main/root partition for Linux. The big one. Type n and press enter to create another partition.

For Partition number use the default and just press enter again.

For First sector use the default and press enter again.

For Last sector use the default again.

It should then say it created a new partition and the size should be close to the amount of unallocated space you created in Windows Disk Management earlier.

You can run the p command in fdisk to see the partition table and if it looks good type w and press enter to write the partition table and exit fdisk.

Your entire progress including the first partition you created should look something like this. Of course if you ran the p command in fdisk there will be additional output. fdisk create root partition


You can verify you have the right partitions by running fdisk -l once again: 008 The important partitions are the Windows boot partition and the two Linux partitions we created.

We’re going to format the two partitions we created and mount all three (EFI System, Linux extended boot, and Linux filesystem)

Start by formatting your Linux extended boot as FAT32 by running the following command

mkfs.vfat -F 32 /dev/xxx

Replace /dev/xxx with the path to your Linux extended boot partition. In my case /dev/sda5.

Then format the root partition as btrfs:

mkfs.btrfs /dev/xxx

Replace /dev/xxx in the above command with the path to your Linux filesystem partition. In my case /dev/sda6.

Your progress with formatting the above two should look something like this:

formatting partitions

After formatting our two partitions we are going to mount them. You can think of mounting the partitions like giving them a drive letter in windows. It essentially gives you access to read and write from the drive.

We’ll mount our root partition at /mnt. See the below image for how to mount it. Of course replacing /dev/sda6 with your root partition path: mounting partitions

We’re now going to create a boot directory in /mnt by running the following command:

mkdir /mnt/boot

Then mount our Linux extended boot partition in it:

mount /dev/xxx /mnt/boot

Replace /dev/xxx with your Linux extended boot partition.

Now create the efi directory in /mnt.

mkdir /mnt/efi

And mount your EFI System partition aka Windows boot partition in it:

mount /dev/xxx /mnt/efi

All together the mounting process should look something like this: mount boot and efi partitions

Finally verify your mounts by running lsblk. It should look something like this: verify mounts

5. Installing Arch Using archinstall

Now that the most complicated part of this guide is over let’s install Arch Linux.

Start by running the archinstall command: archinstall

You can navigate the menu using arrow keys, Enter, and Esc.

First thing select disk configuration. partition management

Then partitioning

After that select pre-mounted configuration

Then type /mnt in the input box

Next exit out of partitioning:

Verify you see Configuration type: Pre-mounted configuration
Mountpoint: /mnt
when Disk configuration is highlighted

Method 2: Installing Arch Linux First