Windows Not Showing in GRUB on Arch Linux? Fix Dual Boot Properly

Windows Not Showing in GRUB on Arch Linux? Fix Dual Boot Properly

Windows Not Showing in GRUB on Arch Linux? Fix Dual Boot Properly

If you installed Arch Linux alongside Windows and expected a clean dual boot menu, chances are you ran into a frustrating surprise. You boot your system, GRUB shows up, but Windows is missing. No option to boot into Windows, no clear error, and no explanation of what went wrong.

This is a very common issue on Arch Linux. Unlike many other distributions, Arch does not automatically detect Windows during GRUB setup. Features like os-prober are disabled by default, and if your Windows partition is not readable or mounted correctly, GRUB simply ignores it. Running grub-mkconfig alone is often not enough.

Welcome back to MusaBase!
In this guide, I will show you the proper and reliable way to fix GRUB dual boot on Arch Linux, step by step. No random commands, no risky workarounds, and no guessing. This guide focuses on making GRUB correctly detect your existing Windows installation and keeping it stable after updates.

Here is exactly what we are going to do in this guide:

  • Install and enable os-prober on Arch Linux
  • Regenerate grub.cfg correctly for dual boot
  • Fix cases where Windows is still not detected after running grub-mkconfig
  • Install ntfs-3g to ensure the Windows partition is readable
  • Manually mount the Windows partition and re-detect it in GRUB
  • Confirm that GRUB successfully finds and adds the Windows boot entry

This article is focused on real-world dual boot problems that Arch Linux users actually face. By the end of this guide, your GRUB menu will correctly show Windows, and your dual boot setup will work the way it should. If you are stuck at a missing Windows entry, let’s fix it properly.







Prerequisites

Before attempting to fix GRUB dual boot issues, ensure you have a basic setup ready. You should have Arch Linux installed and booting, alongside an existing Windows installation. You will also need sudo privileges to run system-level commands, as we will be editing GRUB configuration files and mounting partitions.




Fix Missing Windows Entry in GRUB on Arch Linux

Sometimes, even after installing Arch Linux alongside Windows, GRUB fails to show your Windows installation. This section will walk you through the exact steps to detect and add Windows to GRUB, making your dual boot setup fully functional. We will cover installing required package, configuring GRUB, and verifying that Windows appears in the boot menu, no guesswork, no broken entries.

  • First things first, run:
sudo pacman -Syu

Install OS-Prober & Nano

To allow GRUB to detect other operating systems like Windows, we need to install os-prober. This tool scans all available disks and partitions to find existing OS installations that GRUB can add to its boot menu. We will also install nano, a simple text editor, which we will use to safely edit GRUB’s configuration file in the next step.

  • Run:
sudo pacman -S os-prober nano

Configure /etc/default/grub for OS-Prober

By default, GRUB does not automatically scan and add other operating systems for security reasons. To allow GRUB to detect an existing Windows installation, we need to explicitly enable os-prober by updating the /etc/default/grub configuration file. This ensures that Windows boot entries are properly detected during GRUB configuration.

  • Open the terminal and run:
sudo nano /etc/default/grub
  • In the opened file, navigate down using your (Down ) arrow key and locate the following commented line (usually near the bottom of the file):
#GRUB_DISABLE_OS_PROBER=false
  • Remove the # from the beginning of the line to uncomment it.
  • Next, press Ctrl + O to save the file, then press Enter to confirm. To exit the editor, press Ctrl + X.

Update GRUB

  • Run:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Showing after running grub-mkconfig command Windows entry is still missing
  • If the output generated by GRUB on your terminal does not include a line similar to this:
Found Windows Boot Manager on /dev/sdX@/efi/Microsoft/Boot/bootmgfw.efi
  • That’s fine, we are going to fix this in the next step.

Install ntfs-3g

To ensure GRUB can properly read and detect the Windows installation, we need support for NTFS file systems. Windows partitions are formatted as NTFS, and without the required drivers, GRUB may fail to recognize them during detection. Installing ntfs-3g allows Linux to access Windows partitions reliably, which is essential for successful dual boot detection.

  • Open termninal and run:
sudo pacman -S ntfs-3g

Detect Windows Boot Partition

If GRUB still fails to detect Windows automatically, the next step is to manually locate and mount the Windows boot partition. This allows os-prober to correctly scan the disk and identify the Windows Boot Manager. We will first list all available partitions, identify the one where Windows is installed, and then mount it temporarily using ntfs-3g.

  • Run:
lsblk -f
  • Below, you can see all connected storage devices along with their filesystem information:
  • Here, on my system, the hard drive where Windows is installed is sda.
  • This hard drive has four partitions, but only two are relevant for dual boot:
    • sda1: Windows Boot (EFI) Partition
    • sda3: Windows OS (NTFS) Partition

