Windows Not Showing in GRUB on Arch Linux? Fix Dual Boot Step-by-Step

Windows Not Showing in GRUB on Arch Linux? Fix Dual Boot Step-by-Step

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 for Windows Drives

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 Partitions

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 to Auto Mount

  • 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 Windows Partitions Mounted on Linux Filesystem

  • 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!




❓ Frequently Asked Questions: GRUB Dual Boot on Arch Linux

Why doesn't GRUB show Windows automatically after installing Arch Linux?

Unlike many other Linux distributions, Arch Linux disables os-prober by default for security and stability reasons. This means GRUB does not automatically scan for other operating systems like Windows. You need to manually install and enable os-prober, then reconfigure GRUB to detect and add Windows to the boot menu.

What is os-prober and why do I need it?

os-prober is a tool that scans all available disks and partitions on your system to detect other operating systems (like Windows, macOS, or other Linux installations). It then provides this information to GRUB so that boot entries for those OSes can be added to the GRUB menu. Without os-prober enabled, GRUB will only show Arch Linux.

How do I enable os-prober in GRUB on Arch Linux?

First, install os-prober: sudo pacman -S os-prober. Then edit /etc/default/grub with sudo nano /etc/default/grub, find the line #GRUB_DISABLE_OS_PROBER=false, and remove the # to uncomment it. Save the file (Ctrl+O, Enter) and exit (Ctrl+X). Finally, regenerate GRUB configuration with sudo grub-mkconfig -o /boot/grub/grub.cfg.

I enabled os-prober, but Windows still doesn't show up. What now?

This is common. The next step is to ensure your Windows partitions are readable. Install ntfs-3g for NTFS support: sudo pacman -S ntfs-3g. Then, temporarily mount your Windows OS partition (usually the large NTFS partition, not the EFI partition) using: sudo mount -t ntfs-3g /dev/sdX# /mnt/windows (replace sdX# with your actual partition, e.g., sda3). After mounting, run sudo grub-mkconfig -o /boot/grub/grub.cfg again. GRUB should now detect Windows.

How do I find which partition is my Windows installation?

Use the command lsblk -f to list all partitions with their filesystem types and sizes. Look for a large NTFS partition (usually 100GB+). The EFI System Partition (FAT32) is small (100-500MB) and contains the Windows bootloader, but the actual OS resides on the larger NTFS partition. Mount the NTFS partition for os-prober to detect Windows properly.

What is ntfs-3g and why is it necessary for dual boot?

ntfs-3g is a driver that allows Linux to read and write NTFS filesystems (the format Windows uses). Without it, Linux cannot properly access Windows partitions, and os-prober may fail to detect your Windows installation. Installing ntfs-3g ensures GRUB can read the necessary files from your Windows partition to create a boot entry.

Do I need to mount Windows every time I want GRUB to see it?

No, you only need to mount it once for the detection process. After GRUB successfully detects Windows and adds it to grub.cfg, the entry remains there permanently — even after reboots. The temporary mount is just to help os-prober read the partition during configuration. If you want permanent access to Windows files from within Arch Linux, you can set up auto-mounting in /etc/fstab (optional).

What's the difference between the Windows EFI partition and the Windows OS partition?

The EFI System Partition (ESP) is a small FAT32 partition (usually 100-500MB) that contains boot loaders for all installed operating systems. For Windows, it holds the bootmgfw.efi file. The Windows OS partition is the large NTFS partition (C: drive) where Windows and your programs/games are installed. For GRUB to detect Windows, it primarily needs to read the EFI partition, but mounting the OS partition can help in some detection scenarios.

How can I auto-mount my Windows drives in Arch Linux at boot?

To auto-mount Windows partitions permanently, you need to add entries to /etc/fstab. First, find the UUIDs of your Windows partitions with lsblk -f. Create mount points, e.g., sudo mkdir -p /mnt/windows_c. Then edit /etc/fstab (sudo nano /etc/fstab) and add lines like:

UUID=your-uuid-here /mnt/windows_c ntfs-3g rw,uid=1000,gid=1000,umask=022,nofail 0 0

Replace your-uuid-here with the actual UUID. Test with sudo mount -a and reboot to verify.

What do the fstab options like uid, gid, umask, and nofail mean?
  • uid=1000, gid=1000: Assigns ownership to the first regular user (usually you), so you can read/write files without sudo.
  • umask=022: Sets default permissions: owner has full access, others have read-only.
  • nofail: Prevents boot delays if the drive is not present (important for external drives or if Windows is on a separate disk that might not always be connected).
  • rw: Mount as read-write. Use ro for read-only if you want to prevent accidental changes to the Windows OS partition.
Is it safe to edit /etc/fstab? What if I make a mistake?

Editing /etc/fstab is safe if you're careful, but a mistake can cause boot issues. Always double-check UUIDs and paths. Use sudo mount -a after editing to test without rebooting. If your system fails to boot due to fstab errors, you can boot from a live USB, mount your root partition, and fix the file. Adding the nofail option reduces risk by preventing the system from hanging if a drive is missing.

Why do I see "error: file `/boot/grub/i386-pc/normal.mod' not found" after updating GRUB?

This usually happens if you're on a UEFI system but GRUB is installed in BIOS mode, or vice versa. Check your system's firmware mode. For UEFI systems, GRUB should be installed to the EFI partition. If you're on a UEFI system and getting this error, you may need to reinstall GRUB in UEFI mode with grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB (adjust paths as needed).

Windows shows in GRUB but fails to boot. What could be wrong?

Several possibilities:

  • Secure Boot may be enabled and blocking the bootloader. Try disabling Secure Boot in BIOS/UEFI.
  • Fast Startup in Windows can cause filesystem issues. Boot into Windows (if possible) and disable Fast Startup in Power Options.
  • GRUB entry might be pointing to the wrong partition. Check your /boot/grub/grub.cfg to ensure the Windows entry has the correct hdX,gptY numbers.
  • Windows Boot Manager might be corrupted. You can repair it from a Windows installation USB using bootrec /fixmbr, bootrec /fixboot, and bootrec /rebuildbcd.
Can I have Windows and Arch Linux on separate physical drives? Will GRUB still work?

Yes, absolutely. GRUB can detect and boot Windows even if it's on a completely separate drive. In fact, this often makes dual boot easier because there's less partition manipulation. Just ensure os-prober is enabled and run grub-mkconfig. GRUB will scan all drives and add Windows to the menu regardless of which drive it's on. You may need to adjust your BIOS boot order to boot from the drive containing GRUB (usually the Arch drive).

What are the most common mistakes when setting up dual boot with Arch and Windows?
  • Forgetting to enable os-prober in /etc/default/grub.
  • Not installing ntfs-3g, causing GRUB to miss Windows partitions.
  • Running grub-mkconfig without mounting the Windows partition when detection fails.
  • Editing /etc/fstab with incorrect UUIDs, leading to boot delays or failures.
  • Assuming GRUB will work the same way on Arch as it does on Ubuntu or other distros.
  • Not updating the system (sudo pacman -Syu) before making GRUB changes.


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