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:
# less /run/initramfs/rdsosreport.txt # journalctl -a # dmesg # 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
As well as the information from the 'all bug reports' section, include the following information:
-
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
As well as the information from the 'all bug reports' section, include the following information:
-
Wenn Sie Software-RAID-Festplattenpartitionen verwenden, fügen Sie bitte die Ausgabe von
/proc/mdstatbei.
Netzwerk-Root-Geräte-bezogene Probleme
This section details information to include when experiencing problems on a system whose root device is located on a network attached volume (e.g. iSCSI, NFS or NBD). As well as the information from the 'all bug reports' section, include the following information:
-
Please include the output of
dracut debuggen
Konfiguration einer seriellen Konsole
Successfully debugging dracut will require some form of console logging during the system boot. This section documents configuring a serial console connection to record boot messages. To enable serial console output for both the kernel and the bootloader, follow the procedure below.
-
Ö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)
The exact method for locating and preparing will vary. However, to continue with a successful boot, the objective is to locate your root volume and create a symlink /dev/root which points to the file system. For example, the following example demonstrates accessing and booting a root volume that is an encrypted LVM Logical volume.
-
Untersuchen Sie Ihre Partitionen mit
parted:# parted /dev/sda -s p Model: ATA HTS541060G9AT00 (scsi) Disk /dev/sda: 60.0GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system 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:
# lvm vgscan # lvm vgchange -ay
-
Sie sollten nun alle logischen Datenträger mit dem Befehl
blkidsehen können:# 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=$(cryptsetup luksUUID /dev/mapper/linux-root) 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.
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]-
Drop the shell on defined breakpoint (use
egrep 'rd.?break' /usr/lib/dracut/modules.d/99base/init.shto find the breakpoints supported by your dracut version) rd.udev.info-
Set udev to loglevel info (this is the default level)
rd.udev.debug-
Set udev to loglevel debug
In der Handbuchseite dracut.cmdline(7) finden Sie eine vollständige Referenz.
Want to help? Learn how to contribute to Fedora Docs ›