I followed online tutorials to install Windows 10 alongside Linux (Arch) on separate HDDs. This involved physically disconnecting each HDD while installing the OS on the other.
The only thread I have found which doesn't have the answer "use boot-repair" is this one except I have already installed Linux.
Below are my steps.
- Disable fast boot and enable UEFI in BIOS
- Create UEFI compatible live images of W10 and ArchLabs
- Disconnect HDD0, install W10 Home onto HDD1
- Disconnect HDD1, install ArchLabs onto HDD0 - grub is boot manager
- Connect HDD1, boot into HDD0 using BIOS - only ArchLabs is listed as a boot option
- Run
grub-mkconfig -o /boot/grub/grub.cfg
(update-grub) - Windows is found
Which outputs
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
Found Windows Boot Manager on /dev/sdb2@/efi/Microsoft/Boot/bootmgfw.efi
Found memtest86+ image: /boot/memtest86+/memtest.bin
done
When I boot HDD0 in BIOS I see the Windows option in grub, but when I choose it I get this error
error: no such device: FA77-02BF.
error: disk `hd1,gpt2' not found.
Press any key to continue...
Some information
$sudo blkid
/dev/sda1: UUID="EFA1-BD6C" TYPE="vfat" PARTUUID="f1abfa2e-8f5e-4569-88a7-ebd5ebd1a737"
/dev/sda2: UUID="a43046c3-84ec-4308-9eaf-a872f1c4300d" TYPE="ext4" PARTUUID="c1a4e499-919d-4194-890f-459418430422"
/dev/sdb1: LABEL="Recovery" UUID="58CC724CCC722482" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="78b687ea-65f2-4c5a-9e2e-211c28298378"
/dev/sdb2: UUID="FA77-02BF" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="149fbe08-56e3-4dd7-9dde-b60e668a2253"
/dev/sdb4: UUID="50F28160F2814AE4" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="1e767b54-5723-4d51-889a-48108c2547fe"
/dev/sdb3: PARTLABEL="Microsoft reserved partition" PARTUUID="be54b5e0-7701-473a-aa31-bbc8919d62ae"
fstab hasn't mounted sdb
but im not sure it needs to?
$cat /etc/fstab
# /dev/sda2
UUID=a43046c3-84ec-4308-9eaf-a872f1c4300d / ext4 rw,relatime,data=ordered 0 1
# /dev/sda1
UUID=EFA1-BD6C /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2
/swapfile none swap defaults,pri=-2 0 0
The problem I think lies in the fact that each HDD has its own EFI partition.
$fdisk -l
Disk /dev/sda: 298.1 GiB, 320072933376 bytes, 625142448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 558CB70E-9540-49A2-87E9-728B9C3CDB16
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1052672 625141759 624089088 297.6G Linux filesystem
Disk /dev/sdb: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 0676ACB7-16B9-4BBC-8030-D26B229EEF78
Device Start End Sectors Size Type
/dev/sdb1 2048 1023999 1021952 499M Windows recovery environment
/dev/sdb2 1024000 1228799 204800 100M EFI System
/dev/sdb3 1228800 1261567 32768 16M Microsoft reserved
/dev/sdb4 1261568 976773119 975511552 465.2G Microsoft basic data
At the moment I can use the BIOS to select the HDD I want to boot which in turn uses that HDDs bootmanager to launch its respective OS. But of course it would be nice to have BIOS boot to the same drive each time so I can select the OS through GRUB.