Temporarily Mount Windows Partition

Even though the Windows boot partition is a small EFI System Partition (FAT32), the actual Windows operating system resides on a separate NTFS partition. When we run os-prober and sudo grub-mkconfig -o /boot/grub/grub.cfg, GRUB may fail to detect Windows if it cannot read the NTFS OS partition. Installing ntfs-3g ensures Linux can access NTFS partitions properly, allowing os-prober to reliably detect Windows and add it to GRUB.

  • First, create a directory inside /mnt to temporarily mount the Windows OS partition.
  • You can name the mount point anything you want. In my case, the Windows OS partition is sda3, so I am using the same name:
sudo mkdir -p /mnt/sda3
  • Next, temporarily mount the Windows OS partition (it will automatically unmount after reboot):
sudo mount -t ntfs-3g /dev/sda3 /mnt/sda3

Update GRUB Again

  • Now, re-run grub-mkconfig:
sudo grub-mkconfig -o /boot/grub/grub.cfg

Windows Boot partition detected and added successfully!




Auto-Mount Windows Drive at Boot on Arch Linux

This step is optional. If you want to access your Windows drives (such as D:, E:, or F:) directly from Arch Linux, you can add them to /etc/fstab. This ensures the drives are automatically mounted at boot every time you start Arch Linux. Personally, I keep my Windows drives auto-mounted because I frequently need access to my data stored on those partitions while working in Arch Linux.

Detect Windows Partitions

  • Run:
lsblk -f
  • From the lsblk -f output, copy the UUID for each Windows partition.
  • Please view the image below for clarification:
Copying the UUID from lsblk -f output to add an entry for each Windows partition in /etc/fstab for auto-mounting on Arch Linux

Create Mountpoints for Windows Partitions

  • I have three Windows partitions that I want to add to /etc/fstab, which are:
    • sda3: My C: drive on Windows, which is the Windows OS partition.
    • sdb2: My D: drive on Windows, which I mostly use for installing games.
    • sdc1: My F: drive on Windows, which I use for coding applications and other stuff.
  • I will create each mountpoint with a name similar to each Windows drive; you can choose any name you want.
  • Run:
sudo mkdir -p /mnt/sda3 \
sudo mkdir -p /mnt/sdb2 \
sudo mkdir -p /mnt/sdc1

Edit /etc/fstab

  • Next, we need to edit the fstab file to add an entry for each Windows drive with its corresponding UUID and mountpoint that we just created.
  • Run:
sudo nano /etc/fstab
Opening /etc/fstab to add entries for Windows drives to auto-mount at boot on Arch Linux
  • In /etc/fstab, add the following entries:

# Windows Drive Sda3

UUID=CAA4EFF6A4EFE2C5  /mnt/sda3  ntfs-3g  ro,uid=1000,gid=1000,umask=022,nofail  0  0

# Windows Drive Sdb2

UUID=01DB59E2DC8F6E70  /mnt/sdb2  ntfs-3g  rw,uid=1000,gid=1000,umask=022,nofail  0  0

# Windows Drive Sdc1

UUID=AEC0EFDDC0EFAA33  /mnt/sdc1  ntfs-3g  rw,uid=1000,gid=1000,umask=022,nofail  0  0
Adding Windows partition entries in /etc/fstab for auto-mounting

Verify

  • To verify that Windows partitions are mounted correctly at their defined mountpoints, run:
sudo mount -a
  • Or simply reboot your PC, and Windows drives should be mounted automatically at boot.
Verifying with sudo mount -a to test if Windows drives are mounted to their respective mountpoints correctly

It's done!



Explore More

With your Windows drives now accessible directly in Arch Linux, your system has become not just a workstation but a multi-OS productivity hub. From gaming libraries to coding projects and media files, you can seamlessly work across Windows and Linux without switching devices or USBs. Auto-mounting these partitions brings both convenience and speed to your daily workflow.


Expand Your Arch Experience

🧩 Turn Arch into a Daily Driver: If you want a fully polished system ready for everyday use, check out my guide on making Arch Linux a reliable daily driver.

πŸ“₯ Managing Large Files Efficiently: Whether it’s downloading software, games, or large datasets from the web, keeping things organized is key. Learn how to handle heavy downloads smoothly using JDownloader 2 as an IDM alternative on Arch.

Boost Package Downloads: Slow pacman updates can waste time. Optimize your mirrors and speed up system updates by following my guide on fixing slow Pacman downloads on Arch Linux.


That’s it for auto-mounting Windows drives on Arch Linux. Your workflow is now faster, more integrated, and ready for any project that spans both operating systems. If you run into mounting issues or need help with permissions, drop a comment below and we’ll troubleshoot it together.

101 out, see you in the next guide.

Load comments