Use Case: Abiliy to boot an 13G node, either R630 or R730, when using the local RAID or HBA for a storage layer, and wanting to use an additional device for boot. With this procedure and some cheap hardware from Amazon, you can boot from a PCI device, with a U.2 or M.2 SSD or NVMe device, both consumer grade without an EFI loader, or Enterprise grade with one.

U.2 Enterprise Drive with Adapter
M.2 Consumer Driver with Adapter and Heatsink

Next we preform the install of the OS, for this example I will use ESXi7.0

  • Install the U.2 or M.2 drive into its adapter and install it into the 13G host.
  • At this point do not connect the USB device, we will use it later.
  • Ensure UEFI BIOS and other BIOS settings are to your liking, we will update the boot order later
  • Boot up the server and using iDRAC remote console, or a locally attached Monitor and Keyboard
    1. Install ESXi onto the NVMe device per normal
    2. Go through ESXi installer as normal
    3. Once install is complete reboot server. NOTE: It will not boot into ESXi on consumer grade U.2/M.2 devices, only Enterprise grade devices which have a EFI loader built onto the device, such as the image below.
    4. If your device is not booting, continue process
  • Using the USB device and your desktop/laptop machine, for this guide I use Windows, but any OS will work
  • Download Rufus
    1. https://rufus.ie/en/ and install
  • Download Clover from GitHub Releases page, choosing the *.ISO.7z file.
    1. https://github.com/CloverHackyColor/CloverBootloader/releases
    2. I downloaded and tested Clover-5148-X64.iso.7z
  • Extract the ISO file from the .7z archive using 7zip
  • Launch Rufus
  • In Rufus
    1. Select your USB drive in the top drop-down list under “Device”
    2. Click on the button labelled “SELECT” to the right of the “Boot Selection” heading and then find the *.ISO file you extracted in step 16 and click “open”
    3. Choose GPT under the “Partition Scheme” heading, and “UEFI (non CSM)” under the “Target System” heading
    4. Enter a Volume label of your choice, I used “BOOTUSB” for mine, but it defaults to “CLOVERCD”
    5. Click the button labelled START at the bottom of the window and wait a bit for it to complete.
    6. A pop-up will appear asking if you want to write in ISO Image Mode or ISP -> ESP mode, Select the first one “Write in ISO Image mode (Recommended)” and click OK
    7. Another pop-up will appear to warn that all data on the device will be destroyed. Click OK
    8. If another pop-up appears that you have multiple partitions, select OK to continue
    9. Once the status/progress bar at the bottom fills completely green/full and reads “READY” you can close Rufus by clicking “CLOSE” in the bottom right of the window
  • Open Windows Explorer to this USB drive we just created
  • Navigate to the following directory “$Drive\EFI\CLOVER\drivers\off” and copy “NvmExpressDxe.efi
  • Paste this file into both of the following locations
    1. $Drive\EFI\CLOVER\drivers\BIOS
    2. $Drive\EFI\CLOVER\drivers\UEFI
  • Once copied to both locations, eject the USB device from your PC
  • Plug this USB device into your 13G server and reboot
  • After a while the server will boot from the USB drive and your will be presented with the Clover loader screen
  • Once this screen is shown, either using the arrow keys, or iDRAC console, shutdown the server
  • Plus the USB drive back into your desktop/laptop machine
  • Navigate to the “$Drive\EFI\CLOVER\misc” folder and open up the “PreBoot” log file in NotePad++
    1. Ctrl + F for “NVMe” until you find the LAST entry, you should find something similar to this (Loader entry created for ‘PciRoot(0x0)\Pci(0x2,0x0)\Pci(0x0,0x0)\NVMe(0x1,5C-68-90-11-59-38-25-00)\HD(1,GPT,16F9A8BC-B144-4C9D-B0EF-311F91FB454C,0x40,0x32000)\EFI\BOOT\BOOTX64.efi’).
    2. Copy the GUID portion, we will need this for later (I highlighted in Bold)
  • Navigate to “$Drive\EFI\CLOVER” and open “config.plist” in NotePad++
    1. Erase all the contents of this file and replace with the below data:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Boot</key>
  <dict>
    <key>Timeout</key>
    <integer>0</integer>
    <key>DefaultVolume</key>
    <string>GUID GOES HERE</string>
  </dict>
  <key>GUI</key>
  <dict>
    <key>TextOnly</key>
    <true/>
    <key>Custom</key>
    <dict>
      <key>Entries</key>
      <array>
        <dict>
          <key>Hidden</key>
          <false/>
          <key>Volume</key>
          <string>GUID GOES HERE</string>
          <key>Disabled</key>
          <false/>
          <key>Type</key>
          <string>Linux</string>
          <key>Title</key>
          <string>ESXi</string>
        </dict>
      </array>
    </dict>
  </dict>
</dict>
</plist>
  • Next you need to replace the “GUID GOES HERE” with the GUID saved from the previous step
  • Once complete, eject USB device from your computer, and put it back into the 13G server
  • Here you have two options, either install the USB inside the server, or outside, either works, but inside is best.
  • Boot up the server and enter setup
    • In setup ensure the USB device is first boot priority, disabling all other devices
    • Reboot server
  • It should boot up to your ESXi installation per normal, and ESXi will only see the U.2/M.2 device as the boot device and local datastore.
ESXi booted off Enterprise U.2 SSD