At Wayfair, we are big fans of Dell’s server platform, so naturally we were excited when their 12G line of servers started shipping. We are also very big fans of FreeBSD. Ahead of our first order for a new Dell PowerEdge r720, we did some research and found that the new PERC H710 RAID Controllers used the LSI SAS 2208 controller chip. A quick look at the FreeBSD hardware compatibility list for 9.0 Release showed that this chip was supported by the mps driver, knowing that PERC cards are usually supported by the mfi driver, we thought it was a bit weird, but weren’t that concerned.
The hardware came in, we loaded up a FreeBSD 9.0 Release install CD, and the RAID controller was actually detected by an entirely different driver, the mpt driver. It turns out there is a bug in the release version of that driver, which we were able to get around fairly easily (more on that later). Still, none of the drivers in the release version would detect the raid controller. Eventually we were able to find a project on FreeBSD’s SVN site where a new version of the mfi driver was being developed that supports the new line of Dell PERC cards. Below is a quick how-to on making an install CD that will work perfectly with the new RAID controllers. After we were able to get a clean install, we then discovered that the Broadcom LOM NIC is detected, but doesn’t function, so we just installed an Intel Pro1000 PCI NIC. We later discovered that Intel has source code for a newer version of the igb driver for the optional Intel LOM NICs available here. We haven’t tested this yet, but the same method of injecting new driver code we use below should work for this driver, as well.
Ok, start with a clean install of FreeBSD 9.0 Release. (We used a VM, but physical hardware is fine, too.) Just make sure you have plenty of drive space, as we ended up using about 20GB by the time we were done
1. Download the stable version of source code, which we’ll use when building world and our kernel to build our install CD
2. Do a standard buildworld. We don’t need to install it, but the output of this is used when building the install CD
3. Now we need to get the new driver source code. The SVN checkout link is here, and here is the link to the websvn page if you want to take a look at the commit logs. Once you have all the files downloaded, put them in /usr/src/sys/dev/mfi folder, overwriting all existing files.
4. The new code actually added 2 new C files, so we need to add them to one of the included make files so when we build our kernel, it will see these new files.
Fire up your favorite text editor and edit /usr/src/sys/conf/files
Find the lines with the mfi driver files by searching for mfi, and add the following lines after those:
dev/mfi/mfi_syspd.c optional mfi
dev/mfi/mfi_tbolt.c optional mfi
5. Now, since we are using stable source files, we will get the updated mpt driver to get around the bug were this driver incorrectly tries to attach to our RAID controller Alternatively, you could edit the GENERIC kernel config file and comment out the mpt driver altogether. Now, just build the kernel
make buildkernel KERNCONF=GENERIC
6. Now we just need to make our release, which will generate our install ISO files.
7. ISO files are in /usr/obj/usr/src/release, pull them off then either just boot from an iDRAC with it, or burn to a CD.
For good measure, we installed iozone on the server in an attempt to stress test the RAID controller and drivers, and had no issues with the drivers or errors in the messages.log file. It’s worth noting that the stats below are based on an 8x 15k SAS disk RAID 5 array.
We hope that you are as excited about the new line of servers as we are, and that this article is helpful to not only those trying to get FreeBSD running on Dell’s new hardware, but also for those that need a custom install CD for other reasons as well. As always, thanks for reading.
If this type of thing interests you, please visit our careers page, and join the team!