You are not logged in.

#1 2026-01-04 18:33:19

Chill Fran
Member
Registered: 2026-01-04
Posts: 2

Dual boot arch linux+windows...from arch linux

Hello,

Maybe this question is a bit heretical, but I think it is a necessary step I have to take.

I have Arch Linux installed, and I have had some problems playing video games, so I decided to set up a dual boot with Windows. However, the tutorials I have found are only about installing Linux from Windows, not the other way around—installing Windows from a Linux distro.

So here is my question: can someone guide me on how to install Windows from Arch? I want to avoid formatting everything and configuring Arch Linux again, since I like my current Hyprland setup

Offline

#2 2026-01-04 20:01:20

Scimmia
Fellow
Registered: 2012-09-01
Posts: 13,584

Re: Dual boot arch linux+windows...from arch linux

You don't install Windows from Arch, you boot the Windows ISO and install from there. If you create space for Windows ahead of time, you should be able to tell it to just use that and the most you should have to do is redo the bootloader.

Offline

#3 2026-01-04 21:02:38

jlara19
Member
Registered: 2026-01-04
Posts: 1

Re: Dual boot arch linux+windows...from arch linux

Partitioning: Open KDE Partition Manager (install it first if you don't have it). Select your main drive, right-click your partition, and choose 'Resize'. Shrink it to create space for Windows, then format that new unallocated space as NTFS.

    Installation: Boot from your Windows USB and install it directly into that NTFS partition you just created.

    Fixing the Bootloader: After installation, Windows might take over the boot priority. Once you boot back into Arch, you need to make GRUB see Windows. Open your terminal and run:

        Install tools: sudo pacman -S os-prober ntfs-3g

        Enable detection: "Edit /etc/default/grub" add GRUB_DISABLE_OS_PROBER=false to the end of the file.

        Update GRUB: sudo grub-mkconfig -o /boot/grub/grub.cfg

This should successfully add the Windows option to your bootloader menu. you can use "Ventoy" for install your windows iso to usb

Last edited by jlara19 (2026-01-04 21:07:01)

Offline

#4 2026-01-04 21:43:19

Scimmia
Fellow
Registered: 2012-09-01
Posts: 13,584

Re: Dual boot arch linux+windows...from arch linux

Yeah, don't do any of that. Do NOT try to resize your partition while you're booted from it, do not create a partition in the unallocated space (implied in those instructions), and do not format it. Just point windows to the freespace.

As for the bootloader, we have no idea what you're using, and even if it is grub, if you want to use that to load Windows or if you want to do that from the firmware's boot manager.

Offline

#5 2026-01-05 00:07:15

mytArch
Member
Registered: 2024-11-16
Posts: 70

Re: Dual boot arch linux+windows...from arch linux

hm doesn't Chill Fran / OP need to install windows first, or, preferably, remove the arch drive, install windows to a separate drive, then reattach the arch drive and fix the bootloader?
Won't installing windows after arch result in the latter being unusable?

Offline

#6 2026-01-05 00:14:44

Scimmia
Fellow
Registered: 2012-09-01
Posts: 13,584

Re: Dual boot arch linux+windows...from arch linux

Not really. At most, it would screw up the ESP, at best, it may just change the boot order.

Offline

#7 2026-01-05 01:37:22

cryptearth
Member
Registered: 2024-02-03
Posts: 1,980

Re: Dual boot arch linux+windows...from arch linux

there actually is an option to avoid messing up any linux bootloader: just don't use the stupid windows installer but go the manual way
to keep this "windows support" short: google for "Chris Titus: Install Windows - the Arch way"
side note: the order does not matter at all - as scimmia pointed out: at the very worst windows fiddles with the uefi boot order in a way that makes the linux entry "vanish" - that's likely if we'Re talking about a laptop here as laptop uefi implementations very often designed for and tested with windows only - this is less a problem on regular desktop hardware - although there'Re exceptions to both - but even IF then it's only the boot entry that got messed up - it should not touch any other bootloader at all except its installed into the fallback/removeable path EFI/BOOT/BOOTx64.efi which windows loves to overwrite with itself

Offline

#8 2026-01-05 02:59:26

mytArch
Member
Registered: 2024-11-16
Posts: 70

Re: Dual boot arch linux+windows...from arch linux

Okay, as long as Chill Fran / OP understands that some additional work after installing windows will probably be needed to get back the arch boot option.
I would think that looking carefully at all the uefi boot options on first boot after the windows install could be important - I have been suspicious in the past that upgrading / installing windows changes some defaults in a way that is potentially unhelpful (esp. CSM support, secure boot).

Offline

#9 2026-01-06 23:45:22

Skeleton2323
Member
Registered: 2024-09-14
Posts: 60

Re: Dual boot arch linux+windows...from arch linux

If I were you I would:
Take a backup of anything important
Boot off a live USB of a distro with GParted
Now depending on how you configured your installation:

  If its got 2 partitions, the EFI and the Root partition, I'd shrink the root partition. (Keep in mind, shrink, not move). If you've got a separate partition for home, I'd shrink either.
Either way, it should be obvious which is which in GParted. If not, mount each one and verify for yourself.

After making some space on the drive, I'd boot the windows installer, install windows in the unclaimed space and let it do it's job. I'd then turn off fast startup (important to prevent file system weirdness and corruption).

Now since the Linux bootloader and uefi entry are most likely overwritten, I'd boot the arch live iso, chroot to the Linux installation (and mount the existing efi partition) and reinstall the bootloader (I'm only familiar with GRUB) while making sure it also detects the windows boot manager. Voila, dual boot

