Como bootar o FreeBSD com Linux, usando GRUB2, mas antes é preciso ter uma noção de configuração do GRUB, para entender seu funcionamento.
O GRUB não trabalha dispositivos como /dev/hda1, /dev/hda2, faz o uso de (hd0,0); (hd0,1) e (hd0,msdos1); (hd0,msdos1,msdos5); (hd0,msdos1,bsd3); (hd0,netbsd1); (hd0,gpt1). Um exemlpo tabela abaixo:
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.
set root=(hd0,1)
chainloader +1
}
menuentry "FreeBSD, facíl " {
insmod ufs2
set root=(hd0,1,a)
kfreebsd /boot/loader
}
menuentry "FreeBSD, direto" {
insmod ufs2
set root=(hd0,1,a)
search --no-floppy --fs-uuid --set 4a86db44195cac47
kfreebsd /boot/kernel/kernel
kfreebsd_loadenv /boot/device.hints
set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ad4s1a
set kFreeBSD.vfs.root.mountfrom.options=rw
A opção mais indica é a primeira por ser genérica, as demais nessecitam ser especificadas com precisão os parametros, mas os parametros mostrados acima podem varia, de acordo com suas configuações, isso exige conhecimentos sobre o FreeBSD. O ideal é fazer a instalação do FreeBSD primeiro e ser for ter varios S.O. deixar o Linux por último, por causa do GRUB que se instala no inicio da partição do disco.
Tem parametro diferente se usar tabela de partição GPT ou MBR. Exemplos:
GPT
menuentry "FreeBSD" {
insmod ufs2
set root=(hd0,gpt3)
kfreebsd /boot/loader
}
MBR
menuentry "FreeBSD" {
set root=(hd0,msdos4a)
chainloader +1
}
Depois de configurado o arquivo /etc/grub.d/40_custom, use o comando update-grub como root.
O insmod é modulo do GRUB reponsavel por reconhecer o Filesystem, vocẽ pode saber se o GRUB, tem suporte em /boot/grub/i386-pc/.
Fontes:
http://www.vivaolinux.com.br/artigo/O-gerenciador-de-boot-GRUB/?pagina=2
https://forums.freebsd.org/threads/freebsd-accessed-via-grub2.5918/
https://www.gnu.org/software/grub/manual/grub.html#Filesystem
https://help.ubuntu.com/community/Grub2%20Other%20Os
http://members.iinet.net/~herman546/p20/GRUB2%20CLI%20Mode%20Commands.html#MODULE
http://blog.leahhanson.us/notes-on-installing-and-booting-freebsd-from-grub2.html