I wanted to set up a dual boot with Windows 10 and FreeBSD on my computer the other day. As it had been a long while since I played with dual booting FreeBSD and Windows I was far from familiar with the process. I thought it would be a difficult task to accomplish this with UEFI. I figured I’d probably need to play and tinker with grub or the freebsd boot manager like I had done in the past when I tried to accomplish this task but I found out otherwise. I did a little bit of research and investigating about dual booting FreeBSD and realized the task wasn’t as intimidating as I first thought when I luckily discovered this excellent screencast on Youtube showing how to get dual boot working with rEFInd and EasyUEFI.
It actually wasn’t that difficult in retrospect and I am currently typing this post on a dual boot Windows/FreeBSD computer as a reminder to document how to do it if I need to do something similar in the future. The fact that I was successful on the first try shows the process is simple. Of course I had to watch the screencast several times and had my laptop open to duplicate the steps in the video. Although I am familiar with the installation steps of both operating systems following the screencast shown below made the process painless.
The first thing I needed to do was access my bios settings by tapping on F2 key to disable secure boot otherwise FreeBSD will not install.
From there the gist of the process is to install Windows 10 first. Shrink the Windows 10 partition/volume you want to use using by typing diskmgmt.msc at the Windows command prompt. This brings up a window with all the partitions and volumes of the disks to manage. You select the volume you want to shrink and then choose the option to Shrink Volume for the volume you selected.
Then install FreeBSD into the newly unallocated volume that was freed up by shrinking the volume. Using FreeBSD installation media such as a DVD or USB key reboot into the bsdinstall program to start installation. During FreeBSD install you need to create three partitions manually using the bsdinstaller. You create one partition labeled EFI of 1MB size, another partition for the swap freebsd-swap (choosing how big you want it in GB i.e 2GB), and finally a third partition labeled freebsd-ufs consisting of rest of the space of the partition with a mountpoint label of / (a forward slash denoting root). Finish the installation on FreeBSD as you would normally. Installing any freebsd packages you need and configure /etc/rc.conf as required. Then reboot into Windows 10. The screencast walks one through this process and for those unfamiliar the FreeBSD Handbook Installation Section has all the information you need to learn how to install FreeBSD.
Once rebooted back into Windows 10 download rEFInd Boot Manager and EasyUEFI from each of the links respectively. Unpack the rEFInd boot manager zip file and install EasyUEFI. From there open the windows command prompt and type DISKPART. Select (sel) the volume which has the FAT32 EFI of Windows and assign it a letter. In my case the volume with the FAT32 EFI volume was volume 2. The screencast shows what to look for and what to type in the command prompt as below:
DISKPART>sel vol 2
DISKPART>assign letter = K:
Unzip refind and copy the refind folder to the desktop. Copy the folder contents of refind to the desktop and then copy it from the desktop to the above partition (K:) in \EFI\refind . In the command prompt xcopy to copy the refind folder.
C:>xcopy C:\Users\username\Desktop\refind K:\EFI\refind
The above xcopy procedure asks whether refind is a file or directory. Since refind is a directory. Type D at the prompt.
Change drive to K: and change directory to EFI/refind
K:\>cd /d EFI\refind
Rename refind.conf-sample to refind.conf.
K:\EFI\refind>rename refind.conf-sample refind.conf
Start EasyUEFI application and setup a boot entry for rEFInd using the GUI Make rEFInd the first entry. Reboot to test the rEFInd entry. The screencast video is self-explanatory for this part.
Test dual boot works for Windows and FreeBSD as shown in screencast.
Reboot into Windows 10.
Start EasyUEFI again and add an boot entry/option for FreeBSD as was done above for rEFInd.
Reboot and test that the FreeBSD option works.
Test if everything still dual boots and works and done.
Now that I have this documented a little bit here I can come back to it if I ever want to set up dual boot on this machine again. Anyways, everything is shown in the Youtube video. So go watch it if you are interested in an easy way to dual boot Windows 10 with FreeBSD.