Offline

#10 2026-01-07 19:36:04

Chill Fran
Member
Registered: 2026-01-04
Posts: 2

Re: Dual boot arch linux+windows...from arch linux

I think I managed to install the Windows partition; now all the struggle is with the bootloader. I’m having trouble with rEFInd and GRUB.

With rEFInd, everything worked, but the aesthetics were horrible, so I went back to GRUB.

Now the bootloader only detects Arch Linux and ignores Windows (I can only access Windows via UEFI).

I’ve tried os-prober, editing /etc/default/grub, adding a manual entry in /etc/grub.d/40_custom, and restoring bootmgfw.efi after accidentally deleting it.

here is the output of sudo grub-mkconfig:

### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
  load_env
fi

if [ "${env_block}" ] ; then
  set env_block="(${root})${env_block}"
  export env_block
  load_env -f "${env_block}"
fi

if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   if [ "${env_block}" ] ; then
     save_env -f "${env_block}" next_entry
   else
     save_env next_entry
   fi
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    if [ "${env_block}" ] ; then
      save_env -f "${env_block}" saved_entry
    else
      save_env saved_entry
    fi

  fi
}

function load_video {
  if [ x$grub_platform = xefi ]; then
    insmod efi_gop
    insmod efi_uga
  elif [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root d4199250-5486-40ba-969f-7894cfdc8b64
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=10
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
Found linux image: /boot/vmlinuz-linux-lts
Found initrd image: /boot/intel-ucode.img /boot/initramfs-linux-lts.img
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d4199250-5486-40ba-969f-7894cfdc8b64' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod fat
	search --no-floppy --fs-uuid --set=root 2A7B-EF13
	echo	'Loading Linux linux-lts ...'
	linux	/vmlinuz-linux-lts root=UUID=d4199250-5486-40ba-969f-7894cfdc8b64 rw  loglevel=3 quiet
	echo	'Loading initial ramdisk ...'
	initrd	/intel-ucode.img /initramfs-linux-lts.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-d4199250-5486-40ba-969f-7894cfdc8b64' {
	menuentry 'Arch Linux, with Linux linux-lts' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-advanced-d4199250-5486-40ba-969f-7894cfdc8b64' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_gpt
		insmod fat
		search --no-floppy --fs-uuid --set=root 2A7B-EF13
		echo	'Loading Linux linux-lts ...'
		linux	/vmlinuz-linux-lts root=UUID=d4199250-5486-40ba-969f-7894cfdc8b64 rw  loglevel=3 quiet
		echo	'Loading initial ramdisk ...'
		initrd	/intel-ucode.img /initramfs-linux-lts.img
	}
Found fallback initrd image(s) in /boot:  intel-ucode.img initramfs-linux-lts-fallback.img
	menuentry 'Arch Linux, with Linux linux-lts (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-fallback-d4199250-5486-40ba-969f-7894cfdc8b64' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_gpt
		insmod fat
		search --no-floppy --fs-uuid --set=root 2A7B-EF13
		echo	'Loading Linux linux-lts ...'
		linux	/vmlinuz-linux-lts root=UUID=d4199250-5486-40ba-969f-7894cfdc8b64 rw  loglevel=3 quiet
		echo	'Loading initial ramdisk ...'
		initrd	/intel-ucode.img /initramfs-linux-lts-fallback.img
	}
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/intel-ucode.img /boot/initramfs-linux.img
	menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-d4199250-5486-40ba-969f-7894cfdc8b64' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_gpt
		insmod fat
		search --no-floppy --fs-uuid --set=root 2A7B-EF13
		echo	'Loading Linux linux ...'
		linux	/vmlinuz-linux root=UUID=d4199250-5486-40ba-969f-7894cfdc8b64 rw  loglevel=3 quiet
		echo	'Loading initial ramdisk ...'
		initrd	/intel-ucode.img /initramfs-linux.img
	}
