Top-Fragen
Zeitleiste
Chat
Kontext
Grand Unified Bootloader
Bootloader-Paket Aus Wikipedia, der freien Enzyklopädie
Remove ads
Der Grand Unified Bootloader (kurz GRUB, englisch für Großer Vereinheitlichter Bootloader) ist eine freie Bootloader-Software, die oft zum Starten von unixoiden Betriebssystemen wie z. B. Linux eingesetzt wird.
GRUB wurde innerhalb des GNU-Hurd-Projektes als Bootloader entwickelt und wird unter der GPL bereitgestellt. Aufgrund seiner höheren Flexibilität verdrängte GRUB in vielen Linux-Distributionen den traditionellen Bootloader Linux Loader (LILO) und bietet inzwischen die meisten Möglichkeiten Linux zu booten.[4] GRUB wird auch in Solaris 10 x86 benutzt.
In seiner gegenwärtigen Gestalt „GRUB 2“ ist er nach ersten Arbeiten um 2002 beginnend mit 2009 der voreingestellte Bootloader gängiger[5][6] und seit 2014 der meisten[4] Linuxdistributionen und eine komplette Überarbeitung der 0.9x-Reihe, die als „nicht mehr wartbar“[7] seit 2005 nicht neu herausgegeben und nach Vorstellung von GRUB 2 in GRUB Legacy (englisch legacy ‚Altlast‘, ‚Erbe‘, ‚Hinterlassenschaft‘) umbenannt wurde.
Remove ads
Leistungsmerkmale
- Liest verschiedene Dateisysteme:
- Kann Datenträger blockweise lesen.
- Volle EFI-Unterstützung für x86-CPUs ab v1.9.7 .[8]
- Bootet verschiedene Betriebssysteme per Auswahlmenü und automatischem Zeitablauf (z.B. Linux und Windows als Multi-Boot-System), kann andere Bootloader aufrufen.
- Bootet Betriebssysteme von Festplattenlaufwerken, Disketten, optischen Laufwerken, Flash-Speichern und (GRUB2) Installationsabbildern.
- Verfügt über einen eingebauten Kommandozeileninterpreter (Shell).
- Ist relativ einfach konfigurierbar (Farben, Hintergrundbild, Struktur usw.).
- Kann mit einem Passwort gesichert werden.
- Kann über TFTP bereitgestellte Linux-Kernel booten.
Remove ads
Installation
Zusammenfassung
Kontext
Werden Festplatten oder Wechseldatenträger mit Linux neu bespielt wird gewöhnlich GRUB als der den Kernel ladende Bootloader voreingestellt mitaufgesetzt und fertig eingestellt.
Um GRUB gesondert installieren zu können muss ein für ein bestehendes Unix-artiges Betriebssystem geeignetes, die nötigen Werkzeuge enthaltendes Programmpaket[9] erworben und installiert werden. Für Rechner mit 86er CPU mit 64b-Erweiterung und Betrieb über das eigentliche Extensible Firmware Interface heisst das fertig kompiliert etwa grub-efi-amd64-bin. Die Installation von GRUB am Terminal in Linux sieht damit beispielsweise folgendermaßen aus:
grub2-Benutzer@Efirechner:~$ mount dev/sda1 /boot/efi
grub2-Benutzer@Efirechner:~$ sudo grub-install
[sudo] password for grub2-Benutzer:
Die EFI-Partition muss unter /boot/efi eingehängt werden (ist sie nicht in /etc/fstab eingetragen muss das mit Verwaltungsrecht geschehen). Sie ist die erste Partition und in der Zählung des Betriebssystems auf der ersten Festplatte, was nicht notwendigerweise der Sicht der Firmware gleichen muss. Der Befehl grub-install
muss mit Verwaltungsrecht eingegeben werden.
Anschließend werden die Datei /boot/efi/EFI/Linuxbetriebssystem/grubx64.efi angelegt, die restlichen Dateien in /boot/grub/x86_64-efi abgelegt und das nächste Hochfahren des Rechners vom EFI an GRUB weitergegeben.
Remove ads
Funktionsweise
Zusammenfassung
Kontext




