Zfs, Mbr, grub2 - mountroot failed

Legorado

Well-Known Member
Hallo zusammen,

nach langer BSD Abstinenz (ca. FreeBSD 5) möchte ich jetzt wieder FreeBSD nutzen. Als Einstieg habe ich mir einen Server in einer VirtualBox mit ZFS installiert und meinen Blog auf diesen kopiert, soweit hat das alles gut geklappt. Dabei habe ich etwas den Umgang mit ZFS und dem aktuellen FreeBSD 11.0 gelernt.

Auf meinem Desktop sah es bevor ich anfing so aus, alles unter MBR Tabelle.
ada2s1 - linux swap
ada2s2 - linux ext 4
ada2s3 - linux ext 4 (aktuelles system)
ada2s5 - linux ext 4 data

Ich habe dann die ersten beiden Partitionen gelöscht und eine FreeBSD Partition erstellt. Darin dann ein BSD label mit 2 slices, sodass dann folgendes heraus kam.

ada2s1 - freebsd
ada2s1a - freebsd-zfs
ada2s1b - freebsd-swap
ada2s3 - linux ext4 system
ada2s5 - linux ext4 data

Dann habe ich mich an holgerw Anleitung und https://wiki.freebsd.org/RootOnZFS/ZFSBootPartition orientiert und das System installiert. gpart bootcode .... ada2 hab ich nicht aufgeführt, da es mir ja dann mein grub2 zerschossen hätte.
zroot 1,56G 32,1G 96K /zroot
zroot/ROOT 1,56G 32,1G 96K none
zroot/ROOT/default 1,56G 32,1G 1,56G legacy

Mit folgendem Eintrag startet der FreeBSD Kernel doch beim root filesystem mounten schlägt es fehl:
menuentry "FreeBSD 11.0" {
insmod zfs
search -s -l zroot
kfreebsd /ROOT/default@/boot/kernel/kernel
kfreebsd_module_elf /ROOT/default@/boot/kernel/opensolaris.ko
kfreebsd_module_elf /ROOT/default@/boot/kernel/zfs.ko
set kFreeBSD.vfs.root.mountfrom=zfs:zroot/ROOT/default
}

in boot/loader.conf sind folgende Einträge
zfs_load="YES"
vfs.root.mountfrom="zfs:zroot/ROOT/default"

Versuche des FreeBSD loader unter /boot/loader aufzurufen sind föllig gescheitert, da er diesen nicht finden konnte. hier einer meiner Versuche mit Grub

menuentry "FreeBSD 11.0 loader" {
insmod zfs
set root='(hd2,msdos1a)'
kfreebsd /boot/loader
}

So das war erstmal, ich hoffe es schaut einigermaßen ok aus, hatte jetzt keine Vorschau mehr verfügbar. Ich denke sehr weit kann der Weg zum booten nicht mehr sein, doch ich komme hier nicht weiter.

PS: Von linux aus kann ich einfach auf meinen pool zugreifen, das funktioniert sehr gut.

Gruß
Sebastian
 
ich wäre mir gar nicht so sicher, ob der Kernel in Slices nach einem ZFS Pool sucht. Das ist ein sehr unübliches Setup. Lass mal die Slices weg und installier direkt in eine Partition.
 
Das war wohl der ausschlaggebende Punkt. Folgendes hat mein Problem gelöst.

0. dd dump von sdc ;-)
1. MBR nach GPT konvertiert mittels Linux Live CD und gdisk
- freebsd slice Partition entfernt
- bios boot Partition angelegt und grub neu nach /dev/sdc installiert
2. Kontrolle Funktionsfähigkeit des linux systems
3. Installation Freebsd mit freebsd-boot, freebsd-zfs und freebsd-swap, so sahs dann aus.
Code:
sudo fdisk -l /dev/sdc
Medium /dev/sdc: 111,8 GiB, 120034123776 Bytes, 234441648 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 512 Bytes
I/O Größe (minimal/optimal): 512 Bytes / 512 Bytes
Typ der Medienbezeichnung: gpt
Medienkennung: 19537006-608D-42D1-A5C5-52D890492098

Gerät          Start      Ende Sektoren Größe Typ
/dev/sdc1       2048      4095     2048    1M BIOS boot
/dev/sdc2   78258176 123314175 45056000 21,5G Linux filesystem
/dev/sdc3  123314176 184756223 61442048 29,3G Linux filesystem
/dev/sdc4       4096      5119     1024  512K FreeBSD boot
/dev/sdc5       5120  78258175 78253056 37,3G FreeBSD ZFS
/dev/sdc6  184756224 193144831  8388608    4G FreeBSD swap
Die Reihenfolge ist nun etwas getauscht, doch momentan trau ich mich nicht diese zu ändern, vielleicht ein anderes mal, jetzt erstmal weiter damit arbeiten.

Bootloader installiert:
Code:
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 4 ada2

--> FreeBSD bootet mittels eigenem loader, doch jetzt natürlich kein Grub mehr vorhanden.

4. Linux LiveCD, grub neu nach /dev/sdc installiert.
5. Linux gebootet und grub Menü so erweitert:
Code:
menuentry "FreeBSD 11.0" {
  insmod zfs
  search -s -l zroot
  kfreebsd /ROOT/default@/boot/kernel/kernel
  kfreebsd_module_elf /ROOT/default@/boot/kernel/opensolaris.ko
  kfreebsd_module_elf /ROOT/default@/boot/kernel/zfs.ko
  set kFreeBSD.vfs.root.mountfrom=zfs:zroot/ROOT/default
}
Ein laden über /boot/loader habe ich nicht hinbekommen, sollte nach meinem Verständnis aber über /dev/sdc4 (freebsd-boot wohin auch gpart bootcode installiert hat) funktionieren.

Wenn ich wie jetzt von Grub aus direkt den Kernel lade brauche ich die freebsd-boot Partition gar nicht würde ich meinen?

Jetzt bin ich erstmal froh dass ich nun beide System starten kann, als nächstes wird mein Linux Software Raid auf zfs migriert, sodass ich von beiden System auf meine Daten zugreifen kann. In Zukunft wäre es doch sicherlich reizvoll das ganz so ähnlich anzulegen.

Code:
sdc1   bios-boot
sdc2   grub stand alone
sdc3   linux-swap
sdc4   freebsd-swap
sdc5   zpool
   zpool/BSD
   zpool/Linux
   zpool/....
Wie seht ihr das, macht das Sinn oder ist das eher keine gute Idee? Mit einem weiteren zpool für die Daten sollte man somit ein für alle mal das Partitionierungsproblem gelöst haben oder?

Gruß
Sebastian
 
Ein laden über /boot/loader habe ich nicht hinbekommen, sollte nach meinem Verständnis aber über /dev/sdc4 (freebsd-boot wohin auch gpart bootcode installiert hat) funktionieren.
du musst vermutlich chainloaden, wissen tu ich das aber auch nicht.

Wenn ich wie jetzt von Grub aus direkt den Kernel lade brauche ich die freebsd-boot Partition gar nicht würde ich meinen?
richtig.

Bootloader installiert:
du kannst auch -b weglassen :-) Fürs nächste mal.
Code:
gpart bootcode -p /boot/gptzfsboot -i 4 ada2

Mit einem weiteren zpool für die Daten sollte man somit ein für alle mal das Partitionierungsproblem gelöst haben oder?
mehr oder weniger. Die meisten Linuxe lassen sich aber nur mit Handarbeit zum starten von ZFS bewegen. Gehen tut's schon, musst nur ggf. dann und wann was reparieren, weil die ganzen Tools ja auch nicht darauf achten werden.[/QUOTE]
 
Zurück
Oben