Fehlerbehebung bei Dracut-Problemen
Vorwort
Falls Sie aufgrund von Dracut Probleme mit der Systeminitialisierung haben, lesen Sie bitte die häufigen Fehlerberichte, bevor Sie einen Fehlerbericht einreichen. Dort finden Sie möglicherweise einfache Konfigurationsanpassungen, die viele Probleme beheben. Sollte Ihr Problem dort nicht aufgeführt sein oder keine der beschriebenen Lösungen helfen, reichen Sie bitte einen Fehlerbericht ein, damit wir Fedora auf Ihrer Hardware optimieren können.
Bitte halten Sie auch Systeminformationen (Protokolldateien) bereit. Diese sollten vollständig sein (keine Ausschnitte), nicht archiviert, unkomprimiert und mit dem MIME-Typ „text/plain“ vorliegen.
Identifizieren Ihres Problemgebiets
-
Entfernen Sie
rhgbundquietaus der Kernel-Befehlszeile -
Fügen Sie
rd.shellzur Kernel-Befehlszeile hinzu. Dadurch wird eine Shell angezeigt, falls dracut Ihr Root-Gerät nicht finden kann -
Fügen Sie
rd.shell rd.debug log_buf_len=1Mzur Kernel-Befehlszeile hinzu, damit die dracut-Shell-Befehle während ihrer Ausführung ausgegeben werden. -
Überprüfen Sie die Systemprotokolle:
$ sudo less /run/initramfs/rdsosreport.txt $ sudo journalctl -a $ sudo dmesg $ sudo less /run/initramfs/init.log
Informationen, die in Ihrem Bericht enthalten sein sollten
Alle Fehlerberichte
In jedem Fall sollten die folgenden Angaben Ihrem Fehlerbericht beigefügt werden:
-
Die exakte Kernel-Befehlszeile. Typischerweise aus der Bootloader-Konfigurationsdatei (z.B.
/etc/grub.conf) oder aus/proc/cmdline -
Ihre Festplattenpartitionsinformationen aus
/etc/fstab -
Eine Geräteliste von device-mapper. Diese kann durch Ausführen des Befehls
dmsetup ls — treeabgerufen werden -
Eine Liste der Blockgeräteattribute einschließlich des vol_id-kompatiblen Modus. Diese kann durch Ausführen der Befehle
blkidundblkid -o udevabgerufen werden -
Aktivieren Sie das dracut-Debugging (siehe Abschnitt 'dracut debuggen') und fügen Sie alle relevanten Informationen aus dem Bootprotokoll hinzu. Diese erhalten Sie durch Ausführen des Befehls
dmesg | grep dracut. -
Wenn Sie eine dracut-Konfigurationsdatei verwenden, fügen Sie bitte
/etc/dracut.confhinzu
Probleme mit der Verwaltung logischer Datenträger
Zusätzlich zu den Informationen aus dem Abschnitt „Alle Fehlerberichte“ sollten Sie folgende Informationen angeben:
-
Beziehen Sie Informationen zum physischen Datenträger ein, indem Sie den Befehl
lvm pvdisplayausführen. -
Fügen Sie die Informationen zur Datenträgergruppe hinzu, indem Sie den Befehl
lvm vgdisplayausführen. -
Fügen Sie Informationen zu logischen Datenträgern durch Ausführen des Befehls
lvm lvdisplayhinzu.
Software-RAID-bezogene Probleme
Zusätzlich zu den Informationen aus dem Abschnitt „Alle Fehlerberichte“ sollten Sie folgende Informationen angeben:
-
Wenn Sie Software-RAID-Festplattenpartitionen verwenden, fügen Sie bitte die Ausgabe von
/proc/mdstatbei.
Netzwerk-Root-Geräte-bezogene Probleme
Dieser Abschnitt enthält detaillierte Informationen, die bei Problemen mit einem System, dessen Root-Gerät sich auf einem über das Netzwerk angehängten Datenträger (zum Beispiel iSCSI, NFS oder NBD) befindet, anzugeben sind. Zusätzlich zu den Informationen aus dem link:#all-bug-reports[Abschnitt „Alle Fehlerberichte“ sollten Sie folgende Angaben machen:
-
Bitte beziehen Sie die Ausgabe von
dracut debuggen
Konfiguration einer seriellen Konsole
Für ein erfolgreiches Debuggen von dracut ist eine Form der Konsolenprotokollierung während des Systemstarts erforderlich. Dieser Abschnitt beschreibt die Konfiguration einer seriellen Konsolenverbindung zur Aufzeichnung von Startmeldungen. Um die serielle Konsolenausgabe sowohl für den Kernel als auch für den Bootloader zu aktivieren, folgen Sie der unten beschriebenen Vorgehensweise.
-
Öffnen Sie die Datei
/etc/grub.confzum Bearbeiten. Fügen Sie unterhalb der Zeile timeout=5 Folgendes hinzu:serial --unit=0 --speed=9600 terminal --timeout=5 serial console -
Fügen Sie außerdem in
/etc/grub.confdie folgenden Boot-Argumente zur Zeile kernel hinzu:console=tty0 console=ttyS0,9600 -
Nach Fertigstellung sollte die Datei
/etc/grub.confin etwa so aussehen wie im folgenden Beispiel:default=0 timeout=5 serial --unit=0 --speed=9600 terminal --timeout=5 serial console title Fedora (2.6.29.5-191.fc11.x86_64) root (hd0,0) kernel /vmlinuz-2.6.29.5-191.fc11.x86_64 ro root=/dev/mapper/vg_uc1-lv_root console=tty0 console=ttyS0,9600 initrd /dracut-2.6.29.5-191.fc11.x86_64.img
Detailliertere Informationen zur Konfiguration des Kernels für die Konsolenausgabe finden Sie unter 1.
Verwendung der dracut-Shell
Dracut bietet eine Shell für interaktives Debugging, falls Dracut Ihr Root-Dateisystem nicht finden kann. So aktivieren Sie die Shell:
-
Fügen Sie den Bootparameter
rd.shellzu Ihrer Bootloader-Konfigurationsdatei hinzu (z.B./etc/grub/conf) -
Entfernen Sie die Boot-Argumente
rhgbandquiet
Nachfolgend ist eine Beispielkonfigurationsdatei /etc/grub.conf für den Bootloader aufgeführt:
default=0
timeout=5
serial --unit=0 --speed=9600
terminal --timeout=5 serial console
title Fedora (2.6.29.5-191.fc11.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.29.5-191.fc11.x86_64 ro root=/dev/mapper/vg_uc1-lv_root console=tty0 rd.shell
initrd /dracut-2.6.29.5-191.fc11.x86_64.img
Wenn der Systemstart fehlschlägt, gelangen Sie in eine Shell, wie im folgenden Beispiel gezeigt:
No root device found
Dropping to debug shell.
sh: can't access tty; job control turned off
#
Verwenden Sie diese Shell-Eingabeaufforderung, um die oben angeforderten Informationen zu sammeln (siehe der Abschnitt „Alle Fehlerberichte“).
Zugriff auf den Root-Datenträger aus der Dracut-Shell
Über die dracut-Debug-Shell können Sie den Root-Datenträger manuell für den Systemstart suchen und vorbereiten. Die erforderlichen Schritte hängen von der Konfiguration Ihres Root-Datenträgers ab. Häufige Szenarien sind:
-
Ein Blockgerät (z.B.
/dev/sda7) -
Ein logischer LVM-Datenträger (z.B.
/dev/VolGroup00/LogVol00) -
Ein verschlüsseltes Gerät (z.B.
/dev/mapper/luks-4d5972ea-901c-4584-bd75-1da802417d83) -
Ein über das Netzwerk erreichbares Gerät (z.B.
netroot=iscsi:@192.168.0.4::3260::iqn.2009-02.org.fedoraproject:for.all)
Die genaue Vorgehensweise zum Auffinden und Vorbereiten kann variieren. Um jedoch einen erfolgreichen Systemstart zu gewährleisten, ist es wichtig, den Root-Datenträger zu finden und einen symbolischen Link /dev/root zu erstellen, der auf das Dateisystem verweist. Das folgende Beispiel zeigt beispielsweise den Zugriff auf und das Booten eines Root-Datenträgers, der ein verschlüsselter LVM-Datenträger ist.
-
Untersuchen Sie Ihre Partitionen mit
parted:$ sudo parted /dev/sda -s p Modell: ATA HTS541060G9AT00 (scsi) Festplatte /dev/sda: 60.0GB Sektorgröße (logical/physical): 512B/512B Partitionstabelle: msdos Nummer Anfang Ende Größe Typ Dateisystem Flags 1 32.3kB 10.8GB 107MB primary ext4 boot 2 10.8GB 55.6GB 44.7GB logical lvm -
Sie erinnern sich, dass Ihr Root-Datenträger ein logischer LVM-Datenträger. Scannen Sie ihn und aktivieren Sie logische Datenträger:
$ sudo lvm vgscan $ sudo lvm vgchange -ay -
Sie sollten nun alle logischen Datenträger mit dem Befehl
blkidsehen können:$ sudo blkid /dev/sda1: UUID="3de247f3-5de4-4a44-afc5-1fe179750cf7" TYPE="ext4" /dev/sda2: UUID="Ek4dQw-cOtq-5MJu-OGRF-xz5k-O2l8-wdDj0I" TYPE="LVM2_member" /dev/mapper/linux-root: UUID="def0269e-424b-4752-acf3-1077bf96ad2c" TYPE="crypto_LUKS" /dev/mapper/linux-home: UUID="c69127c1-f153-4ea2-b58e-4cbfa9257c5e" TYPE="ext3" /dev/mapper/linux-swap: UUID="47b4d329-975c-4c08-b218-f9c9bf3635f1" TYPE="swap" -
Aus der obigen Ausgabe geht hervor, dass sich Ihr Root-Datenträger auf einem verschlüsselten Blockgerät befindet. Entsperren Sie Ihren verschlüsselten Root-Datenträger.
$ UUID=$(sudo cryptsetup luksUUID /dev/mapper/linux-root) $ sudo cryptsetup luksOpen /dev/mapper/linux-root luks-$UUID Enter passphrase for /dev/mapper/linux-root: Key slot 0 unlocked. -
Als Nächstes erstellen Sie einen symbolischen Link zum entsperrten Root-Datenträger.
$ sudo ln -s /dev/mapper/luks-$UUID /dev/root -
Nachdem der Root-Datenträger verfügbar ist, können Sie den Systemstart fortsetzen, indem Sie die dracut-Shell beenden.
exit
Zusammenfassung der Dracut-Optionen für die Kernel-Befehlszeile
Eine Auswahl der gängigsten dracut-Optionen zum Debuggen:
rd.shell-
Falls initramfs fehlschlägt, wird auf eine Shell gewechselt.
rd.debug-
Setzen Sie -x für die dracut-Shell.
rd.break=[cmdline|pre-udev|pre-trigger|initqueue|pre-mount|mount|pre-pivot|cleanup]-
Starten Sie die Shell an einem definierten Haltepunkt (verwenden Sie
egrep 'rd.?break' /usr/lib/dracut/modules.d/99base/init.sh, um die von Ihrer dracut-Version unterstützten Haltepunkte zu finden). rd.udev.info-
Setzen Sie
udevauf die Protokollierstufeinfo(dies ist die Standardeinstellung). rd.udev.debug-
Setzen Sie
udevauf die Protokollierstufedebug
In der Handbuchseite dracut.cmdline(7) finden Sie eine vollständige Referenz.
Want to help? Learn how to contribute to Fedora Docs ›