boot.img
ist exakt 446 Bytes groß und befindet sich zusammen mit der Partitionstabelle im MBR (Sektor 0). core.img
wird in die leeren Sektoren zwischen MBR und erster Partition geschrieben, falls verfügbar (die erste Partition beginnt üblicherweise bei Sektor 63 oder 4096 anstatt Sektor 1, das muss aber nicht vorliegen). Das Verzeichnis /boot/grub
kann auf einer eigenen Partition liegen oder auf der /-Partition.GRUB Legacy
Üblicherweise ist der first stage bootloader von GRUB, die sogenannte Stage 1, im Master Boot Record (MBR), den ersten 512 Bytes des Systemdatenträgers. Zumal dieser Platz wegen der Partitionstabelle des MBR zusätzlich beschränkt ist kann die Stage 1 nur den ersten Block der sogenannten Stage 2 laden. In diesem Sektor befinden sich der Programmcode und eine Blockliste zum Lesen der restlichen Sektoren von Stage 2.
Das zu ladende Image der Stage 2 kann an einem (fast) beliebigen Speicherort des Datenträgers sein. In Unix-artigen Systemen ist es meistens als /boot/grub/stage2 gespeichert. Die Stage 2 enthält die Dateisystemtreiber, den Programmcode für das Auswahlmenü und die GRUB-Kommandozeile sowie die Laderoutine für die Kernel.
Nach dem Laden von Stage 2 wird, sofern vorhanden, die Konfigurationsdatei /boot/grub/menu.lst eingelesen und verarbeitet. In dieser Datei sind die Einträge des Auswahlmenüs definiert, welche nun in der Konsole angezeigt werden. Aus dem Menü können nun das zu bootende Betriebssystem ausgewählt oder Befehle über die Kommandozeile direkt an GRUB gesendet werden. Stage 2 stellt somit den eigentlichen Bootloader dar, welcher einen Kernel oder den Bootsektor einer Partition lädt.
Diese Zweiteilung des Bootloaders hatte den Nachteil, dass er nach Änderungen an der Stage 2 wie etwa Verschiebung innerhalb der Partition nicht mehr bootfähig ist. Deswegen wurde die wahlweise Zwischenstufe Stage 1.5 eingeführt. Diese wird z.B. mittels Nachrüstung für das Extensible Firmware Interface[10] auf den Datenblöcken nach dem vierunddreissigsten logischen Block (den ersten 17 KiB) des Datenträgers und der ersten Partition (gewöhnlich ab dem zweiten MiB des Datenträgers) installiert[Anmerkung 1] und kann genau ein Dateisystem lesen. Dabei wird ihre Variante gewählt, welche das Dateisystem jener Partition unterstützt, auf welcher Stage 2 liegt. Zurzeit gibt es Stage 1.5 für die Dateisysteme FAT, Minix, ext2, ext3, JFS, ReiserFS, UFS2, XFS[11] sowie Joliet[12]. Unterstützung für Reiser4[13] und ext4[14] gibt es durch Patches von Drittanbietern.
GRUB 2
Für den Nachfolger GRUB 2 wurde ein vollständiges Redesign durchgeführt und auf Rückwärtskompatibilität zu GRUB Legacy verzichtet. Stage 2 wurde in einen Kernel (kernel.img) und viele ladbare Module (*.mod) aufgeteilt; der Kernel enthält nur essentiellen Code mit Dekompression, ELF-Lader für Module, Festplattenzugriff und eine Rettungs-Shell. Stage 1.5 wie bisher entfällt. Stage 1 wird für das Hochfahren des Rechners nach BIOS-Art bzw. mit dem CSM als boot.img fortgeführt und ruft den ersten Block der den Kernel beinhaltenden Datei auf.
Bei der Installation werden die Module für das Dateisystem, das die restlichen Komponenten enthält, an den Kernel angehängt und als Datei core.img an einem festgelegten Ort abgelegt. Hierbei kommt eines der Kompressionsverfahren LZMA oder LZO zum Einsatz, so dass die komprimierte Datei z. B. noch im Bootbereich hinter dem MBR abgelegt werden kann (Bei der Nutzung einer GPT erfolgt diese Ablage in eine eigens dafür vorgesehene BIOS Boot-Partition). Nach dem Laden wird der Code entpackt und die Konfigurationsdatei /boot/grub/grub.cfg geladen. Bei Bedarf werden Module für weitere Dateisysteme, Bootmenü, Bootroutinen für verschiedene Betriebssysteme und GRUB Shell vom Dateisystem nachgeladen. Ausser der Unix-Shell-ähnlichen Skriptsprache bietet GRUB 2 auch Unterstützung für die Sprache Lua.
Des Weiteren lässt sich GRUB 2 in einer überschaubaren Anzahl zumeist nicht mehr neuer Hauptplatinen als Payload für die freie BIOS-Alternative coreboot verwenden.[15] Dabei muss GRUB nicht auf dem Datenträger gespeichert werden, sondern wird zusammen mit coreboot in den Flash-Speicher-Baustein („BIOS Chip“) der Platine geschrieben. Beim Bootvorgang übergibt coreboot, nachdem es die Hardware initialisiert hat, die Kontrolle an GRUB, welches anschließend wie üblich ein Menü anzeigt und das Laden eines Kernels erlaubt.
Die unterstützten Plattformen und Architekturen sind neben 32- und 64-Bit-x86 (32-Bit: IA-32 bzw. i386; 64-Bit: x64, Linux-üblich als „amd64“ oder „x86-64“ bezeichnet) nun auch Open-Firmware-basierte PowerPC-Rechner (Power Mac und Pegasos) und ab GRUB 2.02 auch ARM und ARM64 (64-Bit, ab ARMv8).[16]. An der Unterstützung von UltraSparc wird gearbeitet.[17][18]
Besonderheiten von GRUB
GRUB kann über das Dateisystem auf die als normale Dateien gespeicherten Betriebssystemkerne zugreifen. Andere Bootloader wie zum Beispiel LILO waren lange Zeit auf Konfigurationsdaten angewiesen, die angeben, in welchen Datenblöcken der Kernel liegt. Diese Angaben können sich nach einem Kernel-Update ändern, und die entsprechenden Konfigurationsdaten müssen neu geschrieben werden. Dieser Schritt ist bei GRUB dagegen nicht notwendig.
Remove ads
Erweiterungen
Der Standard-GRUB stellt, wie oben beschrieben, einen eigenen Bootblock zur Verfügung. Das führt dazu, dass man GRUB normalerweise nicht von einem bestehenden Betriebssystem aus starten kann. Die GRUB-Shell ist unter Linux zugänglich, eine Alternative stellt das Projekt GRUB4DOS bereit, welches GRUB Legacy so erweitert, dass es als Programm unter DOS bzw. als GRLDR aus dem Windows-XP-/-NT-Bootmenü, oder per ntldr
-Funktion von GRUB 2 aus startbar ist. Letzteres erspart das umständliche Extrahieren des Linux-Bootblocks mittels dd
in eine Datei. Jedoch ist Grub4dos nur für DOS und 32-Bit-Windows-Systeme, die dazu kompatibel sind, verfügbar. Auf 64-Bit-Systemen können keine DOS-Programme ausgeführt werden, allerdings wird an einer Version für UEFI gearbeitet.[19]
Mit TrustedGRUB wird derzeit eine Erweiterung von GRUB entwickelt, die Trusted Platform Module (TPM) unterstützt.[20]
Remove ads
Siehe auch
Weblinks
Commons: GNU GRUB – Sammlung von Bildern, Videos und Audiodateien
- Homepage von GRUB (englisch)
- GRUB for DOS (englisch)
- Artikel zu Änderungen in GRUB 2
- Tutorial zu GRUB-Legacy (englisch)
- Tutorial zu GRUB2 (englisch)
- The GRUB MBR - A Disk Editor View and Comments on the Code (Erklärt Arbeitsweise von GRUB 1 im Detail) (englisch)
Anmerkungen
- Das Beispiel ist vielleicht nicht wirklichkeitsnah weil als der alte GRUB noch weit verbreitet gewesen ist lange nachdem die Entwickler die letzte Fassung herausgegeben hatten ist die GUIDPT in haushaltsüblichen Rechnern erst aufgekommen. Ehedem ist es nähergelegen auf einem nach „msdos“-Art formatierten Laufwerk mit echten 512B-Blöcken notwendigerweise ab dem zweiten Block die ~ 30 KB große Zwischenstufe und ab dem nächsten Block die erste Partition zu haben.
Remove ads
Einzelnachweise
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads