Home / LinuxUser / 2010 / 01 / Ladehemmung

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

AA_cannon_sxc_L_Avi_1121648.jpg

© sxc.hu, L_Avi

Ladehemmung

Neuerungen und Fallstricke in Grub2

27.11.2009 Mit Grub2 versuchen die Entwickler viele Probleme des Vorgängers zu beheben. Allerdings ändert sich damit auch die Konfiguration. Wir zeigen, wo's künftig langgeht.

Bootloader helfen, ein Betriebssystem mit allen erforderlichen Optionen zu starten. Der Lilo-Nachfolger Grub macht hier keine Ausnahme: Ob Linux, Windows oder eine der BSD-Varianten – mit den richtigen Kommandos schubsen Sie das gewünschte System in den Arbeitsspeicher, und los geht's.

Wenn alles so gut läuft, warum dann eine Neuauflage? Im Laufe der Zeit haben sich in Grub einige Hilfskonstruktionen angesammelt, mit denen die Entwickler neue Features implementierten. Mit Grub2 [1] erhielt der Bootmanager nun eine klarere Struktur, einen modularen Aufbau und Support für internationale Zeichensätze (für nicht-lateinische Buchstaben im Startmenü) erhalten. Hinzu kommt außerdem ein grafisches Interface für den Startschirm, das sich über ein Theming-System leicht anpassen lässt.

Der Code von Grub2 basiert auf dem mittlerweile eingestellten Pupa [2]. Derzeit befindet sich das Projekt noch ziemlich stark in Bewegung, eine Wiki-Seite [3] informiert über den aktuellen Stand der Dinge. Einiges funktioniert noch nicht, aber alle grundlegenden Routinen haben die Entwickler mittlerweile implementiert.

Etwas holperig verliefen erste Versuche, Grub2 im großen Stil in die freie Wildbahn zu entlassen: Canonical lieferte mit der aktuellen Release 9.10 von Ubuntu (Codename "Karmic Koala") die Version 1.97 Beta 4 von Grub aus [4]. Zahlreiche Anwender berichten in verschiedenen Foren von Schwierigkeiten bis hin zu einem nicht mehr bootbaren System. Allerdings bietet das Wiki von Ubuntu Abhilfe für viele Probleme. Der Kasten "Grub2 in Karmic Koala" fasst die wichtigsten Schritte zusammen.

Zu diesem Schwierigkeiten kam noch ein Problem mit dem Passwortschutz für den Bootloader: Ein Bug erlaubte es, die Sperre bereits aufzuheben, wenn ein Anwender nur den ersten Buchstaben eines Passworts richtig eingab [5]. Diesen Fehler haben die Entwickler allerdings schon behoben und eine neue Version freigegeben. Angesichts solcher gravierenden Lücken empfiehlt es sich aber, die üblichen Kanäle für Sicherheitsaktualisierungen immer gut im Blick zu behalten.

Abbildung 1

Abbildung 1: Mit Karmic Koala trat die neue Version erstmals im großen Stil in Erscheinung. Dabei kam es zu einigen Pannen, die bei den Usern einen zwiespältigen ersten Eindruck hinterließen.

Grub2 in Karmic Koala

Mit "Karmic Koala" vollzieht Canonical den Wechsel zu Grub2. Das hat bei manchen Systemen zu Problemen geführt, insbesondere bei einem Update von 9.04 ("Jaunty Jackalope") [6]. In diesem Fall installiert das Setup keinen Grub2. Möchten Sie auf dennoch auf die neuere Version wechseln, öffnen Sie ein Terminal und geben den folgenden Befehl ein:

$ sudo apt-get install grub2

Anschließend installieren Sie das Paket grub-pc, das als Abhängigkeit grub-common nach sich zieht. Damit haben Sie die notwendigen Dateien auf dem Rechner. Beim Installieren öffnet sich ein Dialog, der darauf hinweist, dass Grub Legacy (also die Vorversion) auf dem Rechner installiert sei. Sie bestätigen mit OK und wählen im folgenden Dialog mit Yes die Option, dem derzeitigen Menü einen zusätzlichen Eintrag hinzuzufügen, über den Sie Grub2 anspringen und testen können.

