Colocar o FreeBSD e o OpenBSD no grub com UEFI pelo Linux SEM ERROS!

Aqui postaremos comandos que fazem os espíritos se mostrarem, os demônios queimarem, os deuses castigarem e os humanos implorarem... Vamos abrir as portas 22, 445, 139 e 3389 e sermos felizes. FreeBSD(o capeta mirim), Linux RedHat(O sistema do zé pilintra) ,OpenBSD(o sistema da iemanja), Windows (a janela iiluminati pro inferno) kkkkkkkkkkkkkkkkkkkkkkkkkkk
Post Reply
User avatar
javanunes
Site Admin
Posts: 109
Joined: 05 Nov 2017, 19:33
facebook or youtube:

Colocar o FreeBSD e o OpenBSD no grub com UEFI pelo Linux SEM ERROS!

Post by javanunes » 20 Mar 2020, 04:19

Bom, todos os sites, inclusive os grandes 'ensinam' um monte de idiotices sobre o grub que nunca funciona, eles sempre usam o parametro root e set de forma errada, é impressionante! Bom, se você usa Linux com grub em um sistema de disco GPT com bios UEFI é preciso identificar quais são as pequenas partições EFI que na verdade não velhas FATs.
O grande erro dos sites que ensinam a dar boot no freebsd e openbsd pelo Grub é que eles se preocupam mais onde esses dois sistemas são instalados do que as partições EFI, quando deveria ser o contrário! Esqueça por enquanto em quais partições os nossos sistemas BSD estão instalados, você não precisa disso! Você deve se preocupar sim quais são as partições FAT EFI (aquelas com pastas efi dentro delas), para isso abra com muito cuidado no seu Linux o gnome-disks , ele é um particionador muito poderoso e que pode fazer estragos também. Você pode usar no console o cfdisk ou o fdisk -l
para identificar também.

Bom, se na sua máquina você usa 1 disco apenas , no grub ele será conhecido como hd0, se fosse no segundo disco seria hd1, favor não confundir disco com partições! Os Linux atuais irão chamar o seu HD0 de sda , não se importe, mesmo assim, no grub o nome dele será hd0!

As partições GPT no grub serão conhecidas por gpt mais o número da partição.

Agora precisamo identificar onde o seu sistema BSD criou a mini partição FAT EFI para dar boot dela, no meu caso, o freebsd criou em /dev/sda6 , que traduzindo para o grub seria hd0 partição gpt6 , por favor, não use como os sites burros ensinam colocando root='(hdx,gpt)', isso nunca funciona, use
chainloader usando o hd e a partição e o caminho do arquivo efi( (hd0,gpt6)/EFI/boot/BOOTx64.efi ) como parâmetro dele! Então no final do seu arquivo /boot/grub/grub.cfg você colocará
esse paragrafo para o freebsd ser butado pela partição efi /dev/sda6:

Code: Select all

menuentry "FreeBSD 12 JavaNunes server" {
    insmod part_gpt
    insmod fat
    insmod search_fs_uuid
    insmod chain
    chainloader (hd0,gpt6)/EFI/boot/BOOTx64.efi
} 
Sendo sda= hd0
e sda6 = (hd0,gpt6)


O importante é apontar para o arquivo BOOTx64.efi que o seu BSD injetou nessa partição, o restante: kernel do freebsd, arquivo de ramdisk e todas essas pataqualhadas em sistemas UEFI e partições GPT não é necessário informar ao grub, o BOOTx64.efi que na verdade é um .exe disfarçado fará isso sozinho numa busca inteligente.

No caso do OpenBSD tem alguns agravantes: o arquivo de boot eu tive que baixar de um site FTP no caso o BSD.BOOTX64.EFI e colocá-lo dentro
da minha partição efi que eu usava pro Linux (sda1) em uma pasta de boot, também tive que baixar estranhamente o kernel dele para por na mesma pasta, baixei usando o wget assim:

Code: Select all

wget http://ftp.ch.openbsd.org/pub/OpenBSD/snapshots/amd64/BOOTX64.EFI
wget http://ftp.ch.openbsd.org/pub/OpenBSD/snapshots/amd64/bsd.rd  
Joguei tudo do bsd dentro da pasta /efi/boot/ e os files do meu linux eu deixei na pasta /efi/ubuntu
Deixando no final do meu /boot/grub/grub.cfg assim:

Code: Select all

menuentry 'OpenBSD 6.6 JavaNunes Server ' {
   insmod part_gpt
   insmod search_fs_uuid
   insmod fat
   insmod chain
   chainloader (hd0,gpt1)/EFI/boot/BSD.BOOTX64.EFI
 }

Sendo sda= hd0
e sda1 = (hd0,gpt1)

Aí é só salvar e dar um reboot no seu Linux, pronto! Os sistemas estarão lá para dar boot!

Post Reply