Como bootar o FreeBSD com Linux, usando GRUB2, mas antes é preciso ter uma noção de configuração do GRUB, para entender seu funcionamento.
*A primeira coisa que chama a atenção é sua forma de trabalhar com os discos rígidos do computador. Ao invés de referenciar esses dispositivos como /dev/hda1, /dev/hda2, etc, ele o faz através dos termos (hd0,0), (hd0,1) e assim por diante. Observe a tabela abaixo para um melhor entendimento:
Padrão | GRUB |
/dev/hda1 | (hd0,0) |
/dev/hda2 | (hd0,1) |
/dev/hdb1 | (hd1,0) |
/dev/hdb2 | (hd1,1) |
O GRUB chama o HD principal do computador de hd0 (enquanto o Linux o chama de hda). Um disco secundário recebe o nome de hd1 (o Linux o chama de hdb) e assim segue. Para trabalhar com as partições do HD, o GRUB as referencia através de um número inserido após uma vírgula. Assim, a primeira partição recebe o número 0 (zero) - hd0,0 -, à segunda partição é atribuído o número 1 - hd0,1 - e assim por diante. É importante frisar que, nesse caso, o GRUB não faz distinção entre discos IDE e SCSI.
set root=(hd0,1)
chainloader +1
}
A primeira linha acima mostra o título que o sistema recebe no GRUB. É esse nome que será exibido quando o GRUB mostrar a lista de sistemas operacionais que o usuário pode escolher. Pode-se usar qualquer frase depois de title. Obviamente, informe algo relacionado ao sistema operacional em questão.
A segunda linha - set root (hd0,1) - informa ao GRUB onde o sistema operacional está instalado. No exemplo, ele se encontra na segunda partição do HD. A palavra root tem a função de indicar que aquela é a partição principal do sistema (ou a partição-raiz) e que, portanto, deverá ser montada.
GPT
Ao usar uma tabela de partições GPT, descobri que isso funcionou:
menuentry "FreeBSD" {
insmod UFS2
raiz set = (hd0, gpt3)
kfreebsd / boot / loader
}
Eu tive dificuldade em primeira descobrir qual partição para definir a raiz. Root deve prepare-se para a partição FreeBSD-ufs, não o FreeBSD-boot um. Se você substituir o set root
linha com search --no-floppy --file /boot/loader
, então ele deve dizer-lhe a partição. Aparentemente, essa linha é suposto deixá-lo descobrir a partição e bota direita por si só. No entanto, para mim, seria imprimir o nome da partição e, em seguida, falhar. (Ele falhou cedo o suficiente para que eu ainda estava em Grub, que é conveniente.) Se Então, usei a partição que pegou em um set root=
linha, ele iniciou muito bem.
MBR
Quando eu usei uma tabela de partição MBR msdos, a entrada acima (bem, com raiz alterado para (hd0,msdos4)
) me pousar no "FreeBSD bootstrap loader". Ele me deixou em um prompt de comando com um número de comandos possíveis. Correr ls
lá me informou que não poderia montar o sistema de arquivos.
Eventualmente, eu tentei a versão do chainloader essa pergunta Stackexchange, e funcionou. Para ser mais específico, eu usei:
menuentry "FreeBSD" {
raiz set = (hd0, msdos4a)
chainloader + 1
}