[Guide] NVMe-boot without modding your UEFI/BIOS (Clover-EFI bootloader method)

Thank you so much for this guide. I had tried a different version of clover previously and it did not work. I went from using Tianocore on a precision T5500 with an Intel 1.2TB 750 series drive that got 1400 read and 1000 write to a precision T5600 with the same drive using clover and getting 2500 read and 1500 write (difference between PCIe 2.0 and 3.0)

Edit: I also wanted to note I’m using clover under legacy boot because UEFI clover will not boot, I think it conflicts with the nearly-useless version of UEFI that’s on the mobo.

Hello guys,

as promised, here’s the tutorial - Booting Samsung SM961 on ASUS P6T SE

Please let us know if it worked for you, so Fernando can then officially create a thread on Win-Raid Forum that running bootable NVMe SSDs on X58 chipset is definitely possible, thanks! :slight_smile:

All the best in 2017.

-M.

Another brilliant effort! Just because it seems like the obvious question to the guru’s… pros/cons of Clover vs. DUET?

Update: I just got a Samsung 960 EVO 1GB. After all this research, the “darn” Dell Precision 5150 installed Win 10 Enterprise x64 to the new NVMe stick with no need for Clover or DUET. I installed the 2.0.0.1607 driver package and while it’s downloading the hundreds of MS patches, AS SSD Benchmark went from ~2,300 (Clover and PM951 512mb) to 4,100+. Yeah, I’d say it was a good purchase.

Afaik, DUET was the first thing the folks at TianoCore did. If I am not mistaken (correct me if I am wrong), Clover team based its Clover bootloader on DUET.

So, I’d definitely recommend using Clover if you plan doing hackintosh stuff, because Clover seems totally optimized for it (there are some many tweaks incorporated in it due to hackintosh).

I’d definitely recommend using DUET for Windows, because it’s the “original and purest implementation” of the stable UEFI standard, and it seems to works incredibly well on X58 platform, even in 2017 :slight_smile:

For other users - you may also want to dig in the thread here to see additional details on how to get NVMe PCI-e SSD running on X58/legacy platforms. Please report back how you proceed, thanks!

@mireque

Thanks for your DUET/Tianocore tutorial. I’ve read all of your posts related to NVMe boot in this forum. Really great findings, glad that you succeeded with all tweaks and compiling :slight_smile: Maybe even make a small tutorial on how to compile the newest version including the needed drivers yourself? This might eliminate the last sceptical guesses, and give some opportunity to make own versions, as there might be some “incompatibilities” with different chipsets and mainboard versions, as DUET/Tianocore is a more “raw” approach.

This is why I fully agree with you. If you just have a windows PC, rather use the “cleaner” method with DUET/Tianocore. I didn’t do alot research to that yet, but I’m not sure if the hackintosh optimizations actually are applied if you boot Windows via Clover. If I’ll find some time, I’ll research and maybe modify this thread, to direct users on when to use which method. Even better, maybe @Fernando should just add both guides into his main guide about making BIOSes/UEFIs NVMe bootable, just as alternative methods, because some people might oversee that there are other possibilities, when not being successfull or scared with modding their BIOS/UEFI.

Greetings

@Nyctophilia

Thanks. I think we will have to wait for some other success reports from others before going anywhere forwards. Currently I’m testing the DUET from UDK2015, so far seems stable.

I definitely encourage “legacy” users to try every method described on this forum to get their NVMe SSD booting (either yours method via Clover or the one I have written about).

One cannot lose anything and 2017 is surely going to be the M.2 NVMe SSD year I guess :slight_smile:

Done!
Thanks for for proposal!

Hi

I try to install windows with this metod but did not working for me. Maybe i done something wrong i do not know. It boot normally to Clover-EFI bootloader, but then did not start Windows installation. It just freeze.

Then i try guide from @mireque and it worked. I have only one problem with Automating boot process. I create startup.nsh file, but program did not load this file. so i must to manually load UEFI drivers, what is a waste of time.

I create new text file and inside that file put:
load fs0:\EFI\Drivers\NvmExpressDxe-64.efi
map -r
fs0:\EFI\Boot\Bootx64.efi

Then save as startup.nsh an place it to EFI\Boot folder.
But it is not working.
If i manually insert same commands it working!!!

Sorry for bad english.

Best regard

Hi @Mrus ,

thanks for your report. First, I can see a mistake/typo in your startup.nsh script:

fs0:\EFI\Boot\Bootx64.efi -> should be fs1:\EFI\Boot\Bootx64.efi (fs1 is the partition where the Windows 10 UEFI bootloader is located, not fs0).

I can imagine if you’d be using using fs0 here then you’d be essentially “boot-looping” the UEFI Shell from the DUET USB stick and the real Windows 10 bootloader will never get executed.

