Adicione o menu de inicialização do FreeBSD ao GRUB2

11

Eu tenho o Gentoo x64 instalado com o Grub2 na minha unidade MBR. Hoje eu instalei o FreeBSD x64 9.2. Agora estou no Gentoo e tentando adicionar o FreeBSD à grub2lista de menus.

grub2-install /dev/sda
os-prober
grub2-mkconfig -o /boot/grub2/grub.cfg

Eu fiz o acima no Gentoo e ele não encontrou o FreeBSD. A partição aninhada do FreeBSD está ativada sda1e contém freebsd-ufse freebsd-swappartições.

Como eu poderia adicionar o FreeBSD grub2?

r004
fonte

Respostas:

9

Aqui é minha:

menuentry "FreeBSD" --class freebsd --class bsd --class os {
 insmod ufs2
 insmod bsd
 set root=(hd0,1)
 kfreebsd /boot/kernel/kernel
 kfreebsd_loadenv /boot/device.hints
 set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0s1a
 set kFreeBSD.vfs.root.mountfrom.options=rw
 set kFreeBSD.hw.psm.synaptics_support=1
}
uzsolt
fonte
1
você o gerou com o os-prober ou você mesmo. Também em qual arquivo foi inserida essa diretiva?
R004
o sda1 traduz para hd0,1? é verdade que o grub2 começa de 1 e não de 0?
R004
2
Não, isso / não é gerado automaticamente. Eu escrevi no /etc/grub.d/40_custom, verifique isto: wiki.archlinux.org/index.php/…
uzsolt
1
Sim, (hd0,1) é sda1.
uzsolt
o freebsd está no / dev / sda1, mas o sda1 é uma fatia da partição (de acordo com a terminologia do bsd); e contém uma partição /e swap. Como devo preceder então?
R004
4

Meu objetivo era: Inicializar o FreeBSD 10 a partir do Grub2 editando 40_custom em /etc/grub.d

Minha configuração: O FreeBSD10 está no quinto disco rígido do meu sistema (/ dev / sde no Linux, então hd4 para o Grub2. Lembre-se de que no Grub2 o hd inicia no hd0 para unidades e partições de 1 em diante, e não zero). A partição raiz é a segunda (/ dev / sde2), pois usei o particionamento guiado do FreeBSD (use o disco inteiro) durante a instalação (a mais simples). Lembrando, isto é: defina root = '(hd4,2)' para o quinto disco rígido e a segunda partição.

info: (o chainloader +1 não é realmente necessário! O seguinte me leva diretamente ao FreeBSDs Bootloader).

Para resumir um pouco: basta adaptar o conjunto root = (x, x), nada mais é necessário. Se você deseja inicializar o kernel diretamente, as coisas ficam um pouco mais complexas do que a entrada abaixo.

menuentry "FreeBSD 10.0" {
    insmod part_gpt
    set root='(hd4,2)'
    kfreebsd /boot/loader
}

Fiquei um pouco decepcionado com o os-prober, que encontrou 'Distribuição Linux desconhecida em / dev / sde2'

ps: não esqueça 'update-grub' depois e Taddaa (espero). :) Se alguém tiver sucesso, me mande uma mensagem, eu ficaria feliz em ouvir de você!

Emi
fonte
bom para tabela de partição gpt
r004 19/09/14
O que é insmod part_gpt?
ninguém
2

Faça nesta ordem:

  1. Edite seu /etc/grub.d/40_custome adicione as diretivas do uzsolt . Adicione a diretiva no final do arquivo. Não exclua nada que esteja lá .

  2. Verifique se 40_customé executável. Se não, então chmod u+x 40_custom.

  3. Agora faça isso para escrever as alterações grub.cfg.

    grub2-install /dev/sda 
    os-prober 
    grub2-mkconfig -o /boot/grub/grub.cfg
    
  4. Tada! Reinicie agora; você deve ter o FreeBSD na sua lista de SOs no menu GRUB.

Para ter acesso à sua fatia de partição UFS, faça o seguinte:

  1. Edite a configuração do seu kernel para adicionar UFS filesysteme UFS label.

  2. Então make && make_modulesseu kernel.

  3. Instale o software do sistema de arquivos UFS .

  4. Monte seu UFS Slice no seu Linux:

    sudo mkdir /mnt/freebsd && sudo mount -r -t ufs -o ufstype=ufs2 /dev/sda1 /mnt/freebsd
    
r004
fonte
2

De acordo com este site :

  1. Inicialize o Linux.
  2. Crie um /boot/grub2/custom.cfgarquivo
  3. Adicione estas linhas ao arquivo criado:

    menuentry "FreeBSD" {
    set root='(hd0,3)'
    kfreebsd /boot/loader
    }
    

    onde hd0,3significa que este é o primeiro disco rígido e o FreeBSD está em sua terceira partição (já que os discos são numerados de 0 e as partições são numeradas de 1). Provavelmente você terá que ajustar esses números. Uma maneira de descobrir quais são seus discos é executar fdisk -l.

  4. Corra grub2-mkconfig -o /boot/grub2/grub.cfg.

Lembre-se de que seus comandos podem ser um pouco diferentes. grub2-mkconfigpode ser grub-mkconfige assim por diante (esse foi o meu caso no BunsenLabs Linux).


Lembre-se de que eu estava usando o FreeBSD com UFS em vez de ZFS nesta máquina. A solução apresentada não funciona para instalações baseadas em ZFS, pelo que ouvi.

Mateusz Piotrowski
fonte
1

O wiki do Arch Linux tem uma explicação muito boa para o mesmo. Ele orienta da maneira normal, isto é, carregamento direto do SO, bem como carregamento em cadeia.

No entanto, não se deve esquecer de emitir sudo grub-mkconfig -o /boot/grub/grub.cfgpara confirmar alterações.

xitij
fonte