I have an HPE ML110 Gen10 server. It’s an excellent piece of hardware but does not “like” the LSI SAS card I want to use for FreeNAS. Every time it boots, I get a “red screen of death” because the LSI card is trying to load its ROM. Luckily I stumbled on a fix, and thought I would share it here.
HPE ML110 Gen 10 with TrueNAS
The ML110 is a really well-designed piece of hardware. It’s got an excellent board layout and a well-designed flow-through cooling setup with internal baffles. It would make one heck of a Windows server. But the built-in HPE Smart Array S100i SR Gen10 software RAID solution isn’t appropriate for an alternative operating system like FreeNAS (which will soon be renamed TrueNAS for some reason). I always prefer to use the well-supported LSI SAS 9207 PCIe adapter in “IT” mode, and this matches best practices from iXsystems too.
The problem is that the HPE server is just “too good” and doesn’t want to run random boot ROM code for both security and stability reasons. I don’t blame them – this is a server intended for use in supported configurations, not something to run random software on. But, being willing to forego support, I decided to press ahead!
I picked up a (Dell-branded) LSI SAS 9207-8i card off eBay and flashed it with the preferred p20 firmware in “IT” mode. This disables the RAID functions and essentially converts the LSI card into a rock-solid 8-channel SAS/SATA adapter.
Happily, HPE uses standard 4-port SAS cables with the built-in 4-drive cages in the ML110, so it’s literally plug-and-play from a connectivity perspective. I just disconnected the cable from the motherboard and plugged it into the LSI card. I will eventually buy a second drive cage if I want to add 4 more drives.
Erase LSI ROM For Use in HPE Servers
I was kind of pulling out my hair trying to figure out how to get the ML110 to boot reliably with the LSI card in it until I hit some threads online that suggested that it was the boot ROM that was causing the “red screen of death”. Then I discovered another thread pointing out that you could just delete the BIOS and it would work!
I pulled the LSI card from the ML110 and inserted it into another machine I had handy (a brand new AMD Ryzen 9 3900X as a matter of fact!) because of course it wouldn’t boot at all.
I mainly followed this post to get into an EFI shell so I could delete the BIOS.
apt install refind refind-install --usedefault /dev/sdx1 --alldrivers cd /mnt/refind-install mkdir EFI/tools sudo cp ~/Shell_Full.efi EFI/tools/shell.efi sudo cp ~/sas2flash.efi .
Note that you will have to use your USB drive’s proper path instead of “/dev/sdx1” and refund-install will mount the drive … somewhere. So go there instead of /mnt/refind-install. Also I am assuming you already grabbed Shell_Full.efi and sas2flash.efi and copied it to your home directory. And that you’re using Ubuntu or some similar kind of Linux.
Next step is to reboot the machine into EFI mode and run the shell. rEFInd found my shell.efi in EFI/tools and let me boot into that. Then I could remove the BIOS using sas2flash as discussed in this post:
mount fs0 fs0: sas2flash -list sas2flash -o -e 5 sas2flash -list
That last command confirmed that the BIOS was gone.
Then I reinstalled the card in my ML110 and booted it up perfectly. No issues at all!
I really like the HPE ML110 Gen10, but it’s probably best to run Windows Server on it. My home-built Supermicro server was much easier to get up and running with FreeNAS! But if you happen to have an ML110 (or another server that barfs on option ROM) now you know how to remove it. I hope this helped.