Kapitel 4. Upgrades von vorherigen Veröffentlichungen

Inhaltsverzeichnis

4.1. Vorbereiten des Upgrades
4.1.1. Sichern aller Daten und Konfigurationsinformationen
4.1.2. Die Benutzer vorab informieren
4.1.3. Systemwiederherstellung vorbereiten
4.1.4. Vorbereiten einer sicheren Umgebung für das Upgrade
4.2. Den Systemstatus überprüfen
4.2.1. Noch ausstehende Aktionen im Paketmanager prüfen
4.2.2. APT Pinning deaktivieren
4.2.3. Paketstatus überprüfen
4.2.4. Der Bereich für vorgeschlagene Aktualisierungen („proposed-updates“)
4.2.5. Inoffizielle Quellen und Backports
4.3. Pakete als manuell installiert markieren
4.4. Die Quellen für APT vorbereiten
4.4.1. APT-Internet-Quellen hinzufügen
4.4.2. APT-Quellen für einen lokalen Spiegel hinzufügen
4.4.3. APT-Quellen von CD-ROM oder DVD hinzufügen
4.5. Upgrades von Paketen durchführen
4.5.1. Aufzeichnung der Sitzung
4.5.2. Aktualisieren der Paketliste
4.5.3. Sicherstellen, dass genügend Speicherplatz für das Upgrade zur Verfügung steht
4.5.4. Zuerst Upgrade von Apt und/oder Aptitude durchführen
4.5.5. Aptitudes Liste von automatisch installierten Paketen mit Apt benutzen
4.5.6. Minimales System-Upgrade
4.5.7. Upgrade des restlichen Systems
4.5.8. Mögliche Probleme während des Upgrades
4.6. Upgrade des Kernels und zugehöriger Pakete
4.6.1. Das Kernel-Metapaket installieren
4.6.2. Neusortierung der Gerätenummerierung
4.6.3. Zeitkritische Probleme beim Systemstart
4.7. Dinge, die vor dem Neustart erledigt werden sollten
4.7.1. Lilo erneut ausführen
4.8. Systemstart hängt bei Waiting for root file system
4.8.1. Das Problem vor dem Upgrade vermeiden
4.8.2. Das Problem nach dem Upgrade beheben
4.9. Vorbereiten für die nächste Veröffentlichung
4.10. Veraltete Pakete
4.10.1. Dummy-Pakete
4.11. Pläne für die nächste Debian-Veröffentlichung
4.11.1. Entfernung der ARM-ABI-Portierung zu Gunsten der ARM-EABI-Portierung

4.1. Vorbereiten des Upgrades

Wir empfehlen, dass Sie vor dem Upgrade auch die Informationen in Kapitel 5, Dinge, die Sie von Lenny wissen sollten lesen. Das Kapitel behandelt mögliche Probleme, die mit dem Upgrade-Prozess nicht direkt zusammenhängen, aber dennoch vor dem Upgrade für Sie wichtig sein könnten.

4.1.1. Sichern aller Daten und Konfigurationsinformationen

Wir empfehlen Ihnen nachdrücklich, ein komplettes Backup durchzuführen oder zumindest alle Daten und Konfigurationsinformationen zu sichern, die Sie nicht verlieren möchten, bevor Sie das Upgrade Ihres Systems durchführen. Die Upgrade-Werkzeuge und der zugehörige Prozess sind recht zuverlässig, aber ein Versagen der Hardware während des Upgrades könnte zu einem schwer beschädigten System führen.

Am wichtigsten für das Backup sind die Inhalte von /etc, /var/lib/dpkg, /var/lib/aptitude/pkgstates und die Ausgabe von dpkg --get-selections "*" (die Anführungszeichen sind wichtig).

Der Upgrade-Prozess ändert nichts im Verzeichnisbaum /home. Allerdings ist bekannt, dass einige Anwendungen (z.B. Teile der Mozilla-Suite und die GNOME- und KDE-Desktop-Umgebungen) existierende Benutzereinstellungen mit neuen Vorgaben überschreiben, wenn eine neue Version der Anwendung das erste Mal von einem Benutzer gestartet wird. Zur Vorsicht sollten Sie überlegen, die versteckten Dateien und Verzeichnisse (Dateien und Verzeichnisse, die mit einem Punkt beginnen, auch „dotfiles“ genannt) in den Home-Verzeichnissen der Benutzer zu sichern. Dieses Backup könnte Ihnen dabei helfen, die alten Einstellungen wiederherzustellen. Auch sollten Sie die Benutzer des Systems darüber informieren.

Jede Paketinstallation muss mit den Rechten des Superusers ausgeführt werden, melden Sie sich daher als root an oder verwenden Sie su oder sudo, um die notwendigen Rechte zu erlangen.

Für das Upgrade gibt es ein paar Voraussetzungen; Sie sollten diese überprüfen, bevor Sie das Upgrade durchführen.

4.1.1.1. Sicherstellen, dass ein geeigneter Kernel verwandt wird

Die Version von glibc in Lenny wird auf keiner Architektur mit Kerneln älter als 2.6.8 zusammenarbeiten; auf einigen Architekturen sind die Anforderungen noch höher. Wir empfehlen nachdrücklich, dass Sie ein Upgrade auf einen Kernel Version 2.6.18 oder 2.6.24 aus Etch oder einen angepassten Kernel mindestens der Version 2.6.18 durchführen, bevor Sie den Upgrade-Prozess beginnen.

4.1.2. Die Benutzer vorab informieren

Es empfiehlt sich, alle Nutzer vor dem geplanten Upgrade zu informieren, auch wenn Benutzer, die über ssh auf Ihr System zugreifen, wenig von dem Upgrade mitbekommen sollten und es ihnen möglich sein sollte, weiterzuarbeiten.

Falls Sie zusätzliche Vorsichtsmaßnahmen ergreifen wollen, sichern Sie die Partition /home vor dem Upgrade oder hängen Sie diese mit umount aus.

Wahrscheinlich müssen Sie beim Upgrade auf Lenny auch ein Kernel-Upgrade durchführen, daher wird normalerweise ein Systemneustart notwendig. Normalerweise erfolgt dieser, nachdem das Upgrade beendet wurde.

4.1.3. Systemwiederherstellung vorbereiten

Aufgrund der vielen Änderungen im Kernel zwischen Etch und Lenny im Hinblick auf Treiber, Hardware-Erkennung und der Benennung und Sortierung von Gerätedateien besteht ein reales Risiko, dass beim Systemneustart nach dem Upgrade Probleme auftauchen. Eine ganze Reihe von bekannten, möglichen Problemen sind in diesem und den nächsten Kapiteln dieser Veröffentlichungshinweise dokumentiert.

Aus diesem Grund ist es sinnvoll, sicherzustellen, dass Sie die Möglichkeit haben, Ihr System wieder zum Laufen zu bringen, falls der Start fehlschlagen sollte oder (bei fernverwalteten Systemen) der Aufbau der Netzwerkverbindung nicht erfolgreich sein sollte.

Falls Sie das Upgrade aus der Ferne über eine ssh-Verbindung durchführen, wird dringend empfohlen, dass Sie die nötigen Vorkehrungen treffen, um den Server über eine serielle Terminalverbindung aus der Ferne erreichen zu können. Es besteht die Möglichkeit, dass nach dem Kernel-Upgrade und anschließendem Neustart einige Geräte andere Namen bekommen (wie in Abschnitt 4.6.2, „Neusortierung der Gerätenummerierung“ beschrieben) und Sie die Systemkonfiguration über eine lokale Konsole korrigieren müssen. Auch könnte es sein, dass Sie das System über eine lokale Konsole wiederherstellen müssen, wenn es in der Mitte des Upgrade-Prozesses versehentlich neu gebootet wird.

Am naheliegendsten ist es in einem solchen Fall, zu versuchen, das System mit Ihrem alten Kernel zu starten. Aus verschiedenen Gründen, die an anderer Stelle in diesem Dokument beschrieben sind, kann allerdings nicht garantiert werden, dass dies funktioniert.

Falls dies fehlschlägt, benötigen Sie eine alternative Möglichkeit, Ihr System zu starten und zu reparieren. Eine Möglichkeit ist, ein spezielles Rettungs-Image oder eine Linux-Live-CD zu verwenden. Nachdem Sie davon gebootet haben, sollten Sie die Wurzel Ihres Dateisystems (/) einhängen und ein chroot darauf ausführen, um das Problem zu untersuchen und zu beheben.

Eine andere von uns empfohlene Option ist die Verwendung des Rettungsmodus des Lenny-Debian-Installers. Der Vorteil der Verwendung des Installers besteht darin, dass Sie aus den vielen Installationsmethoden diejenige aussuchen können, die am besten für Sie passt. Für weitere Informationen lesen Sie bitte den Abschnitt „Ein kaputtes System reparieren“ in Kapitel 8 des Installationsleitfadens und die FAQ des Debian-Installers.

4.1.3.1. Shell zur Fehleranalyse während des Bootens mit Initrd

Die initramfs-tools integrieren eine Shell zur Fehleranalyse (Debug-Shell)[2] in den von ihnen erzeugten Initrds. Falls die Initrd beispielsweise nicht in der Lage ist, die Wurzel Ihres Dateisystems (/) einzuhängen, wird Ihnen diese Debug-Shell präsentiert, in der die grundlegenden Befehle vorhanden sind, um das Problem zu ermitteln und möglicherweise zu beheben.

