Kein Kernel nach freebsd-update auf nur ZFS-System

mousaka

getting older
Hallo

Stehe gerade wie der Esel vor dem Berg. :grumble:

Habe nach der Anleitung von Beat eine 8.0-BETA2 auf ZFS only aufgesetzt. Soweit alles Bestens.

Jetzt wollte ich natürlich auf -BETA3 updaten und habe dazu freebsd-update verwendet:

Code:
# freebsd-update upgrade -r 8.0-BETA3
#freebsd-update install
nach dem verlangten Reboot findet der Loader leider den Kernel nicht mehr.

Scheint wohl an GPT zu liegen, leider weiss ich nicht nach welchem Stichwort ich suchen muss.

Code:
OK lsdev
disk0p1
disk0p2

Hat jemand einen Tipp?

mousaka
 
Ja du hast per freebsd-update ein Userland installlier das ohne ZFS_LOADER_SUPPORT=yes compiliert wurde deswegen kann dein loader kein ZFS mehr lesen.

Abhilfe sollte es schaffen, wenn du /boot/loader durch eine loader Version mit ZFS Support ersetzt.

Am saubersten wäre es auf einer anderen FreeBSD Installation diese Festplatte zu mounten,
dort make buildworld aus zu führen (mit entsprechender make.conf) gefolgt von make installworld DESTDIR=/dein/mount/point.

Dannach ist wieder alles in Ordnung. Ist ein wirklich ärgerlicher Fehler, aber du kannst dir sicher sein nicht der einzige zu sein er es auf diese Weise gelernt hat. Benutzt besser nurnoch Sourcecode Updates.
 
Ich glaube nicht, dass es am ZFS_LOADER_SUPPORT liegt, denn ich habe den GENERIC-Kernel von 8.0-BETA2 für die ursprüngliche Installation verwendet.

Ich vermute den Fehler eher im Zusammenhang mit GPT als mit ZFS, da ja /boot nicht auf einem ZFS-Filesystem liegt.
Die Unterstützung von GPT für Boot-Medien ist ja neu mit 8.0, und da freebsd-update zum Basis-System gehört, erwarte ich da eigentlich eine saubere Funktionsweise. Leider scheint freebsd-update nichts mit dem pmbr anfangen zu können.
freebsd-update sollte als im Minimum den pmbr bemerken und dann seinen Dienst verweigern.

Ist ein wirklich ärgerlicher Fehler, aber du kannst dir sicher sein nicht der einzige zu sein er es auf diese Weise gelernt hat.
Naja, ich wollte damit meine ersten Versuche mit 8.0, GPT und ZFS machen, von dem her war noch nicht wirklich viel auf der Kiste. Ist also durchaus verkraftbar nochmals alles platt zu machen.

Benutzt besser nur noch Sourcecode Updates
Ich habe auf einigen System freebsd-update seit 6.0 verwendet und ein System von 6 auf 7 gewechselt ohne irgendwelche Probleme.
Für eher schwachbrüstige Rechner finde ich die Lösung trotzdem sehr angenehm, auch wenn sie für meinen gewünschten Anwendungsfall im Moment nicht geeigent scheint.

mousaka
 
mousaka: Wo liegt /boot dann? disk0p1 ist die bootpartition die nur gpt(zfs)boot enthalten sollte, disk0p2 ist der zpool.
 
Unter /disk0p1/boot

Ich schau da noch nicht ganz durch :eek: Ich bin davon ausgegangen, dass /disk0p1 eine spezielle GPT-Boot-Partition ist und erst /disk0p2 ein ZFS-Dateisystem enthält.
Man kann doch auch UFS und GPT verwenden?
Darum gehe ich davon aus, dass es am GPT scheitert und nicht an ZFS. Lasse mich da aber selbstverständlich gerne eines besseren belehren. ;)

Ich komme nicht in die Phase 3 /boot/loader (gemäss Handbuch) da der Kernel nicht gefunden wurde. Ein
Code:
OK load /disk0p1/boot/kernel/opensolaris.ko
OK load /disk0p1/boot/kernel/zfs.ko
funktioniert auf jedenfalls genausowenig wie
Code:
OK boot /disk0p1/boot/kernel
Am Prompt (OK) funktioniert nur die Hilfe mit ?; das ausführlichere help wird nicht gefunden.

mousaka
 
GPT ist nur ein Partionsschema und als solches nix besonders. Davor kommt ein Pseudo-MBR damit der PC beim booten glücklich wird.

Der Bootvorgang läuft wie folgt ab auf einem PC mit BIOS:
- Das Netzteil wird angeschaltet
- Das BIOS läd den Bootsektor des pseudo MBR und führt ihn aus
- Dieser führt dann die GPT Bootpartition (gptzfsboot) aus
- Diese läd vom ZFS Bootfilesystem den FreeBSD loader
- Dieser läd den Kernel.

Loader kann noch nicht auf den Kernel zugreifen, weil er ihn ja laden soll. Deswegen muss loader selbst ZFS unterstüzten. Leider ist das nicht standardmäßig aktiviert. Dazu muss man LOADER_ZFS_SUPPORT=yes setzten beim compilieren von loader (als Teil von world oder bloß loader). Mit freebsd-update hast du dir also einen loader ohne zfs support installiert.

MfG Crest
 
Dein Erklärung ist für mich schlüssig. Mich stört irgendwie, dass er bereits ZFS (gptzfsboot) braucht bevor er die dazu nötigen Module (opensolaris und zfs) laden kann. Klingt für mich nicht gerade einleuchtend. :confused:

Erzeugt dann
Code:
# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad0
einen Loader mit ZFS-Unterstützung?
Ich habe ja nicht selbst kompiliert bei der ursprünglichen Installation mit BETA2. :confused:

Falls ja, könnte ich ja evtl. vor dem Reboot die obige Zeile ausführen, wobei ich wohl den alten Loader (mit ZFS-Unterstützunh) bekommen würde, nach einem erneuten freebsd-update müsste man dann dies noch mit dem neuen Loader (also BETA3) erneut ausführen.

mousaka
 
Zurück
Oben