Ir para o conteúdo

Marco Aurelio Padilha Cassilha

Tela cheia

Blog

3 de Abril de 2011, 21:00 , por Desconhecido - | No one following this article yet.

Como acessar FreeBSD no Grub2

7 de Agosto de 2015, 2:44, por Marco Aurelio Padilha Cassilha - 0sem comentários ainda

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 exemplo  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.

O arquivo ha ser editado é /etc/grub.d/40_custom a lista de sistemas operacionais. O primeiro sistema da lista é o FreeBSD:

menuentry "FreeBSD" {
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.

A terceira, como o FreeBSD trabalha de maneira diferente do Linux, a opção de carregar o kernel também não se aplica ao sistemas BSDs. No lugar desse parâmetro, geralmente é usado chainloader +1, que "chama" o carregador de boot do BSD, deixando a esse a tarefa de iniciar o sistema. Note que em nosso exemplo, há um parâmetro na linha acima de chainloader +1.
 
Abaixo tem 3 opções de carregamento no GRUB.
 
Esta 1º opção precisa do bootloader do BSD.
 
menuentry "FreeBSD, simples" {
    set root=(hd0,1)
    chainloader +1
}
 
Esta 2º opção acessa direto o bootloader do BSD.

menuentry "FreeBSD, fácil " {
    insmod ufs2
    set root=(hd0,1,a)
    kfreebsd /boot/loader
}
 
Esta 3º opção não precisa do bootloader do BSD, pois o acessa direto o kernel.

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 necessitam ser especificadas com precisão os parâmetros, mas os parâmetros mostrados acima podem varia, de acordo com suas configurações, isso exige conhecimentos sobre o FreeBSD. O ideal é fazer a instalação do FreeBSD primeiro e ser for ter vários S.O. deixar o Linux por último, por causa do GRUB que se instala no inicio da partição do disco.

Tem parâmetro 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, responsável 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