Folgende grundlegende Dinge sollten Sie prüfen: Vorhandensein der richtigen Gerätedateien in /dev, welche Module geladen sind (cat /proc/modules) und Fehler beim Laden von Treibern in der Ausgabe von dmesg. Die Ausgabe von dmesg wird Ihnen auch zeigen, welche Gerätedateien welchen Festplatten zugeordnet wurden; Sie sollten das mit der Ausgabe von echo $ROOT vergleichen, um sicherzustellen, dass die Wurzel des Dateisystems (/) auf dem erwarteten Gerät liegt.

Falls Sie das Problem beheben können, geben Sie exit ein, um die Debug-Shell zu beenden und mit dem Boot-Vorgang an der Fehlerstelle fortzufahren. Natürlich müssen Sie das zu Grunde liegende Problem auch beheben und die Initrd neu erzeugen, damit der Systemstart nicht beim nächsten Mal wieder fehlschlägt.

4.1.4. Vorbereiten einer sicheren Umgebung für das Upgrade

Das Distributions-Upgrade sollte entweder lokal von einer virtuellen Konsole im Textmodus (oder von einem direkt angebundenen seriellen Terminal) oder aus der Ferne über eine ssh-Verbindung erfolgen.

Für zusätzliche Sicherheit sollten Sie beim Upgrade aus der Ferne den Upgrade-Prozess in einer virtuellen Konsole des Programms screen durchführen, da damit bei möglichen Verbindungsabbrüchen die Verbindung wieder sicher hergestellt werden kann und der Upgrade-Prozess somit nicht fehlschlägt.

[Wichtig]Wichtig

Sie sollten das Upgrade nicht mit telnet, rlogin, rsh oder bei lokalen Upgrades unter von xdm, gdm oder kdm verwalteten X-Sitzungen durchführen. Da diese Dienste während des Upgrades beendet werden könnten, könnte dies dazu führen, dass auf das System kein Zugriff mehr möglich ist und somit das Upgrade nicht fertiggestellt werden kann.

4.2. Den Systemstatus überprüfen

Der in diesem Kapitel beschriebene Upgrade-Prozess geht davon aus, dass das zu aktualisierende System ein „reines“ Etch-System ohne Softwarepakete Dritter ist. Um den Upgrade-Prozess möglichst zuverlässig zu gestalten, sollten Sie überlegen, eventuell installierte Softwarepakete Dritter vor Beginn des Upgrades von Ihrem System zu entfernen.

Diese Anleitung nimmt an, dass Ihr System auf die neueste Zwischenveröffentlichung von Etch aktualisiert wurde. Falls dies nicht der Fall sein sollte oder Sie sich unsicher sind, folgen Sie den Anweisungen in Abschnitt A.1, „Upgrades in Ihrem Etch-System“.

4.2.1. Noch ausstehende Aktionen im Paketmanager prüfen

Manchmal führt die Verwendung von apt-get statt aptitude für die Paketinstallation dazu, dass aptitude ein Paket für „unbenutzt“ hält und es zur Entfernung einplant. Grundsätzlich sollten Sie sicherstellen, dass Ihr System vollständig aktuell und „sauber“ ist, bevor Sie mit dem Upgrade fortfahren.

Deshalb sollten Sie kontrollieren, ob noch ausstehende Aktionen im Paketmanager aptitude vorhanden sind. Falls ein Paket im Paketmanager zum Entfernen oder Aktualisieren vorgemerkt ist, könnte dies den Upgrade-Prozess negativ beeinflussen. Beachten Sie, dass Sie eine solche Situation nur korrigieren können, falls Ihre sources.list noch auf etch und nicht auf stable oder lenny verweist; siehe dazu Abschnitt A.2, „Überprüfen Ihrer Paketquellen“.

Dann sollten Sie aptitude im „visuellen Modus“ starten und g drücken, um diese Begutachtung zu beginnen. Falls irgendwelche Aktionen angezeigt werden, sollten Sie diese kontrollieren und entweder rückgängig machen/beheben oder die empfohlenen Vorgänge ausführen. Sind keine Aktionen vorgesehen, wird folgende Nachricht angezeigt: „Es wurden keine Pakete zum Installieren, Entfernen oder Aktualisieren ausgewählt.“.

4.2.2. APT Pinning deaktivieren

Falls Sie APT so konfiguriert haben, dass bestimmte Pakete aus einer anderen Debian-Suite als Stable (z.B. aus Testing) installiert werden (Pinning), müssen Sie unter Umständen Ihre APT-Pinning-Konfiguration (in /etc/apt/preferences gespeichert) ändern, um das Upgrade der Pakete aus der neuen Stable-Veröffentlichung zu erlauben. Weitere Informationen zu APT Pinning finden Sie in apt_preferences(5).

4.2.3. Paketstatus überprüfen

Unabhängig von der Methode zum Upgrade wird empfohlen, dass Sie zuerst überprüfen, ob alle Pakete in einem Status sind, der zum Upgrade geeignet ist. Der folgende Befehl wird Ihnen alle Pakete anzeigen, die im Status halb-installiert oder Konfiguration-fehlgeschlagen sind, und solche mit Fehler-Status.

# dpkg --audit

Sie sollten auch den Status aller Pakete Ihres Systems mittels dselect, aptitude oder Befehlen der folgenden Form überprüfen:

# dpkg -l | pager

oder

# dpkg --get-selections "*" > ~/curr-pkgs.txt

Es ist erstrebenswert, alle hold-Markierungen („halten“; Markierung, dass ein Paket in dem Zustand belassen werden soll, in dem es ist; es würde nicht aktualisiert) vor dem Upgrade zu entfernen. Wenn irgendein Paket, das für das Upgrade unverzichtbar ist, auf hold steht, schlägt das Upgrade fehl.

Beachten Sie, dass aptitude verglichen mit apt-get oder dselect eine andere Methode verwendet, um Pakete, die auf hold gesetzt sind, zu registrieren. Sie können Pakete, für die die hold-Markierung gesetzt ist, mit aptitude identifizieren, indem Sie diesen Befehl verwenden:

# aptitude search "~ahold" | grep "^.h"

Um Pakete, die für apt-get auf hold gesetzt worden waren, zu identifizieren, sollten Sie dies verwenden:

# dpkg --get-selections | grep hold

Falls Sie ein Paket lokal verändert und neu kompiliert haben und ihm nicht einen anderen Namen gegeben haben oder eine Epoche in die Versionsnummer eingefügt haben, müssen Sie es auf hold setzen, um zu verhindern, dass davon ein Upgrade durchgeführt und es damit überschrieben wird.

Der „hold“-Paketstatus für aptitude kann mit folgendem Befehl geändert werden:

# aptitude hold package_name

Ersetzen Sie hold durch unhold, um die hold-Markierung zu löschen.

Falls etwas korrigiert werden muss, sorgen Sie am besten dafür, dass sources.list noch auf etch verweist, wie dies in Abschnitt A.2, „Überprüfen Ihrer Paketquellen“ erklärt wird.

4.2.4. Der Bereich für vorgeschlagene Aktualisierungen („proposed-updates“)

Wenn Sie proposed-updates in Ihrer /etc/apt/sources.list-Datei aufgeführt haben, sollten Sie das entfernen, bevor Sie versuchen, ein Upgrade Ihres Systems durchzuführen. Dies ist eine Vorsichtsmaßnahme, um die Zahl möglicher Konflikte zu reduzieren.

4.2.5. Inoffizielle Quellen und Backports

Falls auf Ihrem System Debian-fremde Pakete installiert sind, sollten Sie wissen, dass diese während des Upgrades aufgrund von Konflikten in den Abhängigkeiten entfernt werden könnten. Falls diese Pakete installiert wurden, indem ein zusätzliches Paketarchiv in Ihrer /etc/apt/sources.list hinzugefügt wurde, sollten Sie überprüfen, ob das Archiv auch für Lenny übersetzte Pakete anbietet und die Quellzeile gleichzeitig mit der Quellzeile für die Debian-Pakete ändern.

Einige Benutzer haben inoffizielle rückportierte „neuere“ Versionen von Paketen aus Debian auf ihrem Etch-System installiert. Diese Pakete werden wahrscheinlich während des Upgrades zu Problemen führen, da Dateikonflikte auftreten können[3]. Abschnitt 4.5.8, „Mögliche Probleme während des Upgrades“ enthält Informationen, wie mit Dateikonflikten, falls diese auftreten, umgegangen werden kann.

4.2.5.1. backports.org-Pakete verwenden

backports.org ist ein halboffizielles Archiv, das von Debian GNU/Linux-Entwicklern betrieben wird. Es stellt neuere Pakete für die aktuell stabile Veröffentlichung zur Verfügung und basiert auf neu gebauten Paketen aus dem „Testing“-Archiv.

Das backports.org-Archiv enthält hauptsächlich Pakete aus „Testing“ mit reduzierten Versionsnummern, sodass das Upgrade von Etch-Backports zu Lenny noch funktioniert. Allerdings gibt es ein paar Backports, die aus Unstable gebaut werden: Sicherheitsaktualisierungen und die folgenden Ausnahmen: Firefox, der Linux-Kernel, OpenOffice.org und X.Org.