Found fallback initrd image(s) in /boot:  intel-ucode.img initramfs-linux-fallback.img
	menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-d4199250-5486-40ba-969f-7894cfdc8b64' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_gpt
		insmod fat
		search --no-floppy --fs-uuid --set=root 2A7B-EF13
		echo	'Loading Linux linux ...'
		linux	/vmlinuz-linux root=UUID=d4199250-5486-40ba-969f-7894cfdc8b64 rw  loglevel=3 quiet
		echo	'Loading initial ramdisk ...'
		initrd	/intel-ucode.img /initramfs-linux-fallback.img
	}
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/15_ostree ###
### END /etc/grub.d/15_ostree ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/25_bli ###
if [ "$grub_platform" = "efi" ]; then
  insmod bli
fi
### END /etc/grub.d/25_bli ###

### BEGIN /etc/grub.d/30_os-prober ###
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Found Windows Boot Manager on /dev/nvme0n1p1@/efi/Microsoft/Boot/bootmgfw.efi
# This menu entry is supported only on EFI platforms.
if [ "$grub_platform" = "efi" ]; then
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-2A7B-EF13' {
	insmod part_gpt
	insmod fat
	search --no-floppy --fs-uuid --set=root 2A7B-EF13
	chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
fi
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
Adding boot menu entry for UEFI Firmware Settings ...
if [ "$grub_platform" = "efi" ]; then
	fwsetup --is-supported
	if [ "$?" = 0 ]; then
		menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
			fwsetup
		}
	fi
fi
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "Windows" {
    insmod part_gpt
    insmod fat
    insmod search_fs_uuid
    insmod chain
    search --fs-uuid --set=root 2A7B-EF13
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg
fi
### END /etc/grub.d/41_custom ###
done

Last edited by Chill Fran (2026-01-10 18:11:50)

Offline

#11 2026-01-08 10:47:09

Lone_Wolf
Administrator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 14,800

Re: Dual boot arch linux+windows...from arch linux

Please use code tags for program output , not quote tags.
see https://bbs.archlinux.org/help.php#bbcode


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.

clean chroot building not flexible enough ?
Try clean chroot manager by graysky

Offline

#12 2026-01-09 00:15:10

Skeleton2323
Member
Registered: 2024-09-14
Posts: 60

Re: Dual boot arch linux+windows...from arch linux

Did you mount the existing efi partition? If so, was it successful and did it throw any errors?
If you didn't , try again and make sure os prober is enabled

Offline

Board footer

Powered by FluxBB