You are not logged in.
Hi!
It's day no. 2 setting up Archlinux and I found out I don't see Windows in my GRUB2.
Figured it might be because I installed the BIOS version (?) and Windows uses UEFI bootloader,
so I went on to install grub to EFI system partition. The problem was, I didn't install archlinux with UEFI (my mistake, I thought it would work)
and now I don't have /sys/firmware/efi/efivars. So no problem I booted up the USB installer again now with UEFI chrooted and installed grub2 on the EFI system partition.
No errors, but after reboot, it still loaded old GRUB. It even gives me multiple boot choices in boot screen (F12 before grub):
ubuntu (some left over), arch, windows (doesn't work, boots grub anyway), and disks (SSD and HDD) (boots grub anyway I think)..
Any tips, workarounds, etc. how to make windows bootable appreciated (doesn't have to be with uefi)..
Thanks!
EDIT 1:
I cleaned up the MBR GRUBs on both disks and ubuntu EFI bootloader (at first I thought I might be able to save boot.cfg, but realised it was actually on ubuntu root partition which is now formated )...
I found out that there is a bug in os-prober and it doesn't recognise /dev/sdb2 correctly as EFI system partition.
Script in /usr/lib/os-probes/mounted/05efi uses
udevadm info -q property -n "$partition"
to extract ID_PART_ENTRY_TYPE and SCHEME but udevadm info doesn't return these values. Not sure how to fix it..
But I was able to boot Windows from EFI shell! But it would be nice to have it in grub..
Last edited by nulld (2014-08-02 12:31:00)
Offline
Hello nulld, welcome to Arch
What commands are you using to install GRUB?
What is your partition & disk structure? You say the ESP is on sdb2?
Do you have Windows on sda & Arch on sdb?
Presuming you are sharing the Windows-generated EFI system partition with Arch (and also mounting /boot to this partition), it is probably simplest to try using gummiboot (I find the setup much easier).
Jin, Jîyan, Azadî
Offline
Thanks,
I fixed os-prober! I replaced the code with
partName="${partition##*/}"
diskName="${partName%%[0-9]*}"
# eval "$(udevinfo -q property -n "$partition" | grep -E '^ID_PART_ENTRY_(TYPE|SCHEME)=')"
eval "$(udevadm test "/block/$diskName/$partName" 2>&1 | grep -E '^ID_PART_ENTRY_(TYPE|SCHEME)=')"
And now the vars get properly set, and os-prober recognises Windows 8. But grub-mkconfig fails anyway see:
I used
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck --debug
and it correctly created /boot/efi/EFI/grub directory etc. /boot/efi is /dev/sdb2 the EFI system partition. Yes it's shared with windows.
Then
# grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initramfs image: /boot/initramfs-linux-fallback.img
No volume groups found
Found /dev/sdb2@/EFI/Running in /boot/efi/EFI on /dev/sdb2@/EFI/Running^in^/boot/efi/EFI
/dev/sdb2@/EFI/Running in /boot/efi/EFI is not yet supported by grub-mkconfig.
/usr/bin/grub-probe: error: cannot find a GRUB drive for WINDOWS^8^FOUND. Check your device.map.
And that fails now..
I will try some other bootloader, but have no time today left, so tomorrow. Thanks anyway!
Offline