Wenn Sie keine dieser Ausnahmen nutzen, können Sie das Upgrade zu Lenny sicher durchführen. Falls Sie aber einige davon nutzen, setzen Sie die Pin-Priority (siehe apt_preferences(5)) vorübergehend für alle Pakete aus Lenny auf 1001; dann sollten Sie ebenfalls in der Lage sein, ein sicheres dist-upgrade durchzuführen.

4.3. Pakete als manuell installiert markieren

Um aptitude daran zu hindern, einige Pakete zu entfernen, die aufgrund von Abhängigkeiten mit installiert worden sind, müssen Sie diese nachträglich als manuell installiert markieren (das heißt, die Markierung Automatisch installiert muss entfernt werden). Dazu gehören bei Desktop-Installationen (Arbeitsplatz-Systemen) auch OpenOffice und Vim:

# aptitude unmarkauto openoffice.org vim

Und ebenfalls 2.6-Kernel-Images, falls Sie sie über Metapakete installiert haben:

# aptitude unmarkauto $(dpkg-query -W 'linux-image-2.6.*' | cut -f1)
[Anmerkung]Anmerkung

Sie können kontrollieren, welche Pakete in Aptitude als Automatisch installiert markiert sind, indem Sie diesen Befehl ausführen:

# aptitude search '~i~M'

4.4. Die Quellen für APT vorbereiten

Bevor Sie das Upgrade beginnen, müssen Sie die Konfigurationsdatei der Paketlisten /etc/apt/sources.list von apt einrichten.

apt wird alle Pakete berücksichtigen, die über eine „deb“-Zeile gefunden werden können und das Paket mit der höchsten Versionsnummer installieren, wobei die Priorität auf die erste Zeile in der Datei gelegt wird (damit ist es möglich, dass bei der Angabe mehrerer Spiegel typischerweise zuerst die Festplatte, dann CD-ROMs und schließlich HTTP/FTP-Spiegel angegeben werden).

[Tipp]Tipp

Es könnte sein, dass Sie eine Ausnahme für GPG-Überprüfungen für DVDs und CD-ROMs hinzufügen müssen. Ergänzen Sie die folgende Zeile zu /etc/apt/apt.conf, falls sie noch nicht in /etc/apt/apt.conf.d/00trustcdrom enthalten ist:

APT::Authentication::TrustCDROM "true";

Dies funktioniert allerdings nicht mit DVD-/CD-ROM-Image-Dateien.

Eine Veröffentlichung kann sowohl mit ihrem Codenamen (z.B. Etch, Lenny) als auch mit ihrem Statusnamen (d.h. oldstable, stable, testing, unstable) benannt werden. Die Verwendung des Codenamens hat den Vorteil, dass Sie nie von neueren Veröffentlichungen überrascht werden, und wird daher hier verwandt. Natürlich bedeutet dies, dass Sie selbst auf Veröffentlichungsankündigungen achten müssen. Falls Sie stattdessen den Statusnamen verwenden, werden Sie nur eine große Menge an Aktualisierungen für Pakete sehen, sobald eine Veröffentlichung stattgefunden hat.

4.4.1. APT-Internet-Quellen hinzufügen

Die Konfiguration ist standardmäßig so eingerichtet, dass Sie von den Haupt-Internetservern von Debian installieren, aber Sie können /etc/apt/sources.list bearbeiten, um andere Spiegel zu verwenden, bevorzugt solche, die netztopologisch nahe bei Ihnen liegen.

Adressen von HTTP- und FTP-Spiegeln können unter http://www.debian.org/distrib/ftplist gefunden werden (suchen Sie nach dem Abschnitt „Liste von Debian-Spiegeln“). HTTP-Spiegel sind im Allgemeinen schneller als FTP-Spiegel.

Im Beispiel nehmen wir an, dass der für Sie am nächsten liegende Spiegel http://mirrors.kernel.org sei. Wenn Sie sich den Spiegel mit einem Web-Browser oder einem FTP-Programm anschauen, werden Sie bemerken, dass die Hauptverzeichnisse wie folgt organisiert sind:

http://mirrors.kernel.org/debian/dists/lenny/main/binary-arm/...
http://mirrors.kernel.org/debian/dists/lenny/contrib/binary-arm/...

Um diesen Spiegel mit apt zu verwenden, müssen Sie die folgende Zeile zu Ihrer Datei sources.list hinzufügen:

deb http://mirrors.kernel.org/debian lenny main contrib

Beachten Sie, dass das „dists“ implizit hinzugefügt wird und dass Argumente nach dem Namen der Veröffentlichung zur Expansion des Pfades in mehrere Verzeichnisse verwandt werden.