Danach sucht die Konfigurationsroutine noch in der vorhandenen Grub-Konfiguration nach möglichen Startoptionen und zeigt diese zum Bearbeiten an. Anschließend endet das Setup. Nun befinden sich beide Bootloader parallel auf dem System, Sie sehen nach einem Neustart aber noch das alte Menü mit dem zusätzlichen Eintrag für Grub2.

Wählen Sie diesen an und starten Sie aus dem Grub2-Menü dann nacheinander alle Systeme. Klappt das, öffnen Sie wieder ein Terminal und geben dort den folgenden Befehl ein:

$ sudo upgrade-from-grub-legacy

Das System fragt nun nach, von welchem Gerät Sie den Rechner booten möchten. Wählen Sie hier unbedingt mit der Leertaste das korrekte Device aus – anderenfalls startet das System beim nächsten Mal mit der Meldung Error 15 (das Start-Device wurde nicht gefunden).

Haben Sie bereits ein System, bei dessen Start die besagte Meldung Error 15 erscheint, booten Sie von einer Live-CD, mounten die Root-Partition nach /mnt und binden mit den folgenden Befehlen das Dev-Filesystem ein und wechseln in ein Change-Root-System:

$ sudo mount --bind /dev /mnt/dev
$ sudo chroot /mnt

Anschließend rufen Sie mit dpkg-reconfigure grub-pc noch einmal die Konfiguration von Grub2 auf. Haben Sie alles richtig ausgewählt, verlassen Sie mit [Strg]+[D] die Chroot-Umgebung, lösen das gemountete Dateisystem und starten den Rechner neu. Nun sollte alles funktionieren.

Neue Struktur

Wer früher das Startmenü auf einem Rechner durch einen zusätzlichen Eintrag erweitern oder einen bestehenden Abwandeln wollte, der lud dazu die Datei /boot/grub/menu.lst in einen Editor und passte sie seinen Wünschen gemäß an. Damit macht Grub2 Schluss.

Zwar findet sich nach der Installation des Bootloaders eine Datei grub.cfg im Verzeichnis /boot/grub. Sie enthält die Konfiguration, die Sie durch den Aufruf von update-grub erstellen. Manuelle Änderungen an dieser Datei sehen die Entwickler aber nicht vor.

Generell sieht Grub2 vor, dass vieles automatisiert passiert. So suchen Hilfsskripte die Partitionen des Rechners nach bekannten Betriebssystemen ab und erstellen für diese ohne Ihr Zutun die notwendigen Einträge. In vielen Fällen reicht das völlig aus – etwa für ein Dual-Boot-System, auf dem sich Linux und Windows befinden.

Mit der neuen Version hat sich auch die Struktur der Dateien und Verzeichnisse geändert (siehe Tabelle "Dateien und Verzeichnisse"). Auf einem Ubuntu/Debian-System legen Sie unter /etc/grub/default das generelle Verhalten der Software fest. So schalten Sie hier bei Bedarf über die Option GRUB_DISABLE_LINUX_UUID=true die Funktion aus, die beim Start die Angabe der zu bootenden Partition in Form einer UUID erwartet. Stattdessen arbeiten Sie mit den bekannten Gerätenamen.

/boot/grub/grub.cfg Zentrale, automatisch erstellte Konfigurationsdatei von Grub2
/etc/default/grub Generelle Optionen (keine Menü-Einträge)
/etc/grub.d Verzeichnis mit den Hilfsskripten zum Erkennen der Partitionen und der darauf befindlichen Betriebssysteme. Hier erstellen Sie zusätzliche Skripte, mit denen Sie bei Bedarf eigene Menü-Einträge hinzufügen.

Für den Endanwender spielen die meisten Optionen eine eher nachgelagerte Rolle. Optimalerweise haben die Distributoren die Funktion aktiviert, mit der Sie über das Halten von [Umschalt] das Menü auf den Schirm holen, obwohl Sie es normalerweise nicht zu Gesicht bekommen. Danach haben Sie die Möglichkeit, im Falle eines Fehlers manuell in die Konfiguration einzugreifen.

