Registrieren | Login:
Homepage  Artikel  GRUB
GRUB

GRUB - ein Newbee wagt sich vor

Hamburg, den 17.2.2004

 

Das erste was man nach den BIOS Startmeldungen auf einem Linuxrechner zu sehen bekommt, ist nicht etwa Linux selber, sondern die Statusmeldungen eines Bootloaders. Dieses kleine Programm hat die wichtige Aufgabe, den Linux-Kernel zu finden, in den Hauptspeicher zu bringen und zu starten. Bessere Vertreter dieser Programmgattung bieten dem Benutzer interaktiv eine Auswahl unter mehreren installierten Kerneln und Betriebsystemen an.

Was die Benutzerschnittstelle angeht, gehört GRUB im Open Source Bereich wohl zu den fortschrittlichsten Bootloadern. Vielleicht ist das der Grund, dass die großen Distributionen auf ihn eingeschwenkt sind.

Obwohl im Vergleich komfortabel, hat sich der Autor, der seine Festplatten gerne mal in seinen Rechnern umherwandern lässt, darüber geärgert, dass GRUB nicht in der Lage ist, in Abhängigkeit von der vorgefundenen Hardwarekonfiguration verschieden zu booten. Jedesmal musste die Konfigurationsdatei des GRUB händisch nachgepflegt werden.

Jammern gilt in der Open Source Szene aber nichts. Warum ist GRUB Open Source? – Genau, damit jeder, der was Besonderes will, das auch umsetzen kann.

'Gesagt, getan' ist hier aber leichter gesagt als getan. Natürlich liest sich ein Computerprogramm nicht wie ein Kriminalroman. Immerhin bleibt es bei einem Werk, denn da GRUB das erste in einem Rechner überhaupt geladene Programm ist, muss man auf das Zusammenspiel mit anderer Software nicht achten. Wenn ich dann noch ganz von vorne anfange, also mit der Stage 1 (die sich im MBR befindet), braucht mich sogar der ganze Rest von GRUB nicht kümmern, das kann ich dann so verstehen. Als Übung habe ich mir also diese Stage 1 vorgenommen und einer Revision unterzogen.

Zu den Lernaufwänden bei der OSSD gehört es, herauszukriegen, wie man in die GRUB Programmierer Szene hereinkommt. Einen Abend Zeit sollte man sich für die ganzen Anmeldungen schon nehmen. Um nicht gleich durch unpassende Fragen und Erklärungen aufzufallen, ist zudem das Studium der Postings der letzten Wochen angesagt. Glücklicherweise ist da nicht so viel los gewesen. Dann muss man lernen, wie man mit den Programmiertools umgeht, wie man sich eine Testumgebung schafft, und schließlich wie man Patches erstellt.

Herausgekommen sind am Ende ein Thesenpapier, 6 Patches und die Lokalisation eines echten Bugs, der sich auf älterer Hardware bemerkbar macht und dessen Phänomen in der GRUB eigenen Bugliste aufgeführt ist.

Nach und nach habe ich die Patches dann an die Mailingliste von GRUB geschickt. Jeder Patch hat wegen der damit verbundenen intensiven Funktionstest ca. 2,5 Stunden gedauert. Beim ersten eingesandten Patch hat sich einer der Maintainer bei mir gemeldet und um Geduld gebeten, da der hauptverantwortliche Herr Okuji derzeit beruflich stark belastet ist, und sich kaum um die Entwicklung kümmern kann.

So stehen die Patches also in der Warteschleife und ich weiß nicht, ob sie angenommen werden. Das Thesenpapier hat hingegen sofort Reaktionen hervorgerufen. Außerdem bin ich in rasender Geschwindigkeit in den Ruf eines Experten geraten, was mir gar nicht zusteht, aber ich darf trotzdem Fragen von Menschen aus aller Herren Länder beantworten.

Schauen wir was die Zukunft hier bringt.

(wl)

...to be continued.

grub2 und das "error: no such device: "

grub2 und das "error: no such device: "

von Günther Zander

Bei der Installation von [K]Ubuntu mit grub2, kann es Aufgrund von nicht näher bekannten Hardwareabhängigkeiten, nach der ersten Installation zu einem Bootfehler kommen, mit der Meldung:

	error: no such device: {UUID}