Nachdem Sie neue Quellen hinzugefügt haben, deaktivieren Sie die bisher existierenden „deb“-Zeilen in der Datei sources.list, indem Sie eine Raute (#) am Zeilenanfang einfügen.

4.4.2. APT-Quellen für einen lokalen Spiegel hinzufügen

Statt HTTP- oder FTP-Paketspiegel zu verwenden, können Sie auch Ihre /etc/apt/sources.list anpassen, um einen Spiegel auf einer lokalen Platte zu verwenden (die möglicherweise über NFS eingehängt ist).

Beispielsweise könnte Ihr Paketspiegel unter /var/ftp/debian/ liegen und über die folgenden Hauptverzeichnisse verfügen:

/var/ftp/debian/dists/lenny/main/binary-arm/...
/var/ftp/debian/dists/lenny/contrib/binary-arm/...

Um dies mit apt zu verwenden, fügen Sie die folgende Zeile zu Ihrer Datei sources.list hinzu:

deb file:/var/ftp/debian lenny main contrib

Beachten Sie, dass das „dists“ implizit hinzugefügt wird und dass Argumente nach dem Namen der Veröffentlichung zur Expansion des Pfades in mehrere Verzeichnisse verwandt werden.

Nachdem Sie neue Quellen hinzugefügt haben, deaktivieren Sie die bisher existierenden „deb“-Zeilen in der Datei sources.list, indem Sie eine Raute (#) am Zeilenanfang einfügen.

4.4.3. APT-Quellen von CD-ROM oder DVD hinzufügen

Falls Sie ausschließlich die CDs verwenden möchten, kommentieren Sie die existierenden „deb“-Zeilen in der /etc/apt/sources.list aus, indem Sie am Zeilenanfang eine Raute (#) einfügen.

Stellen Sie sicher, dass es eine Zeile in /etc/fstab gibt, die das Einhängen Ihres CD-ROM-Laufwerks unter /cdrom ermöglicht (der Einhängepunkt muss für apt-cdrom exakt /cdrom sein). Falls Ihr CD-ROM-Laufwerk beispielsweise /dev/hdc ist, sollte /etc/fstab eine Zeile der folgenden Art enthalten:

/dev/hdc /cdrom auto defaults,noauto,ro 0 0

Beachten Sie, dass es keine Leerzeichen zwischen den Wörtern defaults,noauto,ro im vierten Feld geben darf.

Um zu überprüfen, ob dies funktioniert, legen Sie eine CD ein und versuchen Sie, Folgendes auszuführen:

# mount /cdrom    # this will mount the CD to the mount point
# ls -alF /cdrom  # this should show the CD's root directory
# umount /cdrom   # this will unmount the CD

Führen Sie als nächstes für jede Binär-CD, die Sie von Debian haben, den Befehl

# apt-cdrom add

aus, um die Daten der CD zu der APT-Datenbank hinzuzufügen.

4.5. Upgrades von Paketen durchführen

Die empfohlene Art, ein Upgrade von vorherigen Debian-Veröffentlichungen durchzuführen, ist die Verwendung des Paketverwaltungswerkzeuges aptitude. Dieses Programm führt sicherere Entscheidungen über Paketinstallationen durch als die direkte Verwendung von apt-get.

Vergessen Sie nicht, alle benötigten Partitionen (insbesondere die /- und die /usr-Partition) zum Schreiben einzuhängen. Verwenden Sie hierzu einen Befehl der Art:

# mount -o remount,rw /mountpoint

Als nächstes sollten Sie noch einmal überprüfen, dass die Quelleinträge für APT (in /etc/apt/sources.list) sich entweder auf „lenny“ oder auf „stable“ beziehen. Es sollte keine Quelleinträge geben, die auf Etch verweisen.

[Anmerkung]Anmerkung

Quellzeilen für eine CD-ROM beziehen sich oft auf „unstable“; dies mag zwar verwirrend erscheinen, Sie sollten dies aber nicht ändern.

4.5.1. Aufzeichnung der Sitzung

Es wird nachdrücklich empfohlen, dass Sie das Programm /usr/bin/script verwenden, um einen Mitschnitt der Upgrade-Sitzung zu erstellen. Falls dann ein Problem auftritt, haben Sie ein exaktes Protokoll der Ereignisse und können - falls notwendig - genaue Informationen in einem Fehlerbericht angeben. Um die Aufzeichnung zu beginnen, geben Sie

# script -t 2>~/upgrade-lenny.time -a ~/upgrade-lenny.script

oder Ähnliches ein. Legen Sie die Mitschnittdatei nicht in einem temporären Verzeichnis wie /tmp oder /var/tmp an (Dateien in diesen Verzeichnissen könnten während des Upgrades oder eines Systemstarts gelöscht werden).

Der Mitschnitt erlaubt es Ihnen auch, die Informationen durchzuschauen, die bereits aus dem Bildschirm herausgelaufen sind. Schalten Sie auf VT2 um (mit Alt+F2) und verwenden Sie nach dem Anmelden less -R ~root/upgrade-lenny.script, um die Datei durchzuschauen.

Nach Beendigung des Upgrades können Sie script beenden, indem Sie exit an der Eingabeaufforderung eingeben.

Falls Sie den Schalter -t für script verwendet haben, können Sie das Programm scriptreplay zum Abspielen der gesamten Sitzung verwenden:

# scriptreplay ~/upgrade-lenny.time ~/upgrade-lenny.script

4.5.2. Aktualisieren der Paketliste

Zuerst muss die Liste der verfügbaren Pakete für die neue Veröffentlichung abgerufen werden. Dies erledigen Sie mit dem folgenden Befehl:

# aptitude update

Wird dies beim ersten Mal zur Aktualisierung von neuen Quellen ausgeführt, werden einige Warnungen in Bezug auf die Verfügbarkeit der Quellen ausgegeben. Diese Warnungen sind harmlos und werden nicht auftreten, falls Sie den Befehl erneut ausführen.

4.5.3. Sicherstellen, dass genügend Speicherplatz für das Upgrade zur Verfügung steht

Sie müssen vor dem Upgrade sicherstellen, dass Sie genügend Platz auf Ihrer Festplatte verfügbar haben, wenn Sie wie in Abschnitt 4.5.7, „Upgrade des restlichen Systems“ beschrieben ein Upgrade des kompletten Systems starten. Als erstes wird jedes Paket, das zur Installation benötigt wird und über Netz heruntergeladen werden muss, in /var/cache/apt/archives gespeichert (bzw. während des Downloads im Unterverzeichnis partial/). Sie müssen also sicherstellen, dass Sie auf der Partition, die /var/ beinhaltet, genügend Platz haben, um temporär alle Pakete, die installiert werden sollen, herunterladen zu können. Nach dem Download benötigen Sie möglicherweise mehr Platz in anderen Partitionen, sowohl um die zu aktualisierenden Pakete zu installieren (diese könnten größere Binärdateien oder zusätzliche Daten enthalten) als auch um Pakete zu installieren, die neu hinzukommen. Falls Sie nicht genügend freien Speicherplatz bereithalten, bleibt vielleicht ein System mit einem unvollständigen Upgrade zurück, das unter Umständen nur schwer wiederbelebt werden kann.

Sowohl aptitude wie auch apt zeigen Ihnen detaillierte Informationen über den Festplattenplatz an, der für die Installation benötigt wird. Bevor Sie das Upgrade ausführen, können Sie sich die ungefähren Werte durch folgenden Befehl anschauen:

# aptitude -y -s -f --with-recommends dist-upgrade
[ ... ]
XXX upgraded, XXX newly installed, XXX to remove and XXX not upgraded.
Need to get xx.xMB/yyyMB of archives. After unpacking AAAMB will be used.
Would download/install/remove packages.
[Anmerkung]Anmerkung

Das Ausführen dieses Befehls zu Beginn des Upgrade-Prozesses könnte einen Fehler ausgeben (die Gründe sind in den folgenden Abschnitten beschrieben). In diesem Fall müssen Sie mit der Ausführung des Befehls warten, bis Sie das minimale System-Upgrade (wie in Abschnitt 4.5.6, „Minimales System-Upgrade“ beschrieben) und einen Upgrade Ihres Kernels durchgeführt haben, bevor Sie diesen Befehl ausführen, um den Platzbedarf abzuschätzen.

Falls Sie nicht genügend Platz für das Upgrade haben, müssen Sie vorher manuell Platz schaffen. Sie können:

  • Pakete löschen, die früher schon einmal für eine Installation heruntergeladen worden sind (in /var/cache/apt/archives). Das Leeren des Paket-Caches mit apt-get clean oder aptitude clean wird alle bereits heruntergeladenen Paketdateien löschen.

  • Vergessene Pakete entfernen. Falls Sie das Paket popularity-contest installiert haben, können Sie popcon-largest-unused verwenden, um die Pakete aufzulisten, die Sie nicht verwenden und die dabei den meisten Platz belegen. Sie können auch deborphan oder debfoster benutzen, um veraltete Pakete aufzuspüren (siehe Abschnitt 4.10, „Veraltete Pakete“). Alternativ dazu können Sie auch aptitude im „visuellen Modus“ starten und alle veralteten Pakete unter „Veraltete und selbst erstellte Pakete“ finden.

  • Pakete entfernen, die zu viel Speicherplatz belegen und die derzeit nicht benötigt werden (Sie können sie nach Abschluss des Upgrades jederzeit wieder installieren). Sie können die Pakete, die den meisten Plattenplatz beanspruchen, mit dpigs (verfügbar in dem Paket debian-goodies) oder mit wajig (führen Sie wajig size aus) auflisten.

    Sie können sich mit aptitude die Pakete auflisten lassen, die den meisten Festplattenplatz in Anspruch nehmen. Starten Sie dazu aptitude im visuellen Modus, wählen Sie AnsichtenNeue flache Paketansicht (dieser Menüeintrag ist nur in Aptitude-Versionen nach Etch verfügbar), drücken Sie l und geben Sie ~i ein, drücken Sie dann S und geben Sie ~installsize ein. Nun wird Ihnen eine schöne Liste angezeigt, mit der Sie arbeiten können. Wenn Sie dies nach dem Upgrade von aptitude ausführen, sollten Sie diese neue Funktion benutzen können.

  • Entfernen von Übersetzungen und Standortanpassungsdateien aus dem System, falls diese nicht benötigt werden. Sie können das Paket localepurge installieren und so konfigurieren, dass nur einige ausgewählte Standortdateien („locales“) im System verbleiben. Dies wird den unter /usr/share/locale benötigten Plattenplatz reduzieren.

  • System-Protokolldateien (die unter /var/log/ liegen) vorübergehend auf ein anderes System verschieben oder dauerhaft löschen.

  • Ein temporäres /var/cache/apt/archives verwenden: Sie können vorübergehend ein Cache-Verzeichnis auf einem anderen Dateisystem benutzen (USB-Speicher, provisorisch angeschlossene Festplatte, ein bereits anderweitig benutztes Dateisystem ...)

    [Anmerkung]Anmerkung

    Benutzen Sie jedoch kein per NFS eingehängtes Netzlaufwerk, da die Netzwerkverbindung während des Upgrades unterbrochen werden könnte.

    Falls Sie zum Beispiel eine USB-Festplatte haben, die in /media/usbkey eingehängt ist:

    1. entfernen Sie die Pakete, die unter Umständen bereits früher für Installationen heruntergeladen worden sind:

      # apt-get clean

    2. kopieren Sie das Verzeichnis /var/cache/apt/archives auf die USB-Festplatte:

      # cp -ax /var/cache/apt/archives /media/usbkey/

    3. hängen Sie das temporäre Cache-Verzeichnis in dem vorhandenen ein:

      # mount --bind /media/usbkey/archives /var/cache/apt/archives

    4. stellen Sie nach dem Upgrade das ursprüngliche /var/cache/apt/archives-Verzeichnis wieder her:

      # umount /media/usbkey/archives

    5. entfernen Sie das verbleibende /media/usbkey/archives.

    Sie können das temporäre Cache-Verzeichnis auf jedem Dateisystem erstellen, das auf Ihrem System eingehängt ist.

Beachten Sie, dass es ratsam ist, die sources.list zurück auf Etch zu ändern (wie in Abschnitt A.2, „Überprüfen Ihrer Paketquellen“ beschrieben), um Pakete sicher zu entfernen.

4.5.4. Zuerst Upgrade von Apt und/oder Aptitude durchführen

Several bug reports have shown that the versions of the aptitude and apt packages in etch are often unable to handle the upgrade to lenny. In lenny, apt is better at dealing with complex chains of packages requiring immediate configuration and aptitude is smarter at searching for solutions to satisfy the dependencies. These two features are heavily involved during the dist-upgrade to lenny, so it is necessary to upgrade these two packages before upgrading anything else.

The following command will upgrade both aptitude and apt:

# aptitude install aptitude apt dpkg

This step will also automatically upgrade libc6 and locales. At this point, some running services will be restarted, including xdm, gdm and kdm. As a consequence, local X11 sessions might be disconnected.

[Anmerkung]Upgrading with apt

Please note that using apt-get is not recommended for the upgrade from etch to lenny. If you do not have aptitude installed you are recommended to install it first.

If you want to perform the upgrade with apt or if the upgrade with aptitude failed and you want to try the upgrade with apt' dependency chain resolution algorithm, you should run:

# apt-get install apt

Note that you will have to adapt other aptitude commands to use apt-get instead.

4.5.5. Aptitudes Liste von automatisch installierten Paketen mit Apt benutzen

aptitude verwaltet eine Liste von Paketen, die automatisch installiert worden sind (zum Beispiel aufgrund einer Abhängigkeit von einem anderen Paket). In Lenny hat nun auch apt diese Funktion.

Wenn die Lenny-Version von aptitude das erste Mal gestartet wird, liest sie die Liste von automatisch installierten Paketen ein und konvertiert sie für die Verwendung durch die Lenny-Version von apt. Falls Sie aptitude installiert haben, sollten Sie zumindest einen aptitude-Befehl ausführen, um die Konvertierung durchzuführen. Eine Möglichkeit, dies zu tun, wäre die Suche nach einem nicht-vorhandenen Paket:

# aptitude search "?false"

4.5.6. Minimales System-Upgrade

Weil bei bestimmten benötigten Paketen Konflikte zwischen der Etch- und der Lenny-Version bestehen, wird das direkte Ausführen von aptitude dist-upgrade oft eine große Anzahl von Paketen entfernen, die Sie eigentlich behalten möchten. Wir empfehlen deshalb einen zweiteiligen Upgrade-Prozess; als erstes ein minimales Upgrade, um diese Konflikte zu umgehen und anschließend ein vollständiges dist-upgrade.

Führen Sie als erstes aus:

# aptitude safe-upgrade

Dies hat den Effekt, dass für diejenigen Pakete ein Upgrade durchgeführt wird, für die dies möglich ist, ohne dass irgendwelche anderen Pakete entfernt oder installiert werden müssen.

Der nächste Schritt unterscheidet sich abhängig davon, welche Pakete Sie installiert haben. Diese Veröffentlichungshinweise geben grundsätzliche Hinweise darüber, welche Methode benutzt werden sollte, aber falls Sie Zweifel haben, wird empfohlen, dass Sie die zu entfernenden Pakete, die von den einzelnen Methoden vorgeschlagen werden, kontrollieren, bevor Sie fortfahren.

Einige gebräuchliche Pakete, von denen erwartet wird, dass Sie entfernt werden, sind base-config, hotplug, xlibs, netkit-inetd, python2.3, xfree86-common und xserver-common. Eine vollständigere Liste von veralteten Paketen in Lenny finden Sie in Abschnitt 4.10, „Veraltete Pakete“.

4.5.7. Upgrade des restlichen Systems

Sie sind jetzt bereit für den eigentlichen Hauptteil des Upgrades. Führen Sie aus:

# aptitude dist-upgrade

Dadurch wird ein vollständiges Upgrade des Systems durchgeführt, also die Installation der neuesten verfügbaren Versionen aller Pakete und die Auflösung aller möglichen Änderungen bei den Abhängigkeiten zwischen Paketen der verschiedenen Veröffentlichungen. Falls nötig werden einige neue Pakete installiert (üblicherweise neue Bibliotheksversionen oder umbenannte Pakete) sowie veraltete Pakete entfernt, die Konflikte verursachen.

Falls Sie ein Upgrade von einem Satz CD-ROMs (oder DVDs) durchführen, werden Sie an verschiedenen Stellen des Upgrade-Prozesses aufgefordert, bestimmte CDs einzulegen. Sie müssen eventuell ein und dieselbe CD mehrmals einlegen; dies liegt daran, dass einige Pakete mit gegenseitiger Wechselbeziehung zueinander über verschiedene CDs verteilt sind.

Neue Versionen von bereits installierten Paketen, die nicht aktualisiert werden können, ohne den Installationsstatus eines anderen Pakets zu ändern, werden in ihrer derzeitigen Version belassen (sie werden als „zurückgehalten“ angezeigt). Dies kann aufgelöst werden, indem Sie entweder aptitude verwenden, um diese Pakete zur Installation vorzumerken, oder indem Sie aptitude -f install paketname verwenden.

4.5.8. Mögliche Probleme während des Upgrades

Falls eine Operation von aptitude, apt-get oder dpkg mit der Meldung

E: Dynamic MMap ran out of room

fehlschlägt, dann ist der Standardwert für den Cache nicht ausreichend groß. Sie können dies Problem lösen, indem Sie entweder Zeilen in Ihrer /etc/apt/sources.list entfernen bzw. mit einem Rautezeichen am Anfang auskommentieren oder Sie die Größe des Caches erhöhen. Dies erledigen Sie mit der Einstellung APT::Cache-Limit in /etc/apt/apt.conf. Der folgende Befehl setzt den Cache auf einen Wert, der für dieses Upgrade passend sein sollte:

# echo 'APT::Cache-Limit "12500000";' >> /etc/apt/apt.conf

Dabei wird davon ausgegangen, dass diese Variable in der betreffenden Datei noch nicht gesetzt war.

Manchmal ist es nötig, die Option APT::Force-LoopBreak in APT zu aktivieren, um die Möglichkeit zu haben, ein zwingend nötiges Paket vorübergehend entfernen zu können, falls das Problem einer Konflikt- oder Pre-Depends-Schleife besteht. aptitude wird Sie über so etwas in Kenntnis setzen und das Upgrade abbrechen. Sie setzen diese Option, indem Sie -o APT::Force-LoopBreak=1 im aptitude-Befehl angeben.

Es ist möglich, dass die Abhängigkeitsstruktur eines Systems so beschädigt ist, dass ein manuelles Eingreifen nötig ist. Dies erfordert üblicherweise die Verwendung von aptitude oder

# dpkg --remove package_name

um einige der beschädigten Pakete zu eliminieren, oder

# aptitude -f install
# dpkg --configure --pending

In extremen Fällen müssen Sie eventuell die Neuinstallation eines Pakets erzwingen; verwenden Sie dazu einen Befehl wie

# dpkg --install /path/to/package_name.deb

Dateikonflikte sollten nicht auftauchen, wenn Sie ein Upgrade auf einem „reinen“ Etch-System durchführen, können aber vorkommen, wenn Sie inoffizielle Backports installiert haben. Ein Dateikonflikt resultiert in einem Fehler wie:

Unpacking <package-foo> (from <package-foo-file>) ...
dpkg: error processing <package-foo> (--install):
 trying to overwrite `<some-file-name>',
 which is also in package <package-bar>
dpkg-deb: subprocess paste killed by signal (Broken pipe)
 Errors were encountered while processing:
 <package-foo>

Sie können versuchen, einen Dateikonflikt zu lösen, indem Sie zwangsweise das Paket entfernen, das in der letzten Zeile der Fehlermeldung genannt wird:

# dpkg -r --force-depends package_name

Nachdem Sie die Probleme behoben haben, sollte es möglich sein, das Upgrade fortzusetzen, indem Sie die oben beschriebenen aptitude-Befehle nochmals ausführen.

Während des Upgrades werden Ihnen Fragen gestellt, die die Konfiguration oder Neukonfiguration von verschiedenen Paketen betreffen. Wenn Sie gefragt werden, ob Dateien in den Verzeichnissen /etc/init.d und /etc/terminfo oder die Datei /etc/manpath.config durch die Version des Paketbetreuers ersetzt werden sollen, ist die Antwort „yes“ (ja) für gewöhnlich die richtige, um die Konsistenz des Systems sicherzustellen. Sie können immer noch zu der alten Version zurückkehren, da diese mit der Erweiterung .dpkg-old abgespeichert werden.

Falls Sie sich nicht sicher sind, was Sie tun sollen, schreiben Sie den Namen des Pakets oder der Datei auf und kümmern Sie sich später darum. Sie können die Mitschnittdatei durchsuchen, um die Informationen erneut zu betrachten, die zum Zeitpunkt des Upgrades auf dem Bildschirm angezeigt wurden.

4.6. Upgrade des Kernels und zugehöriger Pakete

Dieser Abschnitt beschreibt, wie Sie ein Upgrade des Kernels durchführen und weist auf potenzielle Probleme hin, die diesen Vorgang betreffen. Sie können entweder eines der von Debian angebotenen linux-image-*-Pakete installieren oder einen eigenen Kernel aus den Quellen selbst kompilieren.

Beachten Sie, dass viele der Informationen in diesem Abschnitt auf der Annahme basieren, dass Sie einen der modularen Debian-Kernel zusammen mit initramfs-tools und udev verwenden. Falls Sie sich entscheiden, einen eigenen selbst erstellten Kernel zu benutzen, benötigen Sie dabei keine Initrd, oder einige der Informationen über den Initrd-Generator sind für Sie nicht relevant, weil Sie einen anderen Initrd-Generator verwenden.

4.6.1. Das Kernel-Metapaket installieren

Wenn Sie ein Distributions-Upgrade von Etch auf Lenny durchführen, wird dringend empfohlen, dass Sie eines der neuen linux-image-2.6-Metapakete installieren. Dieses Paket könnte auch automatisch durch den Upgrade-Prozess installiert werden. Sie können dies verifizieren mit:

# dpkg -l "linux-image*" | grep ^ii

Falls nichts angezeigt wird, müssen Sie ein neues linux-image-Paket von Hand installieren. Eine Liste verfügbarer linux-image-2.6-Metapakete bekommen Sie mit:

# apt-cache search linux-image-2.6- | grep -v transition

Falls Sie sich bei der Entscheidung, welches Paket Sie wählen sollen, unsicher sind, führen Sie uname -r aus und suchen Sie nach einem Paket mit einem ähnlichen Namen. Falls die Anzeige zum Beispiel 2.6.18-6-686 ist, wird empfohlen, dass Sie linux-image-2.6-686 installieren. (Beachten Sie, dass die k7-Variante nicht mehr existiert; falls Sie derzeit eine k7-Kernelvariante verwenden, sollten Sie stattdessen jetzt die 686-Variante installieren.) Sie können auch apt-cache benutzen, um eine ausführliche Beschreibung jedes Pakets zu bekommen, was Ihnen bei der Auswahl des besten Paketes helfen kann. Zum Beispiel:

# apt-cache show linux-image-2.6-686

Sie sollten dann aptitude install verwenden, um es zu installieren. Sobald dieser neue Kernel installiert ist, sollten Sie sobald wie möglich einen Neustart durchführen, um von der neuen Kernel-Version zu profitieren.

Für die Experimentierfreudigen gibt es einen einfachen Weg, einen eigenen Kernel unter Debian GNU/Linux zu erstellen. Installieren Sie das kernel-package-Werkzeug und lesen Sie die Dokumentation in /usr/share/doc/kernel-package.

Falls möglich, wäre es ein Vorteil, wenn Sie das Kernel-Paket separat vom Rest des Systems aktualisieren, um die Wahrscheinlichkeit eines nicht-bootfähigen Systems zu reduzieren. Beachten Sie, dass Sie dies nur nach dem minimalen System-Upgrade (siehe Abschnitt 4.5.6, „Minimales System-Upgrade“) durchführen sollten.

4.6.2. Neusortierung der Gerätenummerierung

Lenny enthält einen robusteren Mechanismus für die Hardware-Erkennung als frühere Veröffentlichungen. Allerdings könnte dies dazu führen, dass die Reihenfolge, in der Geräte auf Ihrem System erkannt werden, sich ändert, was sich auf die Vergabe der Gerätenamen auswirken kann. Falls Sie zum Beispiel zwei Netzwerk-Adapter in Ihrem System haben, die von verschiedenen Treibern bedient werden, könnten die Bezeichnungen eth0 und eth1 vertauscht werden. Bitte beachten Sie, dass die Änderung des Mechanismus auch bedeutet, dass ein Adapter, der in einem laufenden Lenny-System ausgetauscht wird, auch einen neuen Schnittstellen-Namen bekommt.

Bei Netzwerkkarten können Sie diese Neunummerierung vermeiden, indem Sie udev-Regeln verwenden, genauer gesagt durch die Definitionen in /etc/udev/rules.d/70-persistent-net.rules[4]. Alternativ können Sie das ifrename-Werkzeug benutzen, um physische Geräte beim Systemstart an spezielle Namen zu binden. Siehe ifrename(8) und iftab(5) für weitere Informationen. Diese beiden Alternativen (udev und ifrename) sollten nicht zur gleichen Zeit verwendet werden.

Bei Speichergeräten können Sie diese Neunummerierung vermeiden, indem Sie initramfs-tools benutzen und so konfigurieren, dass die Treibermodule für Speichergeräte in der gleichen Reihenfolge wie bisher geladen werden. Identifizieren Sie dazu auf Basis der Ausgabe von lsmod die Reihenfolge, in der die Module geladen wurden. lsmod listet die Module in der umgekehrten Reihenfolge auf, in der sie geladen wurden, zum Beispiel wurde das erste Modul in der Liste als letztes geladen. Beachten Sie, dass dieses Prinzip nur für Geräte funktioniert, die vom Kernel in einer stabilen Reihenfolge durchnummeriert werden (wie PCI-Geräte).

Allerdings wird das Entfernen und Neuladen von Modulen nach dem eigentlichen Systemstart diese Reihenfolge beeinflussen. Auch könnte der Kernel bestimmte Treiber statisch gelinkt haben, so dass diese Namen nicht in der Ausgabe von lsmod erscheinen. Sie können diese Treibernamen und die Reihenfolge des Ladens herausfinden, indem Sie in /var/log/kern.log oder in der Ausgabe von dmesg nachschauen.

Fügen Sie diese Modulnamen in der Reihenfolge zu /etc/initramfs-tools/modules hinzu, in der Sie bei Systemstart geladen werden sollen. Einige Modulnamen könnten zwischen Etch und Lenny geändert worden sein. Zum Beispiel heißt das Modul sym53c8xx_2 jetzt sym53c8xx.

Sie müssen dann Ihr Initramfs-Image neu erzeugen, indem Sie update-initramfs -u -k all ausführen.

Sobald ein Lenny-Kernel sowie das Paket udev laufen, sollten Sie überlegen, Ihr System neu zu konfigurieren, sodass auf Festplatten über einen Alias zugegriffen wird, der unabhängig von der Reihenfolge des Ladens der Treiber ist. Diese Aliase liegen unterhalb von /dev/disk/.

4.6.3. Zeitkritische Probleme beim Systemstart

Falls eine durch initramfs-tools erstellte Initrd benutzt wird, um das System zu starten, könnte die Erzeugung von Gerätedateien durch udev zu spät stattfinden, sodass die Boot-Skripte nicht mehr darauf reagieren können.

Häufige Symptome sind, dass der Systemstart fehlschlägt, weil das Wurzel-Dateisystem (/) nicht eingehängt werden kann. Sie werden dann auf eine Shell zur Fehlersuche (Debug-Shell) umgeleitet. Wenn Sie dann aber alles kontrollieren, sind alle benötigten Gerätedateien in /dev vorhanden. Dies ist in Fällen beobachtet worden, bei denen das Wurzel-Dateisystem (/) auf einer USB-Festplatte oder auf einem RAID lag, speziell wenn LILO genutzt wurde.

Das Problem kann umgangen werden, indem der Boot-Parameter rootdelay=9 verwendet wird. Der Wert für die Zeitüberschreitung (in Sekunden) muss eventuell noch angepasst werden.

4.7. Dinge, die vor dem Neustart erledigt werden sollten

Wenn aptitude dist-upgrade fertig ist, sollte das „formale“ Upgrade abgeschlossen sein, aber es gibt ein paar andere Dinge, um die Sie sich vor dem nächsten Neustart kümmern sollten.

4.7.1. Lilo erneut ausführen

Falls Sie lilo als Bootloader verwenden (bei einigen Installationen von Etch ist Lilo der Standard-Bootloader), wird dringendst empfohlen, dass Sie lilo nach dem Upgrade erneut ausführen:

# /sbin/lilo

Beachten Sie, dass dies auch nötig ist, falls Sie Ihren System-Kernel nicht aktualisiert haben, da sich lilos zweite Stufe aufgrund des Upgrades ändert.

Kontrollieren Sie auch den Inhalt der Datei /etc/kernel-img.conf und stellen Sie sicher, dass do_bootloader = Yes enthalten ist. Auf diese Art wird der Bootloader jedes Mal nach einem Kernel-Upgrade erneut ausgeführt.

Sollten Sie irgendwelche Probleme feststellen, wenn Sie lilo ausführen, kontrollieren Sie in / die symbolischen Links auf vmlinuz und initrd sowie den Inhalt von /etc/lilo.conf auf eventuelle Unstimmigkeiten.

Falls Sie vor dem Neustart vergessen haben, lilo erneut auszuführen oder das System versehentlich neu gestartet wurde bevor Sie dies erledigen konnten, schlägt der Start des Systems eventuell fehl. Statt des Lilo-Prompts sehen Sie dann nur LI, wenn das System bootet[5]. In Abschnitt 4.1.3, „Systemwiederherstellung vorbereiten“ finden Sie Informationen, wie Sie dieses Problem beheben können.

4.8. Systemstart hängt bei Waiting for root file system

Vorgehensweise, um wieder Zugriff auf /dev/hda zu bekommen, das zu /dev/sda geworden ist

Einige Benutzer haben berichtet, dass ein Upgrade dazu führen kann, dass der Kernel die System-root-Partition nach einem Neustart nicht mehr findet.

In solchen Fällen hängt der Systemstart mit der folgenden Nachricht:

Waiting for root file system ...

und nach ein paar Sekunden taucht ein einfacher busybox-Prompt auf.

Dieses Problem kann auftauchen, wenn das Upgrade des Kernels zur Verwendung der neuen Generation der IDE-Treiber führte. Die IDE-Festplatten sind von den alten Treibern mit hda, hdb, hdc, hdd benannt worden, während die neuen Treiber die gleichen Festplatten sda, sdb, sdc, sdd nennen. Das Problem tritt auf, wenn durch das Upgrade keine neue /boot/grub/menu.lst-Datei erzeugt wird, was die neuen Festplattenbezeichnungen berücksichtigen würde. Während des Starts übergibt Grub dem Kernel eine Angabe mit der Bezeichnung der root-Partition, unter der der Kernel die Festplatte aber nicht findet.

Falls dieses Problem bei Ihnen nach dem Upgrade aufgetreten ist, gehen Sie zu Abschnitt 4.8.2, „Das Problem nach dem Upgrade beheben“. Um vor dem Upgrade zu vermeiden, dass das Problem auftritt, lesen Sie hier weiter.

4.8.1. Das Problem vor dem Upgrade vermeiden

Sie können dieses Problem vollständig vermeiden, indem Sie eine Kennung (Identifier) für das Wurzel-Dateisystem verwenden, die sich nicht von einem Systemstart zum nächsten verändert. Es gibt zwei mögliche Methoden dazu: dem Dateisystem ein Label zuzuordnen oder den Universal Unique Identifier (UUID) des Dateisystems zu verwenden. Diese beiden Methoden werden von Debian seit der Veröffentlichung von „Etch“ unterstützt.

Beide Ansätze haben Vor- und Nachteile. Der Ansatz der Vergabe eines Labels ist einfacher verständlich, aber es können Probleme auftreten, falls ein anderes Dateisystem auf Ihrem System das gleiche Label hat. Der Ansatz der Verwendung der UUID ist ein wenig hässlicher, allerdings sind sich überschneidende UUIDs höchst unwahrscheinlich.

Bei dem Beispiel unten nehmen wir an, dass das Wurzel-Dateisystem auf /dev/hda6 liegt. Außerdem gehen wir davon aus, dass auf Ihrem System eine funktionierende udev-Installation vorhanden ist und die Dateisysteme vom Typ ext2 oder ext3 sind.

Den Label-Ansatz implementieren:

  1. Sie vergeben für das Dateisystem ein Label (der Name muss < 16 Zeichen lang sein), indem Sie den Befehl „e2label /dev/hda6 wurzeldateisys“ ausführen.

  2. Editieren Sie /boot/grub/menu.lst und ändern Sie die Zeile:

    # kopt=root=/dev/hda6 ro

    in

    # kopt=root=LABEL=wurzeldateisys ro

    [Anmerkung]Anmerkung

    Entfernen Sie nicht das #-Zeichen am Anfang der Zeile, es muss dort stehen.

  3. Aktualisieren Sie die kernel-Zeilen in menu.lst, indem Sie den Befehl update-grub ausführen.

  4. Editieren Sie /etc/fstab und ändern Sie die Zeile für die /-Partition, z.B.

    /dev/hda6     /     ext3  defaults,errors=remount-ro 0 1

    in

    LABEL=wurzeldateisys     /     ext3  defaults,errors=remount-ro 0 1

    Die Angabe, die Sie ändern müssen, ist die in der ersten Spalte, direkt am Anfang der Zeile; den Rest der Zeile müssen Sie nicht ändern.

Den UUID-Ansatz implementieren:

  1. Find out the universally unique identifier of your filesystem by issuing: ls -l /dev/disk/by-uuid | grep hda6. You can also use vol_id --uuid /dev/hda6 (in etch) or blkid /dev/hda6 (if already upgraded to lenny).

    Sie sollten eine Zeile vergleichbar zu dieser bekommen:

    lrwxrwxrwx 1 root root 24 2008-09-25 08:16 d0dfcc8a-417a-41e3-ad2e-9736317f2d8a -> ../../hda6

    Die UUID ist der Name des symbolischen Links, der auf /dev/hda6 zeigt, z.B. d0dfcc8a-417a-41e3-ad2e-9736317f2d8a.

    [Anmerkung]Anmerkung

    Die UUID Ihres Dateisystems wird sich von dieser unterscheiden.

  2. Editieren Sie /boot/grub/menu.lst und ändern Sie die Zeile:

    # kopt=root=/dev/hda6 ro

    in

    # kopt=root=UUID=d0dfcc8a-417a-41e3-ad2e-9736317f2d8 ro

    [Anmerkung]Anmerkung

    Entfernen Sie nicht das #-Zeichen am Anfang der Zeile, es muss dort stehen.

  3. Aktualisieren Sie die kernel-Zeilen in menu.lst, indem Sie den Befehl update-grub ausführen.

  4. Editieren Sie /etc/fstab und ändern Sie die Zeile für die /-Partition, z.B.

    /dev/hda6     /     ext3  defaults,errors=remount-ro 0 1

    in

    UUID=d0dfcc8a-417a-41e3-ad2e-9736317f2d8  /  ext3  defaults,errors=remount-ro 0 1

    Die Angabe, die Sie ändern müssen, ist die in der ersten Spalte, direkt am Anfang der Zeile; den Rest der Zeile müssen Sie nicht ändern.

4.8.2. Das Problem nach dem Upgrade beheben

4.8.2.1. Lösung 1

Diese Lösung ist anwendbar, wenn Grub Ihnen ein Menü angezeigt, in dem Sie einen Eintrag auswählen können, den Sie booten möchten. Falls solch ein Menü nicht angezeigt wird, drücken Sie die Taste Esc bevor der Kernel startet, um das Menü anzuzeigen. Gelingt Ihnen dies nicht, versuchen Sie Abschnitt 4.8.2.2, „Lösung 2“ oder Abschnitt 4.8.2.3, „Lösung 3“.

  1. Markieren Sie im Grub-Menü den Eintrag, den Sie starten möchten. Drücken Sie die Taste e, um die Optionen, die zu diesem Eintrag gehören, editieren zu können. Sie sehen etwas wie:

    root (hd0,0)
    kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro
    initrd /initrd.img-2.6.26-1-686

  2. Markieren Sie die Zeile

    kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro

    Drücken Sie erneut die Taste e und ersetzen Sie hdX durch sdX (wobei X einer der Buchstaben a, b, c oder d ist, abhängig von Ihrem Rechner). In diesem Beispiel wird die Zeile so aussehen:

    kernel /vmlinuz-2.6.26-1-686 root=/dev/sda6 ro

    Drücken Sie dann Enter, um die Änderung zu übernehmen. Falls noch weitere Zeilen hdX enthalten, ändern Sie diese auch. Verändern Sie nicht den Eintrag, der ähnlich wie root (hd0,0) aussieht. Sobald alle Änderungen erledigt sind, drücken Sie die Taste b. Ihr System sollte nun normal starten.

  3. Wenn Ihr System nun gestartet ist, müssen Sie diese Änderung noch dauerhaft durchführen. Gehen Sie zu Abschnitt 4.8.1, „Das Problem vor dem Upgrade vermeiden“ und führen Sie eine der beiden möglichen Prozeduren durch.

4.8.2.2. Lösung 2

Starten Sie Ihr System von einem Debian GNU/Linux-Installationsmedium (CD/DVD) und wenn der boot-Prompt erscheint, wählen Sie rescue aus, um den Rettungsmodus zu starten. Wählen Sie Sprache, Ort und Tastatur, warten Sie dann die Netzwerkkonfiguration ab, unabhängig davon, ob diese erfolgreich ist oder nicht. Nach einer Weile sollten Sie aufgefordert werden, eine Partition auszuwählen, die Sie als root-Dateisystem verwenden möchten. Die möglichen Einträge werden ähnlich aussehen wie diese:

/dev/ide/host0/bus0/target0/lun0/part1
/dev/ide/host0/bus0/target0/lun0/part2
/dev/ide/host0/bus0/target0/lun0/part5
/dev/ide/host0/bus0/target0/lun0/part6

Wenn Sie wissen, welche Partition Ihr Wurzel-Dateisystem enthält, wählen Sie die passende aus. Falls Sie dies nicht wissen, versuchen Sie einfach die erste in der Liste. Bei einer Meldung über eine ungültige Wurzel-Dateisystem-Partition probieren Sie die nächste aus und so weiter. Alle nacheinander auszuprobieren sollte Ihre Partitionen nicht beschädigen und falls Sie nur ein Betriebssystem auf Ihren Festplatten installiert haben, sollten Sie recht einfach die richtige Wurzel-Dateisystem-Partition finden können. Haben Sie mehrere Betriebssysteme installiert, ist es wohl besser zu wissen, welche die korrekte Partition ist.

Sobald Sie eine Partition ausgewählt haben, werden Ihnen mehrere Aktionen zur Auswahl angeboten. Wählen Sie den Punkt, eine Shell in der ausgewählten Partition zu starten (Execute a shell in the selected partition). Falls eine Meldung erscheint, dass diese Aktion nicht möglich ist, versuchen Sie dies mit einer anderen Partition.

Jetzt sollten Sie über die Shell als Benutzer root Zugriff auf Ihr Wurzel-Dateisystem haben, das unter /target eingehängt ist. Sie benötigen Zugriff auf den Inhalt der Verzeichnisse /boot, /sbin und /usr auf Ihrer Festplatte, die jetzt unter /target/boot, /target/sbin und /target/usr verfügbar sein sollten. Falls diese Verzeichnisse auf anderen Partitionen liegen, müssen Sie sie manuell einhängen (sehen Sie in /etc/fstab nach, falls Sie keine Idee haben, welche Partition Sie einhängen müssen).

Gehen Sie zu Abschnitt 4.8.1, „Das Problem vor dem Upgrade vermeiden“ und führen Sie eine der beiden möglichen Prozeduren durch, um das Problem dauerhaft zu beheben. Geben Sie danach zum Verlassen der Rettungs-Shell exit ein und wählen Sie dann System neustarten, um das System normal neu zu starten (vergessen Sie nicht, das Installationsmedium zu entfernen).

4.8.2.3. Lösung 3

  1. Starten Sie von Ihrer Lieblings-LiveCD-Distribution, z.B. Debian Live, Knoppix oder Ubuntu Live.

  2. Hängen Sie die Partition mit dem Verzeichnis /boot ein. Falls Sie nicht wissen, welches es ist, verwenden Sie die Ausgabe des Befehls dmesg, um herauszufinden, ob Ihre Platte den Namen hda, hdb, hdc, hdd oder sda, sdb, sdc, sdd trägt. Sobald Sie wissen, an welcher Platte Sie arbeiten müssen, beispielsweise sdb, geben Sie den folgenden Befehl ein, um die Partitionstabelle auf der Platte anzuzeigen und die richtige Partition zu finden: fdisk -l /dev/sdb.

  3. Angenommen, Sie haben die richtige Partition unter /mnt eingehängt und diese Partition enthält das Verzeichnis /boot und seine Inhalte, bearbeiten Sie die Datei /mnt/boot/grub/menu.lst.

    Finden Sie einen Abschnitt ähnlich zu:

    ## ## End Default Options ##
    
    title           Debian GNU/Linux, kernel 2.6.26-1-686
    root            (hd0,0)
    kernel          /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro
    initrd          /initrd.img-2.6.26-1-686
    
    title           Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode)
    root            (hd0,0)
    kernel          /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro single
    initrd          /initrd.img-2.6.26-1-686
    
    ### END DEBIAN AUTOMAGIC KERNELS LIST

    und ersetzen Sie jedes hda, hdb, hdc, hdd durch sda, sdb, sdc, sdd, je nach Notwendigkeit. Verändern Sie keine Zeilen der Form:

    root            (hd0,0)

  4. Starten Sie das System neu, entfernen Sie die LiveCD und Ihr System sollte korrekt booten.

  5. Sobald es gestartet ist, wenden Sie eine der zwei in Abschnitt 4.8.1, „Das Problem vor dem Upgrade vermeiden“ vorgeschlagenen Prozeduren an, um das Problem dauerhaft zu beheben.

4.9. Vorbereiten für die nächste Veröffentlichung

Nach dem Upgrade gibt es einige Dinge, die Sie tun können, um für die nächste Veröffentlichung vorbereitet zu sein.

  • Falls das neue Kernel-Image-Metapaket aufgrund einer Abhängigkeit vom alten installiert wurde, ist es als automatisch installiert markiert worden, was geändert werden sollte:

    # aptitude unmarkauto $(dpkg-query -W 'linux-image-2.6-*' | cut -f1)
    
  • Entfernen Sie veraltete und nicht benutzte Pakete wie in Abschnitt 4.10, „Veraltete Pakete“ beschrieben. Sie sollten kontrollieren, welche Konfigurationsdateien diese Pakete benutzen und in Betracht ziehen, die Pakete vollständig zu entfernen, um die Konfigurationsdateien loszuwerden.

4.10. Veraltete Pakete

Mit Lenny wurden mehrere tausend neue Pakete eingeführt und aufgrund dessen werden auch mehr als zweitausend alte Pakete, die in Etch noch existierten, ausgelassen werden oder wegfallen. Es wird keine Möglichkeit eines Upgrades für diese veralteten Pakete geben. Auch wenn nichts Sie davon abhalten kann, ein veraltetes Paket weiter zu benutzen, wenn Sie dies wünschen, wird das Debian-Projekt bei diesen Paketen üblicherweise die Unterstützung für Sicherheitsaktualisierungen ein Jahr nach der Veröffentlichung von Lenny einstellen[6]. Auch wird es in der Zwischenzeit keine weitere Unterstützung geben. Es wird empfohlen, die Pakete durch verfügbare Alternativen zu ersetzen.

Es gibt viele Gründe, warum Pakete aus der Distribution entfernt worden sein könnten: sie wurden von den Originalautoren nicht mehr betreut; es ist kein Debian-Entwickler mehr daran interessiert, sie zu betreuen; die Funktionalität, die sie bieten, ist durch andere Software (oder eine neuere Version) ersetzt worden, oder sie wurden (aufgrund von Fehlern darin) als nicht mehr passend für Lenny angesehen. Im letzten Fall könnten sie trotzdem noch in der „unstable“-Distribution vorhanden sein.

Zu erkennen, welche Pakete in einem aktualisierten System „veraltet“ (obsolete) sind, ist einfach, da die Paketmanagement-Programme sie entsprechend markieren. Wenn Sie aptitude verwenden, werden Sie eine Auflistung dieser Pakete im Abschnitt „Veraltete und selbst erstellte Pakete“ finden. dselect bietet eine ähnliche Sektion an, allerdings könnte sich der Inhalt der Liste unterscheiden.

Auch könnte es sein, dass aptitude Pakete, die Sie in Etch mit Aptitude manuell installiert haben, verfolgt hat und jetzt Pakete, die nur aufgrund von Abhängigkeiten installiert wurden und die jetzt nicht mehr benötigt werden, da ein Paket entfernt wurde, als veraltet markiert. Außerdem wird aptitude im Unterschied zu deborphan Pakete, die Sie manuell installiert haben, nicht als veraltet markieren (anders als bei Paketen, die automatisch aufgrund von Abhängigkeiten installiert wurden).

Es gibt zusätzliche Werkzeuge, die Sie verwenden können, um veraltete Pakete aufzuspüren, wie deborphan, debfoster oder cruft. deborphan wird sehr empfohlen, obwohl es (in der Standard-Einstellung) nur veraltete Bibliotheken melden wird: Pakete aus den Bereichen „libs“ oder „oldlibs“, die von keinem anderen Paket benutzt werden. Entfernen Sie nicht blind die Pakete, die von diesen Programmen angezeigt werden, speziell wenn Sie Optionen mit aggressiven Nicht-Standard-Werten verwenden, die dafür bekannt sind, falsche positive Meldungen zu erzeugen. Es wird dringend empfohlen, dass Sie die Pakete, die zum Entfernen vorgeschlagen werden, kontrollieren (bezüglich Inhalt, Größe und Beschreibung), bevor Sie sie entfernen.

Die Debian-Fehlerdatenbank bietet oft zusätzliche Informationen, warum ein Paket entfernt wurde. Sie sollten sowohl die archivierten Fehlerberichte für das Paket selbst als auch für das Pseudo-Paket ftp.debian.org kontrollieren.

Die Liste der obsoleten Pakete enthält:

  • apache (1.x), Nachfolger ist apache2

  • bind (8), Nachfolger ist bind9

  • php4, Nachfolger ist php5

  • postgresql-7.4, Nachfolger ist postgresql-8.1

  • exim (3), Nachfolger ist exim4

4.10.1. Dummy-Pakete

Einige Pakete aus Etch sind für Lenny in mehrere Pakete aufgeteilt worden, oft um die System-Wartungsfähigkeit zu erhöhen. Um in solchen Fällen den Upgrade-Prozess zu erleichtern, bietet Lenny oft so-genannte „Dummy“-Pakete an: leere Pakete, die den gleichen Namen haben wie das alte Paket in Etch und mit entsprechenden Abhängigkeiten, die dazu führen, dass die neuen Pakete installiert werden. Diese „Dummy“-Pakete werden nach dem Upgrade-Prozess als veraltet angesehen und können problemlos entfernt werden.

Die Paketbeschreibungen der meisten (aber nicht aller) Dummy-Pakete enthalten einen Hinweis auf ihren Zweck. Die Paketbeschreibungen für Dummy-Pakete sind jedoch nicht standardisiert, daher werden Sie vielleicht deborphan mit den --guess-Optionen sinnvoll finden, um diese Pakete auf Ihrem System zu finden. Beachten Sie, dass einige Dummy-Pakete nicht dazu gedacht sind, nach einem Upgrade entfernt zu werden, sondern stattdessen dazu dienen, die gerade verfügbare Version eines Programms über längere Zeit zu verfolgen.

4.11. Pläne für die nächste Debian-Veröffentlichung

4.11.1. Entfernung der ARM-ABI-Portierung zu Gunsten der ARM-EABI-Portierung

Debian Lenny verfügt über zwei verschiedene, inkompatible ARM-Portierungen: die alte ABI-Portierung (Arm) und die neue EABI-Portierung (Armel). Debian Lenny ist die letzte Veröffentlichung mit Unterstützung der ARM-ABI-Portierung und zukünftige Veröffentlichungen werden nur die ARM-EABI- bzw. Armel-Portierung unterstützen. Es wird daher empfohlen, für neue Installationen von Lenny Armel zu verwenden.

Abgesehen von Netwinder sind Installer-Images für die unterstützten ARM-Maschinen sowohl für Arm als auch für Armel in Lenny enthalten. Netwinder-Unterstützung ist nur für Arm erhältlich und wird nach Lenny zusammen mit der Arm-Portierung entfernt.

Besuchen Sie diese Seite, um mehr über die ARM EABI- (armel-)Portierung zu erfahren.



[2] Diese Funktionalität kann deaktiviert werden, indem der Parameter panic=0 zu den Boot-Parametern hinzugefügt wird.

[3] Das Paketverwaltungssystem von Debian erlaubt es normalerweise nicht, dass ein Paket Dateien anderer Pakete entfernt oder ersetzt, es sei denn, es wurde definiert, dass es das andere Paket ersetzt.

[4] Die Regeln dort werden von dem Skript /etc/udev/rules.d/75-persistent-net-generator.rules automatisch erzeugt, um unveränderte Namen für die Netzwerkschnittstellen (NIC) zu bekommen. Entfernen Sie diese symbolische Verknüpfung, wenn Sie die Vergabe unveränderter Namen für die NICs durch udev nicht möchten.

[5] Mehr Informationen über lilos Boot-Fehler-Codes finden Sie im Linux Bootdisk HOWTO.

[6] So lange es keine andere Veröffentlichung in diesem Zeitraum gibt. Typischerweise werden zu jeder Zeit nur zwei stabile Veröffentlichungen mit Sicherheitsaktualisierungen unterstützt.