Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Update Debian Lenny to Debian Squeeze
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.
Vorbereitung
Brauchbare Tools
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
Backup / Recovery
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.
Check package manager
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.
- Prüfe mit
aptitude
oderapt-get
, dass alle Pakete ordnungsgemäß installiert sind!
aptitude
- Setze alle Pakete auf install mit
aptitude
for a in $(aptitude search "~ahold" | sed 's/....//' | sed 's/ .*//'); do aptitude unhold $a;done
- Setze alle Pakete auf install mit
dpkg
dpkg --get-selections | grep hold echo package_name install | dpkg --set-selections
- Leere Paketarchiv
apt-get clean
Backups erstellen
- Liste der installierten Pakete
dpkg --get-selections "*" > ~/squ_update_${HOSTNAME}_curr-pkgs.txt
- Die wichtigsten Ordner sind:
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
- WWW
- Home
- Mysql
- /root
- und andere
Als Beispiel sind hier die netcat Befehle für eine komplette Kopie
- System, dass aktualisiert werden soll
dd bs=4M if=/dev/sda | buffer -s 512k -S 100m | netcat target-ip 9000
- Ziel der Sicherungsdateien
netcat -l -p 9000 | dd bs=4M of=squ_update_${HOSTNAME}_$(date +%Y%m%d%H%M%S)_sda.ddimg
Problem-Pakete entfernen
- Wir starten nun die Aufname unserer Shell-Session
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
- Später kann man die Aufname mit dem folgenden Befehl abspielen.
scriptreplay ~/upgrade-squeeze.time ~/upgrade-squeeze.script
- Löschen von Problempakete
apt-get purge splashy
Paketsourcen
Die folgenden Anweisungen betreffen die Datei /etc/apt/sources.list
und alle Dateien innerhalb des Ordners /etc/apt/sources.list.d
- proposed-updates muss entfernt werden
egrep -R "^[^#]*proposed-updates" /etc/apt/sources.list*
- backports sollten deaktiviert werden, da die bisher genutzten Versionen in lenny-backports höchstwahrscheinlich denen in squeeze entsprechen.
egrep -R "^[^#]*lenny-backports" /etc/apt/sources.list*
Besitzt man backport Pakete, kann es zu Problemen beim Update kommen!
- lenny durch squeeze austauschen
sed -i 's/lenny/squeeze/' /etc/apt/sources.list*
Update durchführen
touch ~/squ_update_starttime
rm -vf /etc/xen/auto/*
Minimalupdate
- Prüfen, ob ausreichend Speicher auf dem System vorhanden ist. Addiere was heruntergeladen werden muss mit dem zusätzlich verbrauchten Speicherplatz.
apt-get update apt-get -o APT::Get::Trivial-Only=true dist-upgrade
- Minimales system 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"
Update Kernel und udev
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.
- Installation des neuen Kernel
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.
- Zur Sicherheit führen wir noch einmal die Grub-Konfiguration aus.
update-grub
- Installation von udev
apt-get install udev
- Prüfen auf neue Konfigurationsdateien
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
Distributionsupdate
- Aufnahme für die Shell
script -t 2>~/upgrade-squeezestep1.time -a ~/upgrade-squeezestep1.script
touch ~/squ_update_dist
- Update starten
apt-get dist-upgrade
- Prüfen auf neue Konfigurationsdateien
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
Grub 2 aktivieren
- Zur Sicherheit schauen wir uns das bootlog auf Ungereimtheiten an.
less /var/log/dmesg
- Grub2 in den MBR schreiben
upgrade-from-grub-legacy
System neu starten
shutdown -r now
- Alte grub Konfigurationsdateien entfernen
rm -f /boot/grub/menu.lst*
- XEN-Kernel mit Hypervisor als erstes im Grub-Menü
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
- DomU Systeme nicht im Grub-Menü auftauchen lassen (
/etc/default/grub
)
# Disable OS prober to prevent virtual machines on logical volumes from appearing in the boot menu. GRUB_DISABLE_OS_PROBER=true
- Grub-Menü neu aufbauen
update-grub
Ressources:
Update abschließen
Man kann nun alle Pakete, die obsolet sind entfernen.
apt-get clean && apt-get autoremove aptitude
Problemlösungen
Hilfe bei Problemen findet man im Internet und hier.