Dabei ist die Installation korrekt durchgelaufen. Es handelt sich um einen Fehler der beim Booten des Kernel's auftritt. Lokalisiert konnte das Problem werden in der Zeile:

	search ... --fs-uuid --set {UUID}

In diesem Artikel wird Ihnen eine Möglichkeit aufgezeigt, wie Sie dieses Problem beheben können.

Bootprogramm grub2 kurz erklärt:

Die Steuerung des Bootvorganges übernimmt die Datei /boot/grub/grub.cfg. Diese Datei wird automatisch generiert aus den Dateien in /etc/grub.d. Sollten händische Änderungen an den Dateien in /etc/grub.d oder an der /etc/default/grub vorgenommen werden, muss im Anschluss der Befehl "sudo update-grub" ausgeführt werden, damit die Startdatei /boot/grub/grub.cfg neu erstellt wird.

Ferner wurde die Laufwerksnummerierung so angepasst, das ein Umrechnen zwischen sda-, und hd-Wert von nun an entfällt.

	  Linux		 	 grub2

	/dev/sda1		(hd0,1)
	/dev/sda2		(hd0,2)
	/dev/sda3		(hd0,3)

	usw. 

Boot-Menü sicht bar machen

Die Datei /etc/default/grub enthält alle Parameter zur Steuerung des Bootvorganges und des Aussehens des Boot-Menüs. Falls das Menü beim Starten nicht sichtbar sein sollte, die folgenden zwei Zeilen in der /etc/default/grub auskommentieren, und anschließend den Befehl "sudo update-grub" ausführen (Ausser bei Variante 3).

	#GRUB_HIDDEN_TIMEOUT=0
	#GRUB_HIDDEN_TIMEOUT_QUIET=true 

Es gibt aber noch eine andere Möglichkeit in das Menü zu gelangen, falls es nicht angezeigt werden sollte. Sie dücken beim Start des Computers solange die Shift-Taste bis das Menü erscheint.

Varianten zum starten des Systems

Zuerst einmal müssen Sie in das System hineinkommen, um die notwendigen Änderungen durchführen zu können. Dazu gibt es mehrere Möglichkeiten.

Variante 1:



Wenn das Menü erscheint drücken Sie die Taste "e". Es erscheint nun die Befehlssequenz die sich hinter diesem Menüpunkt verbirgt.



Gehen Sie mit den CURSOR-Tasten auf die Zeile "search ... -- fs-uuid -- set ...." und löschen die gesamte Zeile. Anschließend starten Sie das System mit der Tastenkombination "STRG+x".

Variante 2.



Sie drücken die Taste "c" und kommen damit in die grub-shell.



Hier geben Sie nun folgende Befehlsfolge ein. Achten Sie bitte darauf, dass Sie zu diesem Zeitpunkt eine englische Tastatur haben. Folgende Zeichen erreichen Sie mit folgenden Tasten:

	Englisch	Deutsch
	  =		  '		(Taste neben Backspace ohne Shift)
	  (		  9
	  )		  =
	  /		  -
	  y		  z
	  z		  y

Die einzugebende Befehlsfolge ist:

	set root=(hd0,x)			x ist dabei anzupassen
	linux /vmlinuz root=/dev/sdax ro 	x ist dabei anzupassen
	initrd /initrd.img
	boot 

Variante 3.

Mit dieser Variante starten Sie nicht das installierte System, sondern verschaffen sich Zugang zu den Daten auf der Platte. Dieses sollte nur in Ausnahmefällen vorgenommen werden, da die geänderten Einstellungen nur bis zum nächsten Update vorhanden bleiben - also temporär sind -.

	Live-CD starten
	Terminal aufrufen 

	mit "fdisk -l" kann sich ein Überblick über die Partitionen verschafft werden.  

	"sudo mount /dev/sdax /mnt" 	-> x ist dabei anzupassen
	    Damit steht der Platteninhalt im Verzeichnis /mnt zur Verfügung

	chmod 666 /mnt/boot/grub/grub.cfg

	grub.cfg in einen Editor laden z.B. mittels ALT+F2 "kate"

	Die Einträge "search ... - -fs-uuid - - set ..." suchen und Auskommentieren. 
	    Diese Einträge kommen mehrmals vor.

	chmod 444 /mnt/boot/grub/grub.cfg
	System neu starten	

Fehlerbehebung

Grub2 arbeitet zur Identifizierung der Devices mit dem UUID-Code. Sollte er kein Gerät mit diesem UUID-Code finden, so sollte die Zeile "set root(hd0,x)" ausgeführt werden, die dann normal auf die Devices zugreift. Diese Umschaltung funktioniert in diesem falle aber nicht. In einem Terminal können Sie sich mit dem Befehl "blkid" die UUIDs ihres Systems anzeigen lassen. Diese sollten Sie mit denen im Menü vergleichen. Evtl. sind diese nicht identisch.

Um die UUID-Abfrage abzuschalten muss die Datei /etc/default/grub angepasst werden. Diese Datei laden Sie mit root-Rechten in einen Editor z.B. mittels ALT+F2 "kdesu kate" und Entferne das Kommentarzeichen "#" aus der Zeile "#GRUB_DISABLE_LINUX_UUID=true". Im Anschluss müssen Sie in einem Terminal den Befehl "sudo update-grub" ausführen, damit die Datei /boot/grub/grub.cfg neu erstellt wird.

Damit sollten Sie nun in das System ohne Problem kommen, da die UUID-Auswertung abgeschaltet ist.

Downgrade auf grub1

Falls alles nicht zum Erfolg führen sollte, bleibt noch eine Brutalmethode übrig, die aber nur als letzter Ausweg vorgenommen werden sollte. Das Sie vorher eine Datensicherung vornehmen versteht sich von selbst, da dieser Weg auch das Risiko in sich trägt, dass Sie das gesamte System neu aufsetzen dürfen.

Deinstallieren Sie die Pakete "grub-pc" Version 1.97, "grub-common" Version 1.97 und alle weiteren Programme von grub2 die Sie noch installiert haben. Anschließend installieren Sie das Paket "grub" Version 0.97. Dabei wird das Paket "grub-common" Version 1.97 wieder mit installiert.

Zu diesem Zeitpunkt haben Sie die Pakete entfernt bzw. hinzugefügt. Keines dieser Pakete hat an ihrer Konfiguration bisher Änderungen durchgefürt. Diese Änderungen nehmen Sie nun in einem Terminal mit root-Rechten vor.

	sudo grub-install /dev/sda	
	sudo update-grub

Mit "sudo grub-install /dev/sda" installieren Sie den grub1-Bootmanger in den MBR. Falls Sie den Bootmanger in einer Partition installieren möchten, müssen Sie diesen Wert anpassen. Mit "sudo update-grub" erstellen Sie aus den alten grub2-Dateien eine neue Datei /boot/grub/menu.lst die von grub1 beim Starten ausgewertet wird, deswegen sollten Sie die Frage auch mit "y" beantworten ob das System diese Arbeit für Sie vornehmen soll. Aus diesem Grund wurden die grub2-Dateien nicht gelöscht, und wegen dieser Erstellung wird das Paket "grub-common" wieder benötigt. Die Datei "menu.lst" können Sie nun normal bearbeiten.

Quellen:

Fehlerbeschreibung http://forum.ubuntuusers.de/topic/.../#post-2266997
Grub2 Erklärung	   http://wiki.ubuntuusers.de/GRUB_2
Grub2 Steuerung	   http://wiki.ubuntuusers.de/GRUB_2/Konfiguration
Downgrade grub1	   http://forum.ubuntuusers.de/topic/grub2-downgrade-auf-grub1/#post-2209081
Der Autor

Mit der Version SuSE 6.1 ist der Autor auf Linux umgestiegen. Einigen Jahre wurde mit der Distribution Debian gearbeitet bis auf die Kubuntuversion 9.04 gewechselt wurde. Nach einem Studium der Elektrotechnik und den ersten Jahren als Programmierer, ist er heute immer noch im IT-Sektor tätig. Zu erreichen ist er über die LUG-Balista Hamburg e.V. in Hamburg-Barmbek oder über den Tux-Treff. Dieser Artikel steht unter der Lizenz CC-BY-SA.


letzte Änderung: 09.06.2011 | copyright by LUG-Balista Hamburg e.V. 2011