DEV Community

Cover image for How to Dual Boot Arch Linux With Windows
Debiprasad Das
Debiprasad Das

Posted on • Edited on

7

How to Dual Boot Arch Linux With Windows

First Step:

Create an empty unallocated Empty partition in windows then boot into archiso via a USB drive after flashing it via balenaEtcher,

after entering in TTY change the font if you want a bigger font.

setfont ter-132n
Enter fullscreen mode Exit fullscreen mode

Setup WIFI connection on TTY:

check your internet connection using

ping archlinux.org
Enter fullscreen mode Exit fullscreen mode

if you don't have internet connection then connnect it using iwctl

  • First get your WIFI interface name
iwctl
# Get WIFI interface name:
device list
# Scan WIFI networks:
station <interface_name> scan
station <interface_name> get-networks
# Finally, to connect to a network:
station <interface_name> connect <SSID>
Enter fullscreen mode Exit fullscreen mode

to learn more about iwctl

Partition Disk:

cfdisk
Enter fullscreen mode Exit fullscreen mode

NOTE : If it's does not show correct partition
then select your drive. you can get drive list by typing lsblk

# example
cfdisk /dev/nvme0n1
Enter fullscreen mode Exit fullscreen mode
  • Then select gpt, after entering in GUI.
  • Select "Free space" and select "New" then press Enter.
  • and then Enter the storage space you want to give it to your root and press Enter.
  • and you will see a partition is being created and make sure this partition type is "Linux filesystem".

  • Next select the remaining "Free space" and press Enter, we will give this space to swap partition.

  • Do same as before and then select the swap partition and select "Type" press enter to see all the types available.

  • Select "Linux swap" from them.

  • We don't need to create boot partition as we already has boot efi partition running windows,

  • we just need to mount linux boot partition along side of windows, will do it later.

  • Then select "Write" and confirm it.

  • You will see "parition table has been altered" blue color text.

  • Then select "Quit"

  • type lsblk to see your partitions name.

Format Created Partitions:

  • Format root partition:
mkfs.ext4 /dev/<root_partition>

# for example my root partition name is dev/sda1
# I will do "mkfs.ext4 /dev/sda1"
Enter fullscreen mode Exit fullscreen mode
  • Format swap partition:
mkswap /dev/<swap_partition>

# for example my swap partition name is dev/sda2
# I will do "mkfs.swap /dev/sda2"
Enter fullscreen mode Exit fullscreen mode

Mount Partitions:

  • Mount root partition:
mount /dev/<root_partition> /mnt

# for example my root partition name is dev/sda1
# I will do mount "mount /dev/sda1 /mnt"
Enter fullscreen mode Exit fullscreen mode
  • Mount swap partition:
swapon /dev/<swap_partition>

# for example my swap partition name is dev/sda2
# I will do mount "swapon /dev/sda2"
Enter fullscreen mode Exit fullscreen mode

Now type lsblk and see that both partition has given proper MOUNTPOINTS

Setup Fastest Mirrors:

cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
Enter fullscreen mode Exit fullscreen mode
  • Verify that mirrorlist.bak file is created by
ls /etc/pacman.d/
Enter fullscreen mode Exit fullscreen mode
  • Setup fastest mirrors from your contry
reflector --verbose --country '<YourCountry>' -l 5 --sort rate --save /etc/pacman.d/mirrorlist
Enter fullscreen mode Exit fullscreen mode

Install essential packages:

pacstrap /mnt base linux linux-firmware sof-firmware base-devel grub efibootmgr neovim vim networkmanager dhcpcd
Enter fullscreen mode Exit fullscreen mode

Fstab:

  • Generate Fstab file and copy it to "etc" folder of arch linux system
genfstab -U /mnt >> /mnt/etc/fstab
Enter fullscreen mode Exit fullscreen mode
  • check if it's correctly copied by typing
cat /mnt/etc/fstab
Enter fullscreen mode Exit fullscreen mode

Chroot:

  • Let's Chroot into linux system
