Ajouter FreeBSD au menu de démarrage GRUB2

11

J'ai Gentoo x64 installé avec Grub2 sur mon lecteur MBR. Aujourd'hui, j'ai installé FreeBSD x64 9.2. Maintenant je suis dans Gentoo et j'essaye d'ajouter FreeBSD à grub2la liste des menus.

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

J'ai fait ce qui précède sur Gentoo et il n'a pas trouvé FreeBSD. La partition imbriquée FreeBSD est sda1et contient freebsd-ufset freebsd-swappartitions.

Comment puis-je ajouter FreeBSD à grub2?

r004
la source

Réponses:

9

Voici le mien:

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
la source
1
l'avez-vous généré avec os-prober ou vous l'avez fait vous-même. aussi dans quel dossier cette directive est-elle entrée?
r004
le sda1 se traduit-il hd0,1? est-il vrai que grub2 part de 1 et non de 0?
r004
2
Non, ce / n'est pas généré automatiquement. Je l'ai écrit dans /etc/grub.d/40_custom, vérifiez ceci: wiki.archlinux.org/index.php/…
uzsolt
1
Oui, (hd0,1) est sda1.
uzsolt
le freebsd est dans le / dev / sda1 mais le sda1 est une tranche de partition (selon la terminologie bsd); et il contient une partition /et swap. Comment devrais-je faire alors?
r004
4

Mon objectif était de: démarrer FreeBSD 10 à partir de Grub2 en modifiant 40_custom dans /etc/grub.d

Ma configuration: FreeBSD10 est sur le cinquième disque dur de mon système (/ dev / sde sous Linux, donc hd4 pour Grub2. N'oubliez pas que sous Grub2 hd commence à partir de hd0 pour les lecteurs et les partitions à partir de 1 et plus, pas zéro). La partition racine est la deuxième (/ dev / sde2) car j'ai utilisé le partitionnement guidé de FreeBSD (utiliser le disque entier) lors de l'installation (le plus simple). Rappelant, c'est-à-dire: set root = '(hd4,2)' pour le cinquième hdd et la 2ème partition.

info: (chainloader +1 n'est en fait pas requis! Ce qui m'amène directement à FreeBSDs Bootloader).

Pour résumer un peu: il suffit d'adapter set root = (x, x), rien de plus n'est nécessaire. Si vous voulez démarrer le noyau directement, les choses deviennent un peu plus complexes que l'entrée ci-dessous.

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

J'ai été un peu déçu par os-prober qui vient de trouver 'Distribution Linux inconnue sur / dev / sde2'

ps: n'oubliez pas 'update-grub' après et Taddaa (avec un peu de chance). :) Si quelqu'un réussit, jetez-moi un msg, je serais heureux d'avoir de vos nouvelles!

Emi
la source
bon pour la table de partition gpt
r004
Qu'est-ce que c'est insmod part_gpt?
personne
2

Faites-le dans cet ordre:

  1. Modifiez vos /etc/grub.d/40_customet ajoutez les directives d'uzsolt . Ajoutez la directive à la fin du fichier. Ne supprimez rien qui s'y trouve .

  2. Assurez-vous qu'il 40_customest exécutable. Sinon alors chmod u+x 40_custom.

  3. Maintenant, faites cela pour écrire les modifications grub.cfg.

    grub2-install /dev/sda 
    os-prober 
    grub2-mkconfig -o /boot/grub/grub.cfg
    
  4. Tada! Redémarrer maintenant; vous devriez avoir FreeBSD dans votre liste OS dans le menu GRUB.

Pour avoir accès à votre tranche de partition UFS, vous devez procéder comme suit:

  1. Modifiez la configuration de votre noyau pour ajouter UFS filesystemet UFS label.

  2. Ensuite, make && make_modulesvotre noyau.

  3. Installez le logiciel du système de fichiers UFS .

  4. Montez votre tranche UFS sous votre Linux:

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

Selon ce site :

  1. Démarrez Linux.
  2. Créez un /boot/grub2/custom.cfgfichier.
  3. Ajoutez ces lignes au fichier créé:

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

    hd0,3signifie que c'est le premier disque dur et FreeBSD est sur sa troisième partition (puisque les disques sont numérotés à partir de 0 et les partitions sont numérotées à partir de 1). Vous devrez probablement ajuster ces chiffres. Une façon de découvrir quels sont vos disques consiste à exécuter fdisk -l.

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

N'oubliez pas que vos commandes peuvent être légèrement différentes. grub2-mkconfigpourrait être grub-mkconfiget ainsi de suite (c'était mon cas sur BunsenLabs Linux).


N'oubliez pas que j'utilisais FreeBSD avec UFS au lieu de ZFS sur cette machine. La solution présentée ne fonctionne pas pour les installations basées sur ZFS d'après ce que j'ai entendu.

Mateusz Piotrowski
la source
1

Le wiki Arch Linux a une très belle explication pour la même chose. Il guide la voie normale, c'est-à-dire le chargement direct du système d'exploitation ainsi que le chargement en chaîne.

Cependant, il ne faut pas oublier d'émettre sudo grub-mkconfig -o /boot/grub/grub.cfgpour valider les modifications.

xitij
la source