If this is not the case (you have a typo here), does startup.nsh ever execute? Can you please post some screenshots what the UEFI Shell is saying when trying to execute the startup.nsh script?

Hi @mireque

No this command is correct. At boot my usb is fs0. This is ok. But when i load driver the USB go to fs1 and my nvme SSD get fs0(see picture below)

Here are some picture:
At boot:(here should be loading startup.nsh file, but nothing hepens)
http://i.imgur.com/WFjN3fj.jpg?1

When i load driver:
http://i.imgur.com/YbY3Per.jpg

Then if i try this command (fs1:\EFI\Boot\Bootx64.efi) it boot again from usb.
http://i.imgur.com/uiiTdGY.jpg


This is how i get my startup.nsh file:
http://i.imgur.com/oKtyvKg.png

Did you have any more suggestion what could be wrong.

@Mrus

I get it. It’s up to the BIOS/chipset how it gets mapped, so fs0 for NVMe is probably okay and fs1 for USB seems fine too after remapping.

Can you please try following:

- When it boots to UEFI Shell, it will wait for cca 3-5 seconds before attempting to execute startup.nsh.
- When you’re waiting, try pressing Esc to get to the shell prompt directly.
- What happens when you type in the prompt - fs0:\EFI\Boot\startup.nsh - does this startup.nsh script ever get executed or not?

Thanks.

@mireque

Script is not working. When i try it manualy i get error:
fs0:\efi\boot\startup.nsh is not recognized as an internal or external command, operable program, or script file.

It look like there is some problem with script file.

@Mrus

What kind of encoding does the startup.nsh file have? From the image you posted it looks like you are using Windows’ notepad and afaik there is a option to set encoding upon saving.
Maybe this could be the issue?

Hi @mireque

Finally managed to start working. All you have to do is to create startup.nsh file under shell.
Just go:
Shell> fs0:
edit startup.nsh

Then insert all commands, save and exit.

After restart it worked.

Have another question. Can i skip 5second waiting time, and load startup.nsh script immediately.

@Mrus

Glad you’ve got it working. So now the startup.nsh resides in root folder of the DUET USB drive? If that’s the case, it’s interesting, because I’ve edited/created the startup.nsh via Notepad and saved into fs0:\EFI\Boot folder …

I’ve looked into UEFI Shell sources and actually the 5 sec waiting time is hardcoded here, so to change it one would need to recompile it from sources.

Finally, would you mind sharing a little bit info about your setup you got this working on - chipset, cpu, nvme ssd?

Hi @mireque

Yes startup.nsh file is now in root folder. It funny because all commands are same as before.

Here is my rig:
Motherboard: Gigabyte P67A-UD7
Cpu: Intel i7 2600K (overclock to 4.5GHz)
Vga: Nvidia 1080GTX (overclock of course )
SSD: Samsung 960 EVO 512GB
Soud card: Asus Xonar D2X

Everything (almost)is water cooled
Here is picture:
http://i.imgur.com/n6dUAiT.jpg

Seem that your guide is compatible with many chipsets.

Hi all!
Does this work with USB 3.0 flash memory stick inserted in USB 3.0 port?

6.
Boot into the Clover-EFI bootloader.

6a.
Pick your Windowsinstallation media via EFI-Boot.


How exactly do I do that?

I configured the USB-Stick as described, after booting the system comes up with a GUI, see attached photo. I went through all submenues, yet couldn’t find anything that resembled picking an installation-device.

This might be a newer version of Clover.

DSCN6407.JPG

@mireque ,

up front, thanks for your elaborate work, the (for me - male, 74) first useful documentation. I spent almost one week trying to resolve this task. My system - ASUS Q87T, 2 years old, latest BIOS. I recently bought a Samsung 960 EVO 500 GB plus adapter and stuck it into the PCIe 3.0 4-Slot. Works fine as drive D:, reads >1.700 MB/s, writes (starting) >1.200 MB/s after driver-update from Samsung.

The bad news are - it won’t run as start-drive. Not for money and not for heaven’s sake. Tried a billion combinations. I suspect this board just can’t do that. Once the NVM…-driver loads it say success and that’s it, the system hangs, keyboard locked, the only escape is farmer-reset (see picture).

I spent so much time with this darn thing - if I wasn’t an old age pensioner and still got paid, I could have afforded a new system - and that’s exactly what I did today - I ordered an ASUS Q170T with an onboard M.2-connector that (hopefully) boots from there, otherwise the dealer gets his stuff back. A new CPU and RAM was also necessary, though.

This whole (U)EFI-business is just too kinky for me and reminds me at the 70ties when I studied in Aachen and ran Fortran on DEC PDP 9.

I will report further.

DSCN6410.JPG