FreeBSDも(ようやく^^;;)10.3betaからUEFIモードでUSBメモリからインストーラを起動し、GPT形式のHDDにインストールして、UEFIモードでHDD上で起動できるようになったのですが、残念ながらHDD上に複数のパーティションを切り、異なるバージョンのFreeBSDをインストールしておいて起動時に切り替えることは出来てません。

で、まあちょこちょこいじっていたらとりあえず動いたので、物好きな方のためにboot1.cとの差分を公開します。

お約束ですが、導入は自己責任で行ってください。不具合が出ても当方は一切責任持ちません。

現在、私のHD上には
# gpart show
=>        34  3907029101  ada0  GPT  (1.8T)
          34        2014        - free -  (1.0M)
        2048     1048576     1  efi  (512M)
     1050624  1048576000     2  linux-data  (500G)
  1049626624    16707584     3  linux-swap  (8.0G)
  1066334208        1024     4  freebsd-boot  (512K)
  1066335232   104856576     5  freebsd-ufs  (50G)
  1171191808    16777216     6  freebsd-swap  (8.0G)
  1187969024   209715200     7  freebsd-ufs  (100G)
  1397684224  2509344911        - free -  (1.2T)
と7つのパーティションが出来ていて、p2にはUbuntu、p5にFreeBSD-11、p7にFreeBSD-10.3がインストールしてあります。

Ubuntu/FreeBSDの切り替えにはUbuntuからインストールしたrEFIndを使っています。従ってブート手順としては

UEFIファーム → rEFInd → boot1.efi → /boot/loader.efi → kernel

となっていて、上記パッチを当てることで、boot1.efiの時点でブート可能なFreeBSDパーティションの一覧が表示され、数字を入力することで何番目のパーティションから起動するかを選べるようになっています。

あ、書き忘れてましたが私はamd64でしか試してません。

現状、起動可能なパーティションの最大数(その時点で認識されている全てのドライブ上のFreeBSD起動可能なパーティションの総数)が10個以下しか表示・選択できないという制約があります。
#複数文字入力を作るのが面倒だっただけですが(^^;

#何年ぶりの更新とか、そういうことは言わない約束