Hi
nix1, I very recently set up on my main machine to dual boot Windows 10 (1809) and FreeBSD 12.1, though using the
rEFInd boot manager (
rEFInd documents are here) to choose my operating system at boot rather than
efibootmgr(8). It is working well, though without secure boot enabled and with a bit of work to make the rEFInd boot screen look pretty.
My experience of installing Windows was truly awful. It really looked like Microsoft hadn't tested the installer well. When I left my FreeBSD partitions at the end of the drive the installer insisted there wasn't enough space to install despite having several hundred gigabytes. After deleting my FreeBSD partitions the Windows installer then complained that my EFI partition was NTFS formatted, which it most definitely was not. That error persisted even after I manually reformatted the EFI partition as FAT32 using Windows. I ended up having to reinstall Windows 8 from backups and upgrade to Windows 10, which then somehow left me with a corrupt EFI partition that I needed to recreate using Windows... Anyway, enough of my tales of Windows woe, since it sounds like Windows is working for you just fine.
You're right that that by default FreeBSD will create another EFI partition after your Windows partitions, which isn't what you want. The FreeBSD install process is managed through a series of scripts (
12.1 bsdinstall/scripts source here). My experience is that the partitioning scripts work well for simple installations where FreeBSD is the sole operating system but for anything more complicated it is best to set up the partitions oneself.
There is no magic in the install scripts and it is possible to duplicate everything they do by hand, though fortunately that is not necessary and there is a better option. During the installation process you will be offered an opportunity to open a shell to set up partitioning. This option lets you use the command line to set up your partitions and mountpoints exactly as you wish (likely using
gpart(8) and potentially
newfs(8) or
zpool(8) and
zfs(8)). Importantly for you, this won't automatically create an EFI partition. Once you have arranged your partitions as you want, mount everything at
/mnt, write
fstab(5) and put it at
/tmp/bsdinstall_etc/fstab then
exit
back to the installer, which will do the rest. If you're more comfortable using another partitioning tool there is nothing to stop you doing some of the work with that first.
To boot FreeBSD with rEFInd you'll need to copy
/boot/boot1.efi to your EFI partition for a simple installation or
/boot/loader.efi if you're using
geli(8) for an encrypted root. I appreciate this reply doesn't offer you a step-by-step, 'type this then press enter' level of detail but hopefully will point you towards useful things to read and digest. Have a look and I can delve into more detail on my setup if useful to you.