Wolfgang Hurst, Tuesday 08 September 2009 - 13:34:05
FreeBSD Upgrade 5.4 auf 7.2 in 6 Stunden per SSH
Diese Seite beschreibt in kurzen Worten das Upgrade einer 3 Jahre alten Maschine mit FreeBSD 5.4 auf ein aktuelles FreeBSD 7.2
Jedoch kann es bei einem solchen Update ungeheuer knallen, von daher sollte man Sicherstellen das die Maschine zur Zeit nicht wirklich benutzt wird
Wichtige Vorraussetzungen
Alle Schritte sind via SSH durchgeführt worden. Es ist kein Zugriff auf die Hardware vor Ort nötig
Bevor man anfängt sollte man den Benutzer mit dem man online geht und den root Benutzer auf dessen Loginshell überprüfen und ggf. zurück setzen. Alles was unter /usr/local liegt könnte nach dem Upgrade erst einmal nicht mehr laufen. Das wäre dann schlecht für Benutzer die die bash z.b. verwenden. Man muss jedoch nur die Personen ändern die das Update machen
Aus der /etc/make.conf sollten alle Kernel Einstellungen und Compilersettings auskommentiert werden. Das kann und wird Probleme Verursachen. Die Optimierungen können später wenn das 7'er drauf ist noch nach gezogen werden
Upgrade des aktuellen Systems
Als erstes Updated man den Source Tree der aktiv laufenden Version. Das ist nötig damit man auf den letzten Stand der aktuellen Version ist
cd /usr/src make update make buildkernel make installkernel make buildworld make installworld mergemaster -p mergemaster sync reboot
Upgrade auf 6.x-STABLE
Man editiert die Datei /usr/share/examples/cvsup/stable-supfile und trägt dort die 6 ein und holt sich das System ganz frisch ... bitte nicht updaten, das geht schief ... sondern frisch holen
cd /usr rm -rf /usr/src /usr/obj cvsup -h host /usr/share/examples/cvsup/stable-supfile
danach muss man zuerst das config Programm für den Kernel erneuern
cd /usr/src/usr.sbin/config make clean make make install
danach macht man das Update wie oben und rebootet wieder ...
cd /usr/src make buildkernel make installkernel make buildworld mergemaster -p make installworld rm -rf /etc/rc.d /etc/defaults /etc/periodic mergemaster -i sync reboot
Upgrade auf 7.2-STABLE
So nun haben wir das 6.x drauf ... das gleiche macht man nun mit der 7'er ...
Man editiert wieder die Datei /usr/share/examples/cvsup/stable-supfile und trägt dort die 7 ein und holt sich wieder ein frisches System
cd /usr rm -rf /usr/src /usr/obj cvsup -h host /usr/share/examples/cvsup/stable-supfile
Nun nur noch einmal alles durch den Kompiler jagen
cd /usr/src mergemaster -p make buildworld make installworld make buildkernel make installkernel rm -rf /etc/rc.d /etc/defaults /etc/periodic mergemaster -i sync reboot
Ports nachziehen
Wenn nun das System wieder hochkommt muss man sich an die Ports machen. Um das ganze zu beschleunigen sollte man alle Ports runterwerfen die keine speziellen System Konfigurationen verwenden. Dazu zählen zum Beispiel bash, wget, screen, lynx, mc und so weiter. Die kann man wenn man will als Binary Package drauf ziehen um Zeit zu sparen.
Das Portupgraden ist auf jeden Fall sehr fummelig, da teilweise die Packete umbenannt worden sind, oder einfach nicht mehr existieren. Jedes einzelne Packet muss entsprechend einzelnd begutachtet werden.
Ein portupgrade -f hilft da nicht unbedingt ...
Als ersters holt man sich die neusten Ports und ersetzt portupgrade ganz brutal
cd /usr rm -rf /usr/ports cvsup -h host /usr/share/examples/cvsup/ports-supfile pkg_delete -f portupgrade\* cd /usr/ports/ports-mgmt/portupgrade make install pkgdb -F
Danach macht man mit den Paketen weiter
Berühmte Letzten Worte
Habe heute zwei Maschinen auf diese Weise geupdated ... eine steht in München die andere in Düsseldorf ... ich selbst sitze in Frankfurt ... und alles hat geklappt ...
Vorher :
# uptime 1:53PM up 1214 days, 9:50, 1 user, load averages: 0.06, 0.42, 0.71 # uname -a FreeBSD XXX 5.4-STABLE FreeBSD 5.4-STABLE #1: Wed May 25 01:26:44 CEST 2005 root@XXX:/usr/obj/usr/src/sys/SMP i386
Zwischendurch :
# uname -a FreeBSD XXX 5.5-STABLE FreeBSD 5.5-STABLE #2: Tue Sep 8 13:03:39 CEST 2009 root@XXX:/usr/obj/usr/src/sys/SMP i386
# uname -a FreeBSD XXX 6.4-STABLE FreeBSD 6.4-STABLE #0: Tue Sep 8 14:51:44 CEST 2009 root@XXX:/usr/obj/usr/src/sys/GENERIC i386
Nachher :
# uname -a FreeBSD XXX 7.2-STABLE FreeBSD 7.2-STABLE #0: Tue Sep 8 20:06:07 CEST 2009 root@XXX:/usr/obj/usr/src/sys/GENERIC i386