GRUB Bootloader bootet nicht von LVM Volume

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen
Hinweis: Bitte beachten Sie, dass dieser Artikel / diese Kategorie sich entweder auf ältere Software/Hardware Komponenten bezieht oder aus sonstigen Gründen nicht mehr gewartet wird.
Diese Seite wird nicht mehr aktualisiert und ist rein zu Referenzzwecken noch hier im Archiv abrufbar.

Wird bei der Installation von Debian GNU/Linux für die Root-Partition ein LVM Logical Volume gewählt, kann es in manchen Fällen zu Problemen beim Booten kommen. So lädt zwar der Bootloader GRUB (GRUB 2) noch ohne Probleme, aber der Versuch das Betriebssystem zu booten scheitert. Dabei werden die Fehlermeldungen Volume group "XY" not found sowie Unable to find LVM volume ABC angezeigt.

Problem

Nach der Installation eines Debian Linux 6.0 64-bit mit der geführten Partitionierung und Verwendung von LVM kann der Bootloader GRUB nicht in das Betriebssystem booten. Er bringt stattdessen folgende Fehlermeldungen und wechselt in die build-in shell (ash):

Grub lvm problem 1.png

Wie man sieht findet der Bootloader unter /dev/mapper das root-Verzeichnis nicht und beendet den Bootvorgang indem er in die BusyBox springt. Eine Überprüfung des Verzeichnisses /dev/mapper bestätigt, dass kein root-Verzeichnis vorhanden ist:

Grub lvm problem 2.png

Fehlerursache

Der LVM Scan läuft nicht schnell genug, die Volume Groups sind noch nicht aktiviert (Problem des Initramfs).

Fehlerbehebung

Ein nachträgliches Aktivieren der Volumes kann mit folgendem Kommando in der build-in shell gemacht werden:

vgchange -ay

Anschließend sind die Volumes auch in /dev/mapper aufgeführt:

Grub lvm problem 3.png

Verlässt man nun die built-in shell mit exit:

exit

Lädt das Betriebssystem ohne Probleme in den Login-Prompt:

Grub lvm problem 4.png

Alternative Fehlerbehebung

Alternativ zum oben genannten Lösungsansatz ist es auch möglich im Bootloader-Menü den entsprechenden Eintrag zu editieren (durch drücken der Taste "e" beim entsprechenden Eintrag) und dort eine Verzögerung beim Initialisieren der Root-Partition einzustellen. Dieses erreicht man mittels dem Parameter rootdelay=<Zeit in Sekunden>. Hierbei sollte ein Wert von 5 Sekunden praktikabel sein:

Grub lvm problem 5.png

Nach Betätigen von "ctrl-x" bootet das System wieder ohne Probleme in den Login-Prompt.

Dauerhafte Lösung: Eintrag in /etc/default/grub

Um nicht bei jedem Boot-Vorgang per Hand eingreifen zu müssen, trägt man am Besten den rootdelay dauerhaft in der Datei /etc/default/grub ein:[1]

root@rs9000076799:~# cat /etc/default/grub

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet rootdelay=5"
GRUB_CMDLINE_LINUX="rootdelay=5"
.
.
.

Nach abschließendem Update des GRUB Bootloaders per update-grub prüft man noch die Datei /boot/grub/grub.cfg, ob der rootdelay auch wirklich eingetragen wurde:

.
.
.
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
	insmod part_gpt
	insmod ext2
	set root='(hd0,gpt2)'
	search --no-floppy --fs-uuid --set c9f5e53e-d2b5-4614-bc30-f4614aa4facd
	echo	'Loading Linux 2.6.32-5-amd64 ...'
	linux	/vmlinuz-2.6.32-5-amd64 root=/dev/mapper/rs9000076799-root ro rootdelay=5 quiet rootdelay=5
	echo	'Loading initial ramdisk ...'
	initrd	/initrd.img-2.6.32-5-amd64
}
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os {
	insmod part_gpt
	insmod ext2
	set root='(hd0,gpt2)'
	search --no-floppy --fs-uuid --set c9f5e53e-d2b5-4614-bc30-f4614aa4facd
	echo	'Loading Linux 2.6.32-5-amd64 ...'
	linux	/vmlinuz-2.6.32-5-amd64 root=/dev/mapper/rs9000076799-root ro single rootdelay=5
	echo	'Loading initial ramdisk ...'
	initrd	/initrd.img-2.6.32-5-amd64
}
### END /etc/grub.d/10_linux ###
.
.
.

Jetzt ist die Einstellung permanent und ein Eingreifen per Hand während des Bootvorgangs ist nicht mehr notwendig.

Einzelnachweise

  1. InitramfsDebug (wiki.debian.org) In releases older than Debian 8 (jessie), it may be necessary to add a delay for disks to be discovered before setting up RAID and LVM. Boot with e.g. rootdelay=9

Weitere Information

Das könnte Sie auch interessieren

Bay Trail Systeme erfordern Limitierung des C-State im Linux-Grafik-Betrieb
EDAC amd64 Node 0 DRAM ECC disabled
HA Cluster mit Linux Container basierend auf Heartbeat, Pacemaker, DRBD und LXC