FreeBSD 5.4 zu 7.2 in 6h via SSH
Diese Seite beschreibt in kurzen Worten das Upgrade einer 3 Jahre alten Maschine mit FreeBSD 5.4 auf ein aktuelles FreeBSD 7.2 mittels SSH ohne Konsole. Ja ok ... 7.2 ist zwar schon alt, war aber zur Zeit wo ich es gemacht habe Brand aktuell
Jedoch kann es bei einem solchen Update ungeheuer knallen, von daher sollte man 100% Sicher stellen, dass die Maschine zur Zeit wirklich nicht benutzt wird
Wichtige Voraussetzungen
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
server# cd /usr/src
server# make update
server# make buildkernel
server# make installkernel
server# make buildworld
server# make installworld
server# mergemaster -p
server# mergemaster
server# sync
server# 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
server# cd /usr
server# rm -rf /usr/src /usr/obj
server# cvsup -h host /usr/share/examples/cvsup/stable-supfile
danach muss man zuerst das config Programm für den Kernel erneuern
server# cd /usr/src/usr.sbin/config
server# make clean
server# make
server# make install
danach macht man das Update wie oben und rebootet wieder ...
server# cd /usr/src
server# make buildkernel
server# make installkernel
server# make buildworld
server# mergemaster -p
server# make installworld
server# rm -rf /etc/rc.d /etc/defaults /etc/periodic
server# mergemaster -i
server# sync
server# 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
server# cd /usr
server# rm -rf /usr/src /usr/obj
server# cvsup -h host /usr/share/examples/cvsup/stable-supfile
Nun nur noch einmal alles durch den Kompiler jagen
server# cd /usr/src
server# mergemaster -p
server# make buildworld
server# make installworld
server# make buildkernel
server# make installkernel
server# rm -rf /etc/rc.d /etc/defaults /etc/periodic
server# mergemaster -i
server# sync
server# 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
server# cd /usr
server# rm -rf /usr/ports
server# cvsup -h host /usr/share/examples/cvsup/ports-supfile
server# pkg_delete -f portupgrade\*
server# cd /usr/ports/ports-mgmt/portupgrade
server# make install
server# 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 :
server# uptime
1:53PM up 1214 days, 9:50, 1 user, load averages: 0.06, 0.42, 0.71
server# 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 :
server# 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
server# 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 :
server# 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