I have dell xps 15 9560 with 512 NVMe SSD. It had native Windows 10 in UEFI mode, however after some play with linux installation in LEgacy mode onto free partition (e.g EFI partition was preserved), BIOS UEFI does not see EFI boot options. Trying add boot option in BIOS leads to "FIlesystem not found" error. Booting linux livecd in UEFI mode lists all UEFI options normally via efibootmgr, however bios does not see them (e.g like it does not see NVMe SSD at all).
Any help on this issue?
Booting and installing a non-UEFI aware OS likely hosed the boot sector of the disc. You'll need Windows 10 recovery media to try and fix this - turn legacy mode OFF, secure boot back on and connect the recovery flash drive. Press F12 at powerup and boot the system from the Windows 10 recovery media and see if a repair install will restore the boot sector to functioning correctly.
could you please expand your explanation? Since as far as I understand on GPT partition Linux will just replace a protected MBR bootloader with code pointing into "bios_grub" partition somewhere. However what I don't get is - UEFI works from EFI partition, but it seems that Bios cannot detect EFI partition due to that change in MBR?
After some digging, I've loaded EFI shell - so I can see that EFI does not detect any FS on my NVMe drive at all (even EFI partition exists in gdisk with FAT32 on it). NVMe drive appears as BLK0 storage device without any FS on it..
Any thoughts why can it be?
Your system is finding the UEFI loader just fine - but the Linux install destroyed the Windows boot sector -- that's the problem.
UEFI and Legacy Mode are either-or -- either your install the OS in UEFI mode (with a GPT disc structure) OR you install in Legacy mode with MBR. You can't have both.
If you booted the Linux install in legacy mode, it wrote (probably over) the Windows boot sector.
You CAN dual boot Secure Boot /UEFI Windows alongside Linux, but to do it you must install Linux in UEFI mode - NOT in Legacy mode.
Sorry to bother you more, but a few question:
"Your system is finding the UEFI loader just fine - but the Linux install destroyed the Windows boot sector -- that's the problem."
Thing is that UEFI does not see loader at all (e.g its not detecting EFI partition at all). By Windows boot sector you mean a part of "bootloadr" in protective MBR? Or EFI files under \EFI\Microsoft ? If the latest, then as I said they are untouched
Yes Linux had rewritten the MBR bootloader with a GRUB part for the LEgacy to work, howsoever I can't fully understand why this affects UEFI at all?
The Windows boot file (boot record) points to a specific location on the disc where the boot strap is found.
You CANNOT make changes to that other than from a UEFI-aware OS -- if you do, windows will then fail to load. Even changing the boot setting from UEFI to Legacy (without doing anything to the disc itself) will render Windows unbootable.
Grub replaces the windows boot loader with its own file - but you have a choice to make:
Either you load Grub in MBR mode and reinstall Windows in that mode, OR you load Grub in a UEFI-aware version of Linux. You cannot have one OS running legacy mode and the other in UEFI mode.
The actual UEFI boot loader is not on the drive - it's in EEPROM. Yes, some settings are stored in the \efi directory on the hard drive, but the bootup starts with EEPROM - not from the hard drive.
See here for instructions on rebuilding the Windows boot record
Thanks for the link, I've tried it. However problem is not in BCD (which is just a binary file on ESP partition), thing is that UEFI firmware does not see ESP partition (FAT32 500 Mb, EF00) in any way. Loading from EFI shell shows my NVMe SSD as a BLK1 device without any FS mapped to it - which leads to UEFI basically can not see any EFI bootloaders at all on ESP partition. From the EFI shell point of view it looks like there would be no ESP at all or GPT is damaged, however both are in perfect condition an can be seen from both windows and linux environment.
I cannot list EFI's neither from EFI shell nor from BIOS (boot order) by clicking "add boot option" -e.g. this one bring error "Filesystem not found", which means that UEFI cannot access NVMe ESP partition due to some reason.
It might be Linux one something, or it might be BIOS upgrade which was done in pretty same time - so the primary question is Why UEFI firmware cannot read NVMe SSD GPT ESP partition?
There were some explanations that due to some reason MBT bootloader should be reset and filled with zeros (first 460 bytes), I've tried that - did not help. So I still am not able to make EFI firmware to see ESP partition on the NVMe.
To compare to, if I plug-in USB with FAT32 partition, UEFI can see it and I can add option with whatever bootloader code stored on USB key (this how I start up EFI shell), so the problem is only with internal NVMe
There is a difference in the way internal discs are treated (vs. external USB ones) as far as Windows and UEFI are concerned.
It would help to know exactly what you're trying to do. Are you trying to wipe the drive and go back to Windows, or are you trying to keep Linux working?
To go back to Windows it's likely going to require a complete reinstall from recovery media at this point.
If you really want both Windows AND Linux on the same system, be sure you use a completely UEFI-compliant version of LInux.
Answer is simple I'm trying to get UEFI working. I've tried wiping out disk, recreating partitions and installing windows in UEFI mode from scratch it all ends during boot where UEFI does not see any filesystems to boot from (e.g UEFI as I said does not detect ESP partition). It does not matter either it is Windows or Linux - it just would not see the EFI FS. SO currently I can install only in Legacy mode and not UEFI