Fügen Sie FreeBSD zum GRUB2-Startmenü hinzu

11

Ich habe Gentoo x64 mit Grub2 auf meinem MBR-Laufwerk installiert. Heute habe ich FreeBSD x64 9.2 installiert. Jetzt bin ich in Gentoo und versuche, FreeBSD zur grub2Menüliste hinzuzufügen .

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

Ich habe das oben genannte auf Gentoo gemacht und es hat FreeBSD nicht gefunden. Die verschachtelte FreeBSD-Partition ist aktiviert sda1und enthält freebsd-ufsund freebsd-swapPartitionen.

Wie könnte ich FreeBSD hinzufügen grub2?

r004
quelle

Antworten:

9

Hier ist mein:

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
quelle
1
hast du es mit os-prober generiert oder du hast es selbst gemacht. Auch in welche Datei ging diese Anweisung?
r004
übersetzt das sda1 in hd0,1? Stimmt es, dass grub2 bei 1 beginnt und nicht bei 0?
r004
2
Nein, dies wird nicht automatisch generiert. Ich habe es in /etc/grub.d/40_custom geschrieben, überprüfen Sie dies: wiki.archlinux.org/index.php/…
uzsolt
1
Ja, (hd0,1) ist sda1.
Uzolt
das freebsd befindet sich in / dev / sda1, aber das sda1 ist ein Partitions-Slice (gemäß der bsd-Terminologie); und es enthält eine /und swapPartition. Wie soll ich dann vorangehen?
r004
4

Mein Ziel war es: FreeBSD 10 von Grub2 durch Bearbeiten von 40_custom in /etc/grub.d zu starten

Mein Setup: FreeBSD10 befindet sich auf der fünften Festplatte meines Systems (/ dev / sde unter Linux, also hd4 für Grub2. Denken Sie daran, dass hd unter Grub2 hd0 für Laufwerke und Partitionen ab 1 und nicht null startet). Die Root-Partition ist die zweite (/ dev / sde2), da ich bei der Installation die Guided-Partitionierung von FreeBSD (gesamte Festplatte verwenden) verwendet habe (am einfachsten). Erinnern wir uns, das heißt: setze root = '(hd4,2)' für die fünfte Festplatte und die zweite Partition.

info: (Kettenlader +1 ist eigentlich nicht erforderlich! Das Folgende bringt mich direkt zu FreeBSDs Bootloader).

Um es ein wenig zusammenzufassen: Sie müssen nur set root = (x, x) anpassen, es wird nichts mehr benötigt. Wenn Sie den Kernel direkt starten möchten, werden die Dinge etwas komplexer als der folgende Eintrag.

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

Ich war ein bisschen enttäuscht von os-prober, der gerade 'Unbekannte Linux-Distribution auf / dev / sde2' gefunden hat.

ps: vergiss nicht 'update-grub' danach und Taddaa (hoffentlich). :) Wenn jemand Erfolg hat, schreib mir eine Nachricht, ich würde mich freuen, von dir zu hören!

Emi
quelle
gut für gpt Partitionstabelle
r004
Was ist insmod part_gpt?
niemand
2

Mach es in dieser Reihenfolge:

  1. Bearbeiten Sie Ihre /etc/grub.d/40_customund fügen Sie die Anweisungen von uzsolt hinzu . Fügen Sie die Direktive am Ende der Datei hinzu. Löschen Sie nichts, was sich dort befindet .

  2. Stellen Sie sicher, dass 40_customes ausführbar ist. Wenn nicht dann chmod u+x 40_custom.

  3. Führen Sie dies nun aus, um die Änderungen zu schreiben grub.cfg.

    grub2-install /dev/sda 
    os-prober 
    grub2-mkconfig -o /boot/grub/grub.cfg
    
  4. Tada! Jetzt neustarten; Sie sollten FreeBSD in Ihrer Betriebssystemliste im GRUB-Menü haben.

Um Zugriff auf Ihr UFS-Partitions-Slice zu erhalten, gehen Sie wie folgt vor:

  1. Bearbeiten Sie Ihre Kernelkonfiguration, um UFS filesystemund hinzuzufügenUFS label .

  2. Dann make && make_modulesdein Kernel.

  3. Installieren Sie die UFS-Dateisystemsoftware .

  4. Hängen Sie Ihr UFS Slice unter Linux ein:

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

Laut dieser Seite :

  1. Starten Sie Linux.
  2. Erstellen Sie eine /boot/grub2/custom.cfgDatei.
  3. Fügen Sie der erstellten Datei diese Zeilen hinzu:

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

    Dabei hd0,3bedeutet dies, dass dies die erste Festplatte ist und sich FreeBSD auf der dritten Partition befindet (da die Festplatten von 0 und die Partitionen von 1 nummeriert sind). Wahrscheinlich müssen Sie diese Zahlen anpassen. Eine Möglichkeit, herauszufinden, was Ihre Festplatten sind, besteht darin, sie auszuführen fdisk -l.

  4. Ausführen grub2-mkconfig -o /boot/grub2/grub.cfg.

Denken Sie daran, dass Ihre Befehle möglicherweise etwas anders sind. grub2-mkconfigkönnte sein grub-mkconfigund so weiter (dies war mein Fall unter BunsenLabs Linux).


Beachten Sie, dass ich auf diesem Computer FreeBSD mit UFS anstelle von ZFS verwendet habe. Die vorgestellte Lösung funktioniert nicht für ZFS-basierte Installationen, wie ich gehört habe.

Mateusz Piotrowski
quelle
1

Das Arch Linux Wiki hat eine sehr schöne Erklärung dafür. Es führt den normalen Weg, dh das direkte Laden des Betriebssystems sowie das Laden der Kette.

Man darf jedoch nicht vergessen sudo grub-mkconfig -o /boot/grub/grub.cfg, Änderungen vorzunehmen.

xitij
quelle