Os discos rígidos ad0 e ad1 precisam ter o código de inicialização boot0, e a fatia (partição MBR) do ad1 em que o FreeBSD se encontra precisa ter boot1. Isso é um pouco confuso, mas resulta de uma decisão arquitetônica de usar bsd disklabels dentro de partições MBR.
O Boot0 é realmente pequeno e dinâmico, permitindo que outros gerenciadores de inicialização respeitáveis do SO continuem. Basicamente boot0 fica no MBR. Boot0 não pode ler disklabels, então ele apenas carrega o primeiro bloco (s) de uma partição (slice) e pula para executar esse código.
Boot1 é onde o código específico do FreeBSD realmente inicia, a memória é configurada nos modos adequados ao kernel do FreeBSD e o código boot1 pode ler o disklabel do BSD, localizar / e até ler o sistema de arquivos o suficiente para encontrar um arquivo do kernel pelo nome. O Boot1 é bastante complicado e carrega muitas coisas, incluindo o carregamento de mais código de boot, módulos, o kernel e inicia a execução do kernel.
Suponho que você tenha um layout de disco parecido com este:
ad0 - disco rígido interno (boot0)
ad0s1 - primeira e única partição (fatia) do disco rígido interno, C: \
ad1 - disco rígido externo (boot0)
ad1s0 - uma partição FAT ou NTFS (slice) na unidade externa, D: \
ad1s1 - Partição do FreeBSD (slice) (boot1)
ad1s1a - FreeBSD /
ad1s1b - Troca do FreeBSD
ad1s1c - FreeBSD / usr
...
Eu observei onde você precisa dos loaders boot0 e boot1.
Fazer isso manualmente ensina boas lições valiosas sobre como o FreeBSD é inicializado. As próximas lições em linha são configurar o ambiente / boot /, alterar uma imagem personalizada e selecionar e configurar os módulos do kernel antes que o próprio kernel seja carregado.
Eu estou supondo que você está fazendo isso principalmente para fins de aprendizado e poderia estar interessado em desmontar a instalação. NanoBSD vale a pena investigar.