How to Dual Boot Windows 10 and Arch Linux Safely (2025 Updated Guide)
Dual-booting Arch beside Windows 10 is safe the way surgery is safe: not because nothing can go wrong, but because you made three careful decisions before the cutting. The commands are the easy part. The decisions — how much space, whose EFI partition, and whether Windows is allowed to hibernate — are where data goes to die. Take them in order.
Decision one: shrink Windows from inside Windows
Never carve space away from a live NTFS filesystem using Linux tools. Press Win + X, open Disk Management, right-click C:, choose Shrink Volume, and leave yourself at least 40 GB. The freed space shows as unallocated — format nothing. Then, in an admin PowerShell:
powercfg /h off
That kills Fast Startup, which otherwise leaves NTFS in a half-hibernated state Linux refuses to mount. Skipping this step is the classic first mistake.
Decision two: share the Windows ESP, deliberately
Your machine already has an EFI System Partition — Windows made one, usually around 100 MB. You have two options: reuse it (mount it at /boot, never format it) or create a fresh 512 MB one alongside for growing kernel collections. Reusing is the tidy choice for a two-OS machine; make the bigger ESP only if a third system is in your future. Either way: GPT, UEFI mode, Secure Boot disabled in firmware for now.
The install itself
Boot the October ISO, get online, and partition the unallocated space with cfdisk (your partition numbers will differ from mine):
mkfs.fat -F32 /dev/nvme0n1p5
mkfs.btrfs -f /dev/nvme0n1p6
mount /dev/nvme0n1p6 /mnt
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
umount /mnt
mount -o subvol=@,compress=zstd:1 /dev/nvme0n1p6 /mnt
mkdir -p /mnt/home /mnt/boot
mount -o subvol=@home,compress=zstd:1 /dev/nvme0n1p6 /mnt/home
mount /dev/nvme0n1p1 /mnt/boot # the existing Windows ESP
pacstrap /mnt base linux linux-firmware btrfs-progs networkmanager
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
Inside the chroot, set your timezone (Asia/Karachi if you are where I am), generate locale, set a hostname, and set the root password.
GRUB, pointed at both systems
pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch
grub-mkconfig -o /boot/grub/grub.cfg
Before that last command, put GRUB_DISABLE_OS_PROBER=false in /etc/default/grub — modern GRUB ships with os-prober off, and without it your menu lists exactly one OS. Enable NetworkManager, exit, unmount, reboot into a menu offering both.
House rules afterwards
Touch Windows' partitions from Linux read-only or not at all. Keep Fast Startup dead forever. Snapshot your Arch side with snapper so the rollback exists before the day you need it.
Two operating systems can share one disk when each respects the other's boundaries — the arithmetic works because the partitions are honoured. Peoples sharing one land deserve the same honest maths, and I keep Palestine's people in my dua until it balances.
We build split itineraries for a living — half your leave on a Dubai shopping run, half in a Swat valley, one file, one desk. HTG Travels plans both halves so neither side of the family feels shortchanged.