arch-chroot /mnt
Enter fullscreen mode Exit fullscreen mode
  • Check your parititions again by typing lsblk.

Root password:

  • Enter your root password by typing
passwd
Enter fullscreen mode Exit fullscreen mode

Standard User:

  • Create Standard User
useradd -m <username>
Enter fullscreen mode Exit fullscreen mode
  • Create user password
passwd <username>
Enter fullscreen mode Exit fullscreen mode
  • Setup user privilages
usermod -aG wheel,storage,power <username>
Enter fullscreen mode Exit fullscreen mode
  • Edit Sudoers file
EDITOR=nvim visudo
Enter fullscreen mode Exit fullscreen mode

then remove "#" in this line(Uncomment this line in programming words)

# %wheel ALL=(ALL) ALL
Enter fullscreen mode Exit fullscreen mode

Localization:

nvim /etc/locale.gen
Enter fullscreen mode Exit fullscreen mode

then remove "#" in this line(Uncomment this line in programming words)

# en_US.UTF-8 UTF-8
Enter fullscreen mode Exit fullscreen mode
  • Generate locale
locale-gen
Enter fullscreen mode Exit fullscreen mode
  • Create locale config file
echo LANG=en_US.UTF-8 > /etc/locale.conf
Enter fullscreen mode Exit fullscreen mode
  • Export system language
export LANG=en_US.UTF-8
Enter fullscreen mode Exit fullscreen mode

Hostname:

  • Create hostname
echo <hostname> > /etc/hostname
Enter fullscreen mode Exit fullscreen mode
  • Update Hosts file
nvim /etc/hosts
Enter fullscreen mode Exit fullscreen mode

put this in the file

127.0.0.1    localhost
::1          localhost
127.0.0.1    <hostname>.localdomain    localhost
Enter fullscreen mode Exit fullscreen mode

Time:

  • Setup time
ln -sf /usr/share/zoneinfo/<Region>/<City> /etc/localtime
# You can use <tab> key to provide you region and city suggestions
Enter fullscreen mode Exit fullscreen mode

then type this to sync current time

hwclock --systohc
Enter fullscreen mode Exit fullscreen mode

Grub/Bootloader:

  • First Deletermine your EFI partition using lsblk, mostly it will be first one in your primary drive
mkdir /boot/efi
Enter fullscreen mode Exit fullscreen mode
  • Mount EFI partition to your grub boot partition
mount /dev/<efi_partition> /boot/efi/
Enter fullscreen mode Exit fullscreen mode
  • Install os-prober
pacman -S os-prober
Enter fullscreen mode Exit fullscreen mode
  • Do this so grub can detect windows
nvim /etc/default/grub
Enter fullscreen mode Exit fullscreen mode

then remove "#" in this line(Uncomment this line in programming words)

#GRUB_DISABLE_OS_PROBER=false
Enter fullscreen mode Exit fullscreen mode
  • Finally install grub
grub-install --target=x86_64-efi --bootloader-id=grub-uefi --recheck
Enter fullscreen mode Exit fullscreen mode
  • Generate grub config
grub-mkconfig -o /boot/grub/grub.cfg
Enter fullscreen mode Exit fullscreen mode
  • NOTE: It should detect Windows Boot Manager

  • If it's does not shows "Found Windows Boot Manager" follow this

Network Services:

  • Obtain IP addresss of wifi network
systemctl enable dhcpcd.service
Enter fullscreen mode Exit fullscreen mode
  • This is strictly necessary for autostart wifi on boot and connect to wifi
systemctl enable NetworkManager.service
Enter fullscreen mode Exit fullscreen mode

Wrapping up:

  • Exit from Chroot.
exit
Enter fullscreen mode Exit fullscreen mode
  • Then do this to unmount all of the partitions.
umount -lR /mnt
Enter fullscreen mode Exit fullscreen mode

NOW REBOOT AND REMOVE THE USB DRIVE WHEN SCREEN TURNS BLACK.

Reinvent your career. Join DEV.

It takes one minute and is worth it for your career.

Get started

Top comments (0)

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay