[Guide] NVMe-boot for systems with legacy BIOS and UEFI board (DUET-REFIND)

@SkOrPn

The only way to get rid of the boot menu in Clover is to manually enter the timeout in Clover’s default.plist file in the EFI partition. Also if you have other installations your going to have to find the drive UUID for your preferred boot drive and set that up in Clover’s Defaults. Thats how I have it setup in my Nvme Bootable P8Z68 Hackintosh. Clover is installed to the ‘SYSTEM’ partition and can load either Windows (set to do so automatically without a menu) or choose to boot my Sierra partition on the end of my Intel NVME drive. Pressing escape usually takes you to the Clover boot menu but you got to be fast.

Actually this was the machine I used to figure out how to incorporate NVME efi driver into my bios few years back. I started off using Clover with the NVME efi driver on the usb disk. One day I got bored and gambled and put it into my firmware to see what could happen. Anyhow getting off track as on my X58 build I didn’t want to hackintosh it and didn’t want Clover messing with the ACPI tables or anything to make them more Mac friendly as could cause, though extremely remote odds, problems with Windows booting.

In any case If I was you I would buy a Sandisk thumb usb drive:
http://www.bestbuy.com/site/sandisk-ultr…p?skuId=9090010.



When inserted into the back of the computer usb port its almost flat against the case and its wicked fast. Thats what I use for loading Tianocore’s Duet. Personally I thing all the old fashioned ORom verbose Trademark messages that come up while initially booting the system slows it down more than anything else!

So for the older non-uefi systems I would stick with Duet and use Startup.Nsh. Just make sure its working as it should before you use the shell.efi I uploaded that turns off the delay and the verbose messages because you wont know whats going on until Windows loads.

Hope you have fun in anycase.

BTW: Stick with Clover if you plan to hackintosh. As an Avid hackintosher its a lot of fun!

Thanks David for the suggestions.

I think I will list my needs so that it is clear what I am hoping for.

1. Must be able to boot Windows 10 (both duet and clover = check) or a modern Linux distro.
2. Must be able to boot Live Linux distros from USB 3.0 flash drives (DUET = NOT WORKING. Have not tested Clover yet)
3. Don’t need invisible menus, just a fast theme-able one that works. (UEFI 2.6+?)

Like any piece of software, as newer versions release so do such features as USB 3.0 booting. Right now DUET refuses to boot from my USB 3.0 setup (USB 3.1 card + USB 3.0 flash drives), which is a major desire of mine. I went through 5 USB cards before settling on this super fast USB 3.1 x4 card. I test new Linux builds almost daily and USB 2.0 just sucks to say the least. My USB card is the latest 2017 USB 3.1 PCIe x4 card and uses the latest asmedia chipset, so I am sure DUET will never have the ability to boot from that without having newer versions of UEFI. However, newer Clover versions certainly will as standards become even more standardized. Unless we can compile newer versions of UEFI into DUET I do not see DUET ever booting from my USB 3.1 card, which is the ONLY USB 3.0+ that I have (in my PC at the moment) and the second major reason I am doing this conversion to UEFI. I love my x58 Xeon machine and just not ready to say goodbye to it yet.

Quick question, if Clover boots Windows just as fast as DUET, then why would DUET be considered better for my x58 system? I mean the Clover team is working on OS booting in general, not exclusively OSX, right? Can Clover possibly cause my computer to explode, maybe? (As lightning strikes my property lmao)

BRB, really bad storm over head and I need to shut down the PC asap. LOL

EDIT:
Back, lightning was hitting my property as I was typing the above so I had to go for a bit. Seems to have let up though.

So anyway, I have “shellx64_v1.efi” and “shellx64_v2.efi” inside the “tools” folder. I also see you have “shell0” and “shell01”. Does the later mean a 1 second menu timeout? Do I just rename your shell mods into one of the ones I have and drop it in overwriting shellx64_v1.efi or v2? I would like a working UEFI menu that holds settings, and actually allows me to select different boot devices such as the old BIOS did. Is that possible with DUET? Thanks

Just mess around with the Shell-nodisplay and Shell_nodelay files. Honestly I don’t remember what the others do. About your Asmedia USB 3.1 booting problem it’s not going to work with Clover and Duet both as long as you don’t have a suitable efi driver for it. Going to have to google that one. I personally really wanted an efi driver for Intel raid but found nada. So your mileage may vary.

But my reasoning for avoiding Clover was that I didn’t want Mac OS stuff eating resident memory. It’s mostly meant for booting OSX. Plenty of people multiboot with Clover so you should have no problems with Windows. Your PC won’t explode. There’s also the Refind bootloader out there but not sure it can load nvme drivers. Probably it can but it’s like a bare metal loader and kind of has support. Used it in the past. Can have menus with that as well. Think Clover was based on Refind.

Good luck.

Good news is my USB 3.1 card DOES boot Linux live distros just fine. Just tested it with both Clover and DUET and it works. For some reason when I installed Windows 10 last week DUET would NOT run the Windows 10 installer, which led me to believe DUET does not work with my 3.1 card. It just sat there kinda in frozen state even though I had the Windows USB perfectly formatted. I had to use the USB 2.0 ports to install Windows last week. I guess I need to now test Clover to see if it can boot my “USB GPT UEFI Windows 10 installer” or not. Maybe neither will, or both will this week, lol.

I guess what I want out of this is to “select” from an automatically generated list of bootable devices i.e NVMe SSD, USB 3.0, USB 2.0 etc". Clover UI shows you a list of bootable devices but is clearly not edited to work how I want as like said before is tailored for OSX, which can be remedied through research and editing of configuration files. Which means I just need to do more research on how to set it up. But now at least I know “xhcidxe-64.efi” works for Linux distros just fine. I don’t know why but I swear Clover loaded the Fedora live faster than Duet, but I don’t see how that is possible if using the same efi module.

Thanks again, I will continue to work on this until its just right for my usage pattern. This is actually quite fun really. So rare for someone to be trying to convert an older system to use UEFI. My father has been a computer tech since well before we ever heard the word computer, and even he thought I was nuts trying to do this. He was in shock when I invited him over to witness me booting on NVMe. HAHAHA

@SkOrPn ,

What kind of usb 3.1 card did you buy? Maybe I’ll buy one too. Also why would you want to boot through the usb 3.1 interface in the first place? Be faster on a SSD or something wouldn’t it?

Interestingly enough someone advised me last week to use a usb 3.1 type 2 interface to test OSX software changes before putting it on a SSD. Guy works for either Google or Intel I think. He doesn’t mess around though as he already has like a 24 core cpu in his possession. Lucky guy…

@davidm71 :
Booting and testing live linux sessions is almost exclusively done on USB, at least that is what most people do. You know what a Live Linux Session is right? I got the GC-USB 3.1 (from Gigabyte) mainly because it has the chipset I wanted and wasn’t too expensive. I think this asmedia chipset is the one we see on so many newer Motherboards these days. They have had tons of firmware and driver updates so that is a bonus. Plus I wanted one Type-A and one Type-C port. My on board USB 3.0 ports never really worked properly (and never booted anything), and after about 182 BCLK it just dies. Since I like to always be overclocked I needed a good USB card that could handle an overclocked system and my crappy on board usb 3.0 just couldn’t do it.

Anyway, my local storage is now from NAS and USB 3.0 exclusively, so I don’t use SATA devices any more. I just boot Windows from my SM961, and Linux Live Sessions from USB 3.0 serviced from that USB 3.1 card. Simple normal setup really.

24 cores, sweet jesus… lol, I cant wait to get me some more Cores, but I think 8-16 would be enough for me for a very long time. I’m more interested in higher IPC and new components and technology etc, so I think something like Ryzen 7 would be plenty. Its been a long time since I had me an AMD rig but it could happen before the end of next year.

EDIT by Fernando: Unneeded fully quoted post removed and replaced by direct addressing (to save space)

Hi, (newby here on this forum)

Works (almost) like a charm with Samsung EVO 960 512GB on a Gigabyte GA-X58A-UD7 mobo!!! (For the term ‘almost’, pls look below!)
Intel SATA2 ports in legacy BIOS are set to RAID(XHD) whereas XHD (eXtreme Hard Drive) is set to ‘eXtreme’ to get the most out of the Intel end of the mobo and DUET boots with these setting w/o any problem.
(Besides I also run an old WD SSD with my orig Windows 10 partition plus a Plextor BD optical driver as well as two WD Caviars in RAID1 array on the Intel SATA2 ports as well as another two WD-s in another RAID1 array on the Gigabyte (JMicron) SATA2 ports. RAID1 drives are for data storage/backup.)

A new Windows10 partition is installed on the NVMe drive following the usual process. The whole system boots fine (via DUET on a USB 2.0 stick) and works as fast as one would expect.

As for the term ‘almost’ there is one problem I cannot get over to this date:

USB 3.0 had to be disabled in legacy BIOS to get DUET working, otherwise the boot process would halt at the red “Welcome to EFI world!” message. Loading the Xhci driver for USB 3.0 didn’t make any difference, so there remained two unavoidable consequences:
1. Windows install had to be done from an USB 2.0 port (no big deal, it lasted a little longer though…)
2. USB 3.0 port are not seen at all in the fresh Windows install and ports are rendered unusable.

I tried to load the Xhci driver from startup.nsh but that didn’t help either.

Am I doing something wrong? My startup.nsh looks the following:

load fs0:\efi\drivers\nvmexpressdxe-64.efi
load fs0:\EFI\Drivers\XhciDxe-64.efi
map -r
fs1:\efi\boot\bootx64.efi

Should I perhaps try loading the Xhci driver differently (like to fsX, where X is not 0)?

Is there a way at all to get my onboard USB 3.0 ports working properly (in Windows) or I should snap in a USB 3.1 extension card, perhaps? (I have no intention for booting from an USB 3.0 port, my next step is to create a boot partition on one of my RAID1 arrays. For now, I’m content with booting from the USB 2.0 stick.)

Many thanks for any help!

@Ghaben ,

Maybe you should try updating your USB 3.0 firmware or even disabling it and use a USB 3.0 add in card. I have no trouble on my X58 Duet system starting Duet with USB 3.0 PCI-E enabled card in place. Could be because of the chipset. However I have not tried booting Duet from that USB 3.0 port though not a deal killer in my case.

  1. Enable USB 3.0 ports within your BIOS.
    2. Boot DUET from a USB 2.0 port (its driver is already built into DUET natively) USB 3.0 should NOT cause DUET to freeze, there is no reason for that unless you were using a 3.0 port to boot DUET. Don’t do that on legacy BIOS systems.
    3. When Windows loads it will initialize the USB 3.0 chip using its own drivers.
    4. You can install your own drivers such as USB 3.0 directly from the chips manufacturer, and for the NVMe SSD.

    Unless you plan on using USB 3.0 ports for some reason during bootup, there is no reason to load the XhciDxe-64.efi drivers. UNLESS of course you frequently try Live Distros or need something else to occasionally boot from USB 3.0, such as something like Parted Magic, etc. Otherwise remove it from your Startup.nsh file as its not needed. The OS does the initialization for those things.

Major problem is that system won’t start at all if on-board USB 3.0 chip is enabled.

Boot process halts at console screen with $ characters in red colour and the “Hello to EFI World!” message (also in red) on centre of the screen (i.e. even BEFORE the Tianocore logo would show up), I cannot even get to the Shell EFI screen…

The only way to pass through this point is rebooting the computer and disabling the USB 3.0 chip from BIOS before booting DUET.

On-board USB chip is Renesas u720200 (rev. 3) and I have updated its firmware to the latest available version (v3.0.3.4). GA-X58A-UD7 mobo has the latest available stable BIOS (ver. FD) and I couldn’t even find newer betas to experiment with…

For testing purposes I can dual boot my computer into my old copy of Windows residing on a SATA SSD via regular boot process (USB chip enabled in BIOS) and the USB 3.0 ports are properly recognized by Windows and the ports work flawlessly that way. However, if I use DUET for booting into the new copy of Windows on the PCIe NVMe drive I run into the problem described in the foregoing.

If I disable the on-board USB 3.0 chip, DUET boots and Windows loads beautifully from the PCIe NVMe partition and the system works like a dream! However, in this case USB 3.0 ports (being disabled in BIOS) are not seen by Windows, therefore its drivers are not loaded either.

Altogether, it isn’t a real hardware issue (chip/ports work fine), it only looks that efildr20 doesn’t like my USB 3.0 chip for some reason…
Tried to compile DUET from the latest tianocore repositories on Git but my attempts were unsuccessful so far (probably I have wrong settings in the development environment - tried the newest Visual Studio 2017 and an older WINDDK, no luck so far.)

Ultimately buying an USB 3.0/3.1 card could be an option, though I use the on-board USB 3.0 only for (faster) transferring of photos from my SDLR camera to the computer, so buying a dedicated extension card just for this reason would be a waste. And, I would like to see working everything which is supposed to work, anyway. :slight_smile:

@Ghaben :
Welcome to the Win-RAID Forum and thanks for your contribution.
I hope, that you will get the appropriate support to be able to solve your problem.
Regards
Dieter (alias Fernando)



I decided to test it on my board for you because I have the exact same Renases u720200, but I usually keep it disabled because my USB 3.1 card is so vastly superior to it, like night and day. Anyway, my 720200 does NOT work when my system is overclocked so I had to go back to default stock settings in order to enable the Rensases chip. Clover boots up and I can use the rear USB 3.0 ports. I see nothing wrong with it other than the really crappy usb 3.0 implementation that is called Renases. When I overclock past a certain point the Renases chip just disappears entirely, but that has always been the case for me.

This of course means I do not know how DUET would work on my machine. If I were you I would quickly build a Clover (based on DUET, but it’s very latest implementation of course) usb disk and boot using that to see if it still does the same thing. Try the simple and easy guide here in these forums. Boot Disk Utility (BDU) is just too simple to not try at this stage, especially considering it downloads the very latest EFI implementation for you.

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

Hi, guys.
Since I got zero feedback on the Clover thread, I’ve updated DUET to UDK2015 few month ago.
That build also linked here has the NVME DXE from UDK2017 support by default, reduced boot time (versus the 2013 version flooting on the cricket guide) and minor other changes.
Is someone using it?
DUET UDK2015 for X58 – Windows 10 Fall Creator Update (FCU 1709) has been reported to been NOT able to make the USB bootable. << sort of fixed that.
I’m using it on mine revived x58 and well, no big issue to report! :smiley:

Going to try this on a system or two tomorrow. Thanks much! Please LMK if you could use any help from a technically skilled non-programmer. Anything you’d like if it works half as well as expected.

@noInk :
I just now saw your last post.
What did you update and why did you update it? Did you see an improvement on somuething?

EDIT by Fernando: Unneeded fully quoted post replaced by directly addressing (to save space)

SkOrPn.
The build linked on the audiocricket guide has UEFI 2.1 (2010) or partial 2.3(2013) IDK right now, this one is @ maximum five year ahead with UEFI 2.5 spec(2015).
There a lot’s of changes in code\driver base.

Additional main changes are;
Embedded the NVME/USB DXE within the Efildr (DUET) to have not to deal with the manual load of any driver required to boot from PCIex card.
Updated the NVME DXE to the current 2017 release version for additional asynchronous I/O queue: different buffers and page allocation size.
Reduced the bootloader timeout to 2 sec because why not!? ( it doesn’t cause any critical BUGBUG on this platform ).
Modified the handoff text to “ENTERING DXE – DUET2015” or something in case someone tell me it stuck to WELCOME TO EFI… ( been there too! ahah! )

Let me know if there are any issue with USB 3.1, mine board doesn’t have it so the driver is fully untested and can be eventually updated.
Be it on boot time and fluidity., I do see an improvement on mine side.
Also, keep in mind this is pretty much tailored on the ICH10R and one X5670, anything else is strictly not tested.
Be advised: both’s chipset/CPU with higher revision/year, like a different platform altogether, will likely not work or cause issue on boot.

@noInk

Thanks for the build of duet. I am using clover and it never requires for any manual loading of dxe’s, it just instantly see’s my SM961 and USB 3.1 card/drives. I am also using a 2010 Rampage III (ich10r) with a X5650. I do have a USB 3.1 card though and that is how I install Windows and Linux from, using the XhxiDxe-64.efi which as I said loads automatically by default on clover.

What I would like is a faster boot up, and up to date efi. We know clover is constantly updated, has a nice UI, but it is also highly tailored to OSX.

Now, for the… Um how do I convert my clover usb to duet usb question? lol. Are you suggesting we use the same instructions on Audio Cricket, but instead use the CreateUSB bat you posted above? Or did you have instructions somewhere posted on the internet that I failed to find? Thanks for any tips. I would like to convert back to DUET.

SkOrPn.
If you do already made the DUET USB with the very well written audiocricket guide, use the CreateUSB within this archive and SKIP everthing else.

From the README;


1) Open the Windows Command Prompt with “Run as Administator” option ( ie. Run “cmd” as Administrator ).

2) cd to the DUET_UDK2015 folder.

Eg: “cd C:\DUET_UDK2015” ( without quotes ). Enter.

3) Note down the drive letter of the USB flash drive.

4) Type “CreateUSB Drive_Letter: FORMAT” ( without quotes ).

Example: “CreateUSB.cmd K: FORMAT” (without quotes) - ( K: is the drive letter of the USB flash drive. )
This command will format the selected USB flash drive to FAT32 filesystem, set up the MBR boot code and the FAT32 Boot Sector, necessary to boot DUET.

5) Safely Remove and Replug the USB flash drive.

6) Type “CreateUSB Drive_Letter: UDK2015” ( without quotes ).

Example: “CreateUSB K: UDK2015” ( without quotes ).

7) Once done remove the USB flash drive.

8) Plug in the USB flash drive on the target system and set “Boot from USB” as the first option in your system’s BIOS Boot order option.


There other options, like manually overwriting the files but this is the safer faster path.
Eventually remember to modify the NSH file to point just to the OS EFI loader you are trying to boot ( the NSH file provided boot from fs1 ).

@noInk

Hmm, unfortunately it failed, several times saying it could not read/write to the usb drive. It is a normal 8gb sandisk drive and works with the duet from audicricket. That is confusing… I even used diskpart to format it a 3rd time with the clean, format fs=fat32 quick and active commands, all to no avail. Maybe that failed message is normal and I should just continue on with the rest of the instructions perhaps?

Going to try formating it on a different PC now, which would be surprising if it works. BRB.

Here is a img of the error I am getting. EDIT: OK, tested on two different perfectly good machines, and this duet I downloaded above does not work. During boot it says MBR failed and that there is no operating system found, please install boot media and reboot, or something like that. Now what? lol



EDIT2: I suspect it might be the new Fall creators update for some reason. I just tried it on 3 different USB drives and I get the exact same thing “ERROR: Write DBR: failed - Failed to read/write files (LastError: 0x5)!” on all 3 usb drives from two different machines. That seems impossible to me, especially since these previously worked earlier in the year for the same use.