Bleibt das Hinzufügen von Menü-Einträgen: Möchten Sie in einem Bootmenü nachträglich installierte Systeme unterbringen, die die Automatik nicht erkennt oder die zum Start spezielle Parameter benötigen, so müssen Sie dazu künftig ein kleines Skript schreiben. Dazu gilt es zu verstehen, wie Grub2 arbeitet: Beim Start führt es alle Skripte aus, die sich in /etc/grub.d/ befinden und von Ihnen mittels sudo chmod u+x Skript mit dem entsprechenden Bit versehen wurden. In der Standardeinstellung haben die System-Skripte bereits die richtigen Rechte.

Ziffern im Dateinamen sorgen für die richtige Reihenfolge beim Ausführen. Listing 1 zeigt den Inhalt eines individuellen Startskriptes. Damit booten Sie die System Rescue CD von der Festplatte. Es handelt sich um ein Here-Dokument, mit dem Sie (ähnlich wie mit Echo) eine Zeichenkette ausgeben oder per Umleitung in eine Datei schreiben.

echo "Angepasster Eintrag für den Start einer Rettungs-CD als Image" >&2
cat << EOF
menuentry "Starte System Rescue CD von der Festplatte" {
        set root=(hd0,10)
        linux   /sysrcd/rescuecd subdir=sysrcd setkmap=de
        initrd  /sysrcd/initram.igz
}
EOF

Mit dem Befehl set root=(hd0,10) sorgen Sie dafür, dass die zehnte Partition auf der ersten Platte als Root-Dateisystem fungiert. Das Schema zum Nummerieren der Partitionen startet in der neuen Version von Grub bei 1, anstatt wie bei Vorversion bei 0. Über die Kommandos linux und initrd setzen Sie die Pfade zum Kernel und der Initial RAM Disk, wobei der Kernel noch zwei Parameter mitbekommt. Bei Grub Legacy, der Vorversion, gab es ein reserviertes Wort root. Das haben die Entwickler nun so abgeändert, dass es sich dabei um eine Variable handelt. Die vollständige Liste der Grub2-Kommandos finden Sie im Netz [7].

Optisch aufgepeppt

Beim Booten präsentiert sich das Startmenü normalerweise etwas dröge im Zwei-Farben-Look. Mit ein paar einfachen Handgriffen bringen Sie etwas Farbe ins Spiel. Grub2 akzeptiert als Hintergrund für das Startmenü Bilder im PNG- sowie TGA-Format. Diese kopieren Sie unter Ubuntu in den Ordner /usr/share/images/grub/. Vorpaketierte Bilder landen mittels sudo apt-get install grub2-splashimages auf der Festplatte.

Nun teilen Sie dem System noch mit, welches von den Bildern Sie verwenden möchten. Dazu nutzen Sie im Ordner /etc/grub.d/ eine andere Startdatei, die bei Ubuntu/Debian-Systemen 05_debian_theme heißt. Hier suchen Sie die Zeile 16, die Sie auch in Listing 2 sehen. Hier passen Sie den Pfad gemäß dem System (siehe oben) und den Dateinamen gemäß Ihren Vorstellungen an. Vergessen Sie anschließend nicht, den Befehl update-grub auszuführen, um die Änderungen anzuwenden. Das Ergebnis sehen Sie in Abbildung 2.

Abbildung 2

Abbildung 2: Mit wenigen Handgriffen versehen Sie das Bootmenü mit einem Hintergrundbild.

#!/bin/bash -e
source /usr/lib/grub/grub-mkconfig_lib
set_mono_theme()
{
  cat << EOF
set menu_color_normal=white/black
set menu_color_highlight=black/white
EOF
}
# check for usable backgrounds
use_bg=false
if [ "$GRUB_TERMINAL_OUTPUT" = "gfxterm" ] ; then
  for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; do
    if is_path_readable_by_grub $i ; then
      bg=$i
Tip a friend    Druckansicht Bookmark and Share
Kommentare

4735 Hits
Wertung: 168 Punkte (10 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...