Benutzer-Werkzeuge

Webseiten-Werkzeuge


freebsd:upgrade_freebsd_13.2_zu_14.0

Upgrade FreeBSD 13.2 zu 14.0

https://www.freebsd.org/releases/14.0R/relnotes/

GIT installieren

> cd /usr/ports/devel/git && make clean && make config && make && make install && make clean

die neuesten SRC saugen

> cd /usr/src && rm -fr /usr/src/* /usr/src/.* && time git clone https://git.freebsd.org/src.git .
> less /usr/src/UPDATING

SRC auf die gewünschte Version umstellen

> cd /usr/src && make cleanworld && make clean && git switch releng/14.0 && time git pull && sh /usr/src/sys/conf/newvers.sh -v
/usr/src/sys/amd64/conf/MYKERNEL
#
# https://docs.freebsd.org/de/books/handbook/kernelconfig/
#
### die zu bauenden Kernel festlegen in /etc/src.conf
# KERNCONF=MYKERNEL GENERIC
 
include			GENERIC
 
ident			MYKERNEL
 
nooptions  		DDB			# Enable the ddb(4) kernel debugger
options 		NULLFS			# NULL filesystem
device			nvram			# Access to rtc cmos via /dev/nvram
#
device			speaker			# Play IBM BASIC-style noises out your speaker
envvar			hint.speaker.0.at="isa"
envvar			hint.speaker.0.port="0x61"
device			isa
#nodevice		isa			# Don't need to support an ISA bus
#
options 		ZFS			# NB: This depends on crypto, cryptodev and ZSTDIO
device			crypto			# core crypto support
device			cryptodev		# /dev/crypto for access to h/w
options 		ZSTDIO			# zstd-compressed kernel and user dumps
#
device			sg			# Linux SCSI passthrough
 
# PCI Ethernet NICs.
device			cxgb			# Chelsio T3 10 Gigabit Ethernet
device			cxgb_t3fw		# Chelsio T3 10 Gigabit Ethernet firmware
device			cxgbe			# Chelsio T4-T6 1/10/25/40/100 Gigabit Ethernet
device			cxgbev			# Chelsio T4-T6 Virtual Functions
device			mxge			# Myricom Myri-10G 10GbE NIC
device			oce			# Emulex 10 GbE (OneConnect Ethernet)
 
 
### oder in der /etc/src.conf mit der Variablen WITHOUT_MODULES abschalten
### WITHOUT_MODULES=    amr arcmsr ciss iir ips mly twa smartpqi tws aac aacraid ida mfi mlx mrsas twe agp cbb pccard cardbus wlan wlan_wep wlan_ccmp wlan_tkip wlan_amrr an ath ath_pci ath_hal bwi bwn ipw iwi iwn malo mwl ral wpi virtio hyperv
#
nooptions 		COMPAT_FREEBSD4		# Compatible with FreeBSD4
nooptions 		COMPAT_FREEBSD5		# Compatible with FreeBSD5
nooptions 		COMPAT_FREEBSD6		# Compatible with FreeBSD6
nooptions 		COMPAT_FREEBSD7		# Compatible with FreeBSD7
nooptions 		COMPAT_FREEBSD8		# Compatible with FreeBSD7
nooptions 		COMPAT_FREEBSD9		# Compatible with FreeBSD9
nooptions 		COMPAT_FREEBSD10	# Compatible with FreeBSD10
#nooptions		COMPAT_FREEBSD11	# Compatible with FreeBSD11
#nooptions		COMPAT_FREEBSD12	# Compatible with FreeBSD12
> cd /usr/src && make cleanworld && make -j$(sysctl -n hw.ncpu) buildkernel KERNCONF=MYKERNEL && make installkernel KERNCONF=MYKERNEL
> shutdown -r now

> cd /usr/src && make -j$(sysctl -n hw.ncpu) buildworld
> cd /usr/src && etcupdate -p
Conflicts remain from previous update, aborting.
> cd /usr/src && etcupdate resolve
> cd /usr/src && etcupdate -p

> cd /usr/src && make installworld
> cd /usr/src && etcupdate -B
Conflicts remain from previous update, aborting.
> cd /usr/src && etcupdate resolve
> cd /usr/src && etcupdate -B

> shutdown -r now

Den Kernel jetzt nocheinmal mit dem neuen User-Land bauen und installieren:

> cd /usr/src && make kernel KERNCONF=MYKERNEL
> reboot

SEHR WICHTIG BEI DIESEM UPGRADE !!!:

> pkg bootstrap -f

Upgrade von FreeBSD 13 auf 14 mit BIOS ohne UEFI

Das Problem kurz gefasst: Da ZFS auf Version 2.2 aktualisiert wurde, muss ein neuer gptzfsboot-Bootcode auf der FreeBSD-boot-Partition installiert werden.

Das Problem ausführlich beschrieben

Hier die (z.Z.) einzig richtige Reparatur-Anleitung: Upgrading to FreeBSD 14 - how to fix a broken BIOS bootcode

Viele Leute, die ZFS zroot verwenden, haben es geschafft, ihre FreeBSD-Systeme beim Upgrade von 13.2 auf die neue Version 14.0 aufgrund eines fehlerhaften BIOS-Bootcodes kaputt zu machen. In diesem Tutorial zeige ich Ihnen, wie Sie das beheben können, ohne eine Neuinstallation durchführen zu müssen.

Meiner bescheidenen Meinung nach fehlen den Versionshinweisen für FreeBSD 14.0 für viele Benutzer relevante Informationen, und mir gefällt nicht, wie mit diesen Problemen umgegangen wird. Auf dem Blog von Colin Percival, dem neuen FreeBSD Release Engineering Lead, schreibt er Folgendes:

Ich habe vor ein paar Tagen die Rolle des FreeBSD Release Engineering Lead übernommen und eine meiner ersten Aufgaben in dieser Rolle bestand darin, die FreeBSD 14.0-RELEASE-Ankündigung zu schreiben und zu versenden. (Um es klar zu sagen: Glen Barber hat die ganze Arbeit geleistet, um die Veröffentlichung fertigzustellen; die letzten Teile waren bereits auf Spiegel kopiert worden, als ich die Leitung übernommen habe.) FreeBSD 14 ist eine großartige Veröffentlichung, aber es gibt noch ein paar letzte-Minute-Probleme, die es verdienen, dokumentiert zu werden – wahrscheinlich irgendwo auf der FreeBSD-Website, aber ich kann viel schneller in meinem Blog posten und hoffe, dass wir diese später auf die FreeBSD-Website veröffentlichen.

Auch das ist meiner bescheidenen Meinung nach und bei allem Respekt einfach nicht gut genug. Ein Projekt sollte NIEMALS etwas veröffentlichen, bis ALLE Probleme vollständig und klar auf der Projektwebsite, in den Versionshinweisen, Mailinglistenbeiträgen usw. dokumentiert wurden. Das verheerendste Problem waren die Leute, die FreeBSD 13.2 auf einem BIOS-Setup und nicht auf EFI ausgeführt haben Es ist ihnen gelungen, ihre Systeme komplett kaputt zu machen, so dass sie nicht mehr booten konnten. Dieses Problem hätte mit den richtigen und relevanten Informationen sehr leicht vermieden werden können, aber stattdessen befassen sich die Versionshinweise nur mit Problemen im Zusammenhang mit EFI-Systemen, nicht mit BIOS-Systemen.

In den Versionshinweisen steht Folgendes:

Hinweis für Systeme, die über EFI booten und entweder Binär- oder Quell-Upgrades verwenden: Auf der MS-DOS-EFI-Systempartition (ESP) befinden sich eine oder mehrere Kopien des Bootloaders, die von der Firmware zum Booten des Kernels verwendet werden. Wenn das Root-Dateisystem ZFS ist, muss der Bootloader das Lesen aus dem ZFS-Bootdateisystem unterstützen können. Nach einem System-Upgrade, aber vor einem Zpool-Upgrade, muss der Bootloader auf dem ESP aktualisiert werden, da das System sonst möglicherweise nicht mehr bootfähig ist.

Nun bin ich sicher, dass die meisten Benutzer man gptzfsboot und man loader.efi ausgeführt haben oder sich vielleicht die FreeBSD-Online-Handbuchseiten angesehen haben, um die relevanten Informationen zu erhalten, aber für viele Benutzer war der Umgang mit „Bootcode“ bisher einfach nicht relevant. Wenn Sie FreeBSD mit dem Installationstool installieren, müssen Sie sich nicht um Bootcode-bezogene Dinge kümmern, unabhängig davon, ob Sie ein BIOS- oder EFI-Setup verwenden. Sie können FreeBSD also im Grunde schon seit vielen Jahren ausführen, ohne sich jemals etwas mit dem Bootcode zu befassen. Auf jeden Fall hilft es auch nicht wirklich, sich den Abschnitt BEISPIELE auf der Manpage für gptzfsboot anzusehen, es sei denn, Sie wissen wirklich, worum es geht.

Die Lösung (Can't find /boot/zfsloader)

Der Grund für das Problem bei BIOS-basierten Systemen liegt darin, dass gptzfsboot zum Booten von einem Dateisystem in einem ZFS-Pool verwendet wird. gptzfsboot wird in einer Freebsd-Boot-Partition einer GPT-partitionierten Festplatte mit gpart installiert. Wenn der Computer startet, versucht gptzfsboot, alle ZFS-Pools zu finden, die aus im BIOS sichtbaren Festplatten oder Partitionen bestehen. gptzfsboot sucht dann auf allen sichtbaren Festplatten und in erkannten unterstützten Partitionen für alle unterstützten Partitionsschematypen nach ZFS-Gerätebezeichnungen.

Da ZFS auf Version 2.2 aktualisiert wurde, muss ein neuer gptzfsboot-Bootcode auf der FreeBSD-boot-Partition installiert werden.

Was Sie also tun können, um das Problem zu lösen, ist:

  1. Booten Sie von einem FreeBSD 14-Installationsmedium
  2. wähle eine LiveCD/LiveDVD
  3. Melden Sie sich als Root an (kein Passwort erforderlich)

Lassen Sie sich alle Festplatten anzeigen:

> gpart show
=>       40  234441568  ada1                        GPT  (112G)
         40       1024                           1  freebsd-boot  (512K)
       1064        984                              - free -  (492K)
       2048    4194304                           2  freebsd-swap  (2.0G)
    4196352  230244352                           3  freebsd-zfs  (110G)
  234440704        904                              - free -  (452K)

Die Festplatte, auf der ich zroot in diesem Beispiel, ist ada1, daher verwende ich diese hier. Wenn Sie Ihr Zroot auf einem Spiegel betreiben, dann müssen Sie beide Festplatten finden.

Achten Sie darauf, dass Sie die richtigen Datenträger auswählen.

Dann installieren Sie einfach den neuen Bootcode vom Installationsmedium aus, mit dem folgenden Befehl (ändern Sie ada1 so, dass es zu Ihrer Festplatte passt, und achten Sie auch auf die Partitionsnummer, die mit der Option -i angesprochen wird – Sie benötigen die Partition „freebsd-boot“ (Dies ist in diesem Beispiel die erste Partition):

> gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1
partcode written to ada1p1
bootcode written to ada1

Wiederholen Sie dann den Befehl für die Spiegelplatten, falls vorhanden.

Erst danach darf die ZFS-Version auf der Partition angehoben werden!

> zpool upgrade zroot

Das ist es. Sie können die Maschine jetzt neu starten und Ihr Zpool funktioniert wieder.

alle Pakete upgraden

> pkg update -f
> pkg version -vl '<'

Alle installierten Binär-Pakete erneuern:

> pkg upgrade
Installed packages to be UPGRADED:
        ImageMagick7: 7.1.0.62_3 -> 7.1.0.62_9
        ...

> pkg autoremove

ab FreeBSD 14.0 wird der Ports-Tree per GIT geholt

alle Pakete anzeigen, die nicht die gleiche Versionsnummer tragen, wie das User-Land (das trifft meist auf veraltete Pakete zu) und deshalb neu gebaut werden sollten:

> pkg annotate -aS FreeBSD_version | grep -Fv 'Value: $(uname -U)'

Alle installierten Pakete neu bauen.

> portversion -v
> portmaster -af

Noch fehlende Pakete installieren (Beispiel).

> portmaster -yKgtRf -U shells/bash-static editors/vim sysutils/screen misc/mc archivers/rar misc/gnu-watch sysutils/zfsnap
/home/http/wiki/data/pages/freebsd/upgrade_freebsd_13.2_zu_14.0.txt · Zuletzt geändert: von manfred