Es gibt einige Update Howtos im Netz. Nachdem ich aber auch die offizielle Anleitung gelesen habe, die ich allen Updatewilligen ans Herz legen möchte, empfand ich die meisten anderen Howtos nicht mehr ausreichend detailliert. Andererseits war das offizielle Dokument zu umfangreich, um es beim Update mehrere Systeme als eine Art Checkliste zu benutzen. Daher habe ich dieses eigene Howto geschrieben, welches umfangreich die Schritte unter Sicherheitsvorkehrungen beschreibt.
Während des Updates werden neue Konfigurationsdateien installiert. Ich empfehle diese zu nutzen und die eigenen Änderungen zu übertragen. Dafür bietet sich meines Erachtens vimdiff an. Wenn man nicht direkt vor dem System sitzt, sondern z.B. ein Update per SSH durchführt, sollte man dieses Update innerhalb von screen machen.
aptitude install vimdiff screen
Vor dem Update muss man in jedem Fall ein Backup machen und alles bereit legen, was für ein Recovery benötigt. Doch vor dem Backup müssen einige Dinge beachtet werden.
Bevor wir die Backup-Dateien an einen sicheren Ort kopieren, müssen wir die Paketliste prüfen uns sichern. Sie muss vor dem Update sauber sein.
aptitude
oder apt-get
, dass alle Pakete ordnungsgemäß installiert sind!aptitude
aptitude
for a in $(aptitude search "~ahold" | sed 's/....//' | sed 's/ .*//'); do aptitude unhold $a;done
dpkg
dpkg --get-selections | grep hold echo package_name install | dpkg --set-selections
apt-get clean
dpkg --get-selections "*" > ~/squ_update_${HOSTNAME}_curr-pkgs.txt
cd / tar czf squ_update_${HOSTNAME}_$(date +%Y%m%d%H%M%S)_etcplus.tar.gz /etc /var/lib/dpkg /var/lib/apt/extended_states /var/lib/aptitude/pkgstates ~/squ_update_${HOSTNAME}_curr-pkgs.txt cd
Als Beispiel sind hier die netcat Befehle für eine komplette Kopie
dd bs=4M if=/dev/sda | buffer -s 512k -S 100m | netcat target-ip 9000
netcat -l -p 9000 | dd bs=4M of=squ_update_${HOSTNAME}_$(date +%Y%m%d%H%M%S)_sda.ddimg
script -t 2>~/upgrade-squeezestep.time -a ~/upgrade-squeezestep.script
Mit
exit
beendet man die Aufname!
Wenn man zwischendurch sich anschauen möchte, was man gemacht hat, wechselt man in eine andere Shell und führt den folgenden Befehl aus.
less -R ~root/upgrade-squeeze.script
scriptreplay ~/upgrade-squeeze.time ~/upgrade-squeeze.script
apt-get purge splashy
Die folgenden Anweisungen betreffen die Datei /etc/apt/sources.list
und alle Dateien innerhalb des Ordners /etc/apt/sources.list.d
egrep -R "^[^#]*proposed-updates" /etc/apt/sources.list*
egrep -R "^[^#]*lenny-backports" /etc/apt/sources.list*
Besitzt man backport Pakete, kann es zu Problemen beim Update kommen!
sed -i 's/lenny/squeeze/' /etc/apt/sources.list*
touch ~/squ_update_starttime
rm -vf /etc/xen/auto/*
apt-get update apt-get -o APT::Get::Trivial-Only=true dist-upgrade
apt-get upgrade
/etc
an, die seit unseren ersten Schritten verändert wurden. Diese Methode ist sicherer als mit less die Aufnahmedatei durch zuschauen. Dennoch empfiehlt es sich auch jene zu prüfen.
find /etc/ -type f -newer ~/squ_update_starttime
Einige Konfigurationsdateien werden erneuert. man sollte die alte Version behalten und nach dem erfolgreichen Beenden des Befehls diese mit vimdiff
auf Veränderungen prüfen. Man kann diese Dateien mit den folgenden Befehlen finden:
find /etc/ -iname "*dpkg-new" find /etc/ -iname "*old" find /etc/ -iname "*dpkg-dist" find /etc/ -iname "*dist"
touch ~/squ_update_kernel
Auf Grund von Veränderungen in den Kerneldefaults funktioniert das alte udev nicht mehr mit dem neuen Kernel und das neue udev nicht mehr mit dem alten.
apt-get install linux-image-2.6-flavor # amd64 oder 686 # für XEN Dom0 apt-get install linux-image-2.6-xen-amd64 xen-hypervisor-4.0-amd64 apt-get remove --purge xen-hypervisor-3.2-1-amd64 xen-utils-3.2-1 # für XEN DomU apt-get install linux-image-2.6.32-5-xen-amd64
Der Grund für die Umstellung auf die Installation eines ganzen Kernel-Images in einer XenU ist, dass ich im Python Konfigurations-Start-Skript (xm
) das Mounten der XenU-Rootpartition und Kopieren des aktuellen Kernels daraus implementieren möchte.
update-grub
apt-get install udev
find /etc/ -type f -newer ~/squ_update_kernel find /etc/ -iname "*dpkg-new" find /etc/ -iname "*old" find /etc/ -iname "*dpkg-dist" find /etc/ -iname "*dist"
modprobe
geändert. Es gibt beispielsweise die Option -o
nicht mehr.
Wenn man bonding bisher in der folgenden Form genutzt hat, um Netzwerkinterfaces zusammen zuführen, dann muss man die Einträge ändern.
Vorher:
# Multi VLAN interface # bond interface mit kalten fallback auto bond0 iface bond0 inet manual pre-up modprobe -v bonding -o bond0 mode=active-backup primary=eth0 miimon=100 up /sbin/ifconfig bond0 up post-up /sbin/ifenslave bond0 eth0 post-up /sbin/ifenslave bond0 eth1 post-down /sbin/ifconfig bond0 down post-down rmmod bond0
Hinterher:
# Multi VLAN interface # bond interface mit kalten fallback auto bond0 iface bond0 inet manual bond-primary eth0 bond-slaves eth0 eth1 bond-mode active-backup bond-miimon 100
Ohne einen Eintrag in dem Verzeichnis modprobe.d in der folgenden Art, gibt es beim Booten eine Fehlermeldung, die aber nur unschön ist.
cd /etc/modprobe.d cat > aliases-bond.conf alias bond0 bonding options bonding mode=1 arp_interval=2000 arp_ip_target=192.168.3.1 <CTRL-D>
Fehlermeldung, wenn der obrige Eintrag nicht vorhanden ist:
bonding: Warning: either miimon or arp_interval and arp_ip_target module parameters must be specified, otherwise bonding will not detect link failures! see bonding.txt for details.
Auch muss man sicherstellen, dass das Paket ifenslave-2.6
installiert ist.
apt-get install ifenslave-2.6
Jetzt sollte man das System mit dem neuen Kernel neu starten.
shutdown -r now # Für XEN DomU poweroff
script -t 2>~/upgrade-squeezestep1.time -a ~/upgrade-squeezestep1.script
touch ~/squ_update_dist
apt-get dist-upgrade
find /etc/ -type f -newer ~/squ_update_dist find /etc/ -iname "*dpkg-new" find /etc/ -iname "*old" find /etc/ -iname "*dpkg-dist" find /etc/ -iname "*dist"
System neu starten
shutdown -r now
less /var/log/dmesg
upgrade-from-grub-legacy
System neu starten
shutdown -r now
rm -f /boot/grub/menu.lst*
mv -i /etc/grub.d/50_linux /etc/grub.d/20_linux mv -i /etc/grub.d/20_linux_xen /etc/grub.d/10_linux_xen
/etc/default/grub
)# Disable OS prober to prevent virtual machines on logical volumes from appearing in the boot menu. GRUB_DISABLE_OS_PROBER=true
update-grub
Ressources:
Man kann nun alle Pakete, die obsolet sind entfernen.
apt-get clean && apt-get autoremove aptitude
Hilfe bei Problemen findet man im Internet und hier.