Linux (SSD), Win10(sda), freeBSD(sdb). Grub bootet BSD nicht

Joerg66

Member
Hallo,
ich habe (hoffe ich) freeBSD auf der Festplatte /dev/sdb installiert. fdisk -l
Disk /dev/nvme0n1: 119,2 GiB, 128035676160 bytes, 250069680 sectors Disk model: WDC PC SN520 SDAPNUW-128G-1006 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 9CDFF59D-BD92-43D4-B4A7-11C760B6CC28 Device Start End Sectors Size Type /dev/nvme0n1p1 2048 1025485 1023438 499,7M Linux filesystem /dev/nvme0n1p2 1026048 250069646 249043599 118,8G Linux filesystem Disk /dev/sda: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors Disk model: ST1000DM003-1SB1 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0xa81159d5 Device Boot Start End Sectors Size Id Type /dev/sda1 2048 1126399 1124352 549M 7 HPFS/NTFS/exFAT /dev/sda2 1126400 614402047 613275648 292,4G 7 HPFS/NTFS/exFAT /dev/sda3 614402048 1934778367 1320376320 629,6G 83 Linux /dev/sda4 1934778368 1953523711 18745344 9G 82 Linux swap / Solaris Disk /dev/sdb: 465,8 GiB, 500107862016 bytes, 976773168 sectors Disk model: WDC WD5000BPVT-2 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: 68AA8DA8-7690-11EB-BBA1-F43909337E6E Device Start End Sectors Size Type /dev/sdb1 40 1063 1024 512K FreeBSD boot /dev/sdb2 1064 968884255 968883192 462G FreeBSD UFS /dev/sdb3 968884256 976773127 7888872 3,8G FreeBSD swap

Meinen Linux-Grub möchte ich gerne behalten und daher habe ich in /etc/grub.d/40_custom folgendes:
menuentry "FreeBSD" { insmod bsd insmod ufs2 insmod part_gpt set root=(hd1,gpt1) search --no-floppy --set --fs-uuid 68ab72c4-7690-11eb-bba1-f43909337e6e kfreebsd /boot/loader }
Die UUID habe ich mir mit blkid /dev/sdb1 geholt
Dann führe ich grub-mkconfig -o /boot/grub/grub.cfg aus. Linux und Win10 wird gefunden, aber er meckert ein "unbekanntes Linux auf /dev/sdb2" an.
Natürlich kann ich BSD auch nicht booten. Die UUID findet er nicht und das "set root =(hdx,gptx)" existiert nicht (keine Partition gefunden)
Ich probiere und lese nun seit Tagen, komme aber keinen Schritt weiter.
Kann mir wer helfen?
Gruß Jörg
 

Rosendoktor

Well-Known Member
Was ist denn auf /dev/sdb1 drauf? Der FreeBSD "bootcode" oder sowas? Wenn Du mit Grub bootest brauchst Du den nach meiner Erinnerung gar nicht und solltest von /dev/sdb2 booten, also die UUID vom UFS Filesystem da drauf in der "search" Anweisung angeben. Alternativ nach "--file /boot/loader" suchen statt nach UUID. Oder einfach per "chainload" den FreeBSD bootloader.

Ist aber jetzt so halb geraten, Legacy Boot mache ich nicht mehr und der alte grub.cfg Code dazu ist auch weg...

Wo ist überhaupt Grub installiert? Da sollte wenn Du von gpt bootest eine "bios-grub" Partition (1MB) irgendwo sein, die sehe ich da aber nirgends.
 

devland

Member
Ist diese kurze Version schon mal getestet worden (sofern Legacy boot gewählt ist)?
menuentry "FreeBSD" {
set root='(hd1,gpt2)’
kfreebsd /boot/loader
}
Ggf. noch mit insmod ufs2. hd0 ist ja die Windows-Platte im Grub, stimmt's? Dann müsste hd1 in der Tat die 500 GB BSD Festplatte sein. Wenn ich richtig sehe, ist gpt1 die boot Partition, gpt2 müsste dann für root stehen. Zumindest sieht ja Grub sdb2, das ist schon mal ein Anfang (ob Legacy boot gewählt ist müsste noch geklärt werden).
 

Joerg66

Member
Vielen Dank für eure Tips!
@datasmurf os-prober scheint mit dem Befehl "grub-update" aufgerufen zu werden, denn die Ausgabe ist exakt die selbe.
Funktioniert hat nun folgender
 

Joerg66

Member
sorry, versehendlich abgeschickt und man kann wohl leider nicht bearbeiten. Also, 40_custom sieht nun so aus:
menuentry "FreeBSD" { insmod part_gpt set root=(hd1,1) search --no-floppy --set --file /boot/loader kfreebsd /boot/loader }
Vielen Dank nochmal!!
 

devland

Member
Erstmal Glückwunsch zur Lösung! Mal aus Neugier: Ginge auch die Kurzversion ggf. mit der gpt1 o. 2 Angabe? Die Platte ist ja nicht verschlüsselt und / ist auf der zweiten Partition. Normalerweise "sieht" dann Grub2 auch die Bootpartition, selbst wenn diese eine separate Partition hat. Problematisch wird es erst dann, wenn Partitionen verschlüsselt sind. Naturgemäß weiß dann Grub nicht, was dort vorhanden ist (ohne vorheriges Entschlüsseln).
 

Joerg66

Member
Danke.
Was grub da ausgibt, ist mir eh ein Rätsel. Der findet nicht nur ein sdb1 sondern auch ein sdb5.
Ob gpt1 oder gpt2 ginge weiß ich nicht und will auch nicht probieren, bin froh das es läuft und Xorg und xfce4 und xdm und die deutsche Tastatur :-)
@bluescreen Ich konnte ja FreeBSD nicht starten, wie soll ich "refind" dann benutzen? Oder verstehe ich da was falsch?
 

Rosendoktor

Well-Known Member
Danke.
Was grub da ausgibt, ist mir eh ein Rätsel. Der findet nicht nur ein sdb1 sondern auch ein sdb5.
Ob gpt1 oder gpt2 ginge weiß ich nicht und will auch nicht probieren, bin froh das es läuft und Xorg und xfce4 und xdm und die deutsche Tastatur :-)
@bluescreen Ich konnte ja FreeBSD nicht starten, wie soll ich "refind" dann benutzen? Oder verstehe ich da was falsch?
Hauptsache, es läuft. Warum, egal. :)
rEFInd ist ein EFI Bootmanager, der das System nach EFI Loadern durchsucht, diese hoffentlich rEFIndet und dann als Bootoption dem Benutzer anbietet. Den kann man von jedem Betriebssystem aus in die EFI Partition installieren. Der soll im Wesentlichen die meist grauslig schlechten Bootmanager der Firmware ersetzen. Da Du aber wohl Legacy Boot machst kannst Du damit eh nichts anfangen.
 

Joerg66

Member
Ah ja. Ja, mit UEFI oder EFI kenne ich mich gar nicht aus. Wenn ich das mal an hatte, hatte ich mit Linux immer Probleme beim Installieren.
War es nicht so, das Microsoft das mal erfunden hatte, damit auf der Hardware nurWin läuft und nichts anderes?
 

Rosendoktor

Well-Known Member
War es nicht so, das Microsoft das mal erfunden hatte, damit auf der Hardware nurWin läuft und nichts anderes?
So geht die Urban Legend... :) Nein, Microsoft ist hier mal nicht schuldig. UEFI selbst ist lediglich ein moderner Nachfolger des veralteten BIOS. Was Du meinst ist Secure Boot. Hier hat es nur Microsoft geschafft, dass seine Keys standardmässig in jedem Mainboard hinterlegt sind. Die freien Systeme haben das selbst versemmelt. Und so müssen nun eben alle freien Betriebssysteme ihren Bootloader von Microsoft prüfen und signieren lassen. Dafür aber gibt's ein dediziertes Verfahren, jeder der will kann das machen lassen, auch Privatleute die z.B. ihren Kernel selbst kompilieren (die meisten von denen werden aber die Microsoft Keys aus dem UEFI entfernen und eigene Keys verwenden, so denn das Board das erlaubt, wenn nicht, ist es Schrott).
 
Oben