| Zeile 1: | Zeile 1: | ||
| − | + | {{Infobox Software | |
| + | | Name = GRand Unified Bootloader | ||
| + | | Entwickler = - | ||
| + | | Version = 1.98 | ||
| + | | Lizenz = GNU GPL Version 3 | ||
| + | | Plattform = Unix | ||
| + | | Homepage = [http://www.gnu.org/software/grub/grub.html http://www.gnu.org/software/grub/grub.html] | ||
| + | }} | ||
| − | |||
| − | ==Funktionen== | + | Der '''GR'''and '''U'''nified '''B'''ootloader ('''GRUB''') ist ein [[Multiboot]]-konformer [[Bootloader]] der ursprünglich aus dem GNU-Hurd-Projekt entstammt, aber inzwischen bei allen gängigen Linux-Distributionen als Bootloader eingesetzt wird. Im Falle der Betriebssystementwicklung ist es empfehlenswert GRUB den Kernel booten zu lassen, da GRUB sehr flexibel ist und einen großen Funktionsumfang bietet (siehe Abschnitt [[Grand Unified Bootloader#Warum GRUB? | Warum GRUB?]]). |
| + | |||
| + | |||
| + | == Warum GRUB? == | ||
| + | |||
| + | Im [http://lowlevel.brainsware.org/forum/ Forum] und hier im Wiki wird von den meisten GRUB empfehlen und selbst verwendet. Außerdem benutzen die Tutorials im Wiki (größtenteils) GRUB. Dies geschieht aus folgenden Gründen: | ||
| + | * Einen Bootloader zu schreiben setzt '''tiefergehende Assemblerkenntnisse''' voraus. Falls man diese noch nicht hat, dann wird man sehr wahrscheinlich am Bootloader scheitern oder aber einen Teil/den größten Teil aus anderem Quellcode zusammenkopieren. | ||
| + | * Dabei kommen dann '''fehleranfällige''' Bootloader heraus, von denen der jeweilige Programmierer meist nicht weiss was sie genau machen (z.B. in welchem Dateiformat der Kernel sein muss, an welche Adresse der Kernel geladen wird oder wieviel vom Kernel überhaupt geladen wird) und im Forum werden dann Threads mit 500 Zeilen zusammengefrickelten Assemblercode und der Frage ''"Warum funktioniert denn das nicht so wie ich das will!?"'' erstellt. Der Punkt hier ist nicht, dass wir zu faul wären Fragen zu beantworten, sondern, dass es einfach nichts bringt einen eigenen Bootloader zu schreiben, wenn derjenige nicht einmal im Ansatz verstanden hat, was er denn da überhaupt tut. Das ist dann für uns primär frustrierend. | ||
| + | * Diese Fehleranfälligkeit kann auch dazu führen, dass das ganze eine Weile funktioniert, aber irgendwann tauchen plötzlich seltsame Fehler auf. Dies kann unter anderem den Grund haben, dass nicht der komplette Kernel geladen wird, sondern z.B. nur die ersten paar Kilobyte. Solche Fehler sind meist extrem '''schwer zu debuggen'''. | ||
| + | * Eventuell tauchen später auch '''neue Anforderungen''' an den Bootloader auf, z.B. könnte man bei einem [[Mikrokernel]] durch den Bootloader Module (meistens Treiber) laden wollen. Dann wird entweder versucht das schnell ''hinzufrickeln'' oder aber man entscheidet sich dann doch gegen einen Mikrokernel, d.h. es kann '''Auswirkungen auf das Design''' des Kernels haben. | ||
| + | * Falls man allerdings von Anfang an intensiv seinen Bootloader plant - was einem Anfänger aufgrund mangelnder Erfahrung verwehrt bleibt - und diesen sehr gewissenhaft programmiert, dann ist das ein Projekt für sich, d.h. es wird '''Unmengen an Zeit verschlucken''' (wir reden hier nicht von Tagen oder Wochen). | ||
| + | * Der '''[[Bootvorgang]] auf x86-Prozessoren''' hat so manches Hindernis, welches von Intel und Konsorten gerne aufgrund von Abwärtskompatibilität aufgestellt wurde. Beispiele hierfür sind der [[Real Mode]] (der Bootloader startet im Realmode) und das [[A20-Gate]], welches aktiviert werden muss. | ||
| + | |||
| + | Wir möchten natürlich dem geneigten Leser nicht vorenthalten, was genau er denn verpasst, wenn er GRUB benutzt: | ||
| + | * Eine eingehende Beschäftigung mit dem [[Real Mode]] bleibt wahrscheinlich aus (oder kommt erst, wenn man sich mit dem [[Virtual 8086 Mode]] beschäftigt). | ||
| + | * Assemblerkenntnisse zu erlangen auch für den Kernel bzw. darüber hinaus fürs Debuggen wichtig, da z.B. im Kernel an einigen kleinen Stellen [[Inlineassembler mit GCC | Inlineassembler]] verwendet werden muss. | ||
| + | |||
| + | == GRUB legacy == | ||
| + | |||
| + | GRUB legacy ist die ursprüngliche Version von GRUB und wird unter der [[Lizenzen#General_Public_License | GNU General Public License]] vertrieben. Wie man einen Multiboot-Kernel erstellt, der mit GRUB gebootet werden kann, wird im Artikel [[Teil 4 - Hello_World | OS-Dev für Einsteiger - Teil 4]] beschrieben. | ||
| + | |||
| + | === Funktionen === | ||
* Liest [[ext2]], [[ext3]], UFS, UFS2, ReiserFS, [[FAT]], NTFS, [[ISO9660]], JFS, Minix, FFS, XFS | * Liest [[ext2]], [[ext3]], UFS, UFS2, ReiserFS, [[FAT]], NTFS, [[ISO9660]], JFS, Minix, FFS, XFS | ||
* Auswahlmenü um verschiedene Betriebssysteme zu laden. | * Auswahlmenü um verschiedene Betriebssysteme zu laden. | ||
| Zeile 11: | Zeile 38: | ||
* Kann von einem TFTP-Server booten | * Kann von einem TFTP-Server booten | ||
| − | ==Siehe auch== | + | == GRUB 2 == |
| − | * [[ | + | |
| − | * [[GRUB-Image erstellen]] | + | GRUB 2 ist der Nachfolger von GRUB legacy und wurde von Grund auf neu geschrieben. Er ist genauso wie GRUB Legacy [[multiboot]]fähig. Außerdem wird mit GRUB 2 der Multiboot 2 Standard, der sich momentan noch in Entwicklung befindet, unterstützt. |
| − | * [[GRUB-Image erstellen (Windows)]] | + | |
| − | * [[GRUB auf CD]] | + | === Neuerungen gegenüber GRUB Legacy === |
| − | * [[GRUB Installation auf einem USB-Stick]] | + | GRUB 2 weißt eine Vielzahl an Neuerungen auf: |
| + | |||
| + | * Scripting-Support mit Lua | ||
| + | * Grafische Benutzerschittstelle (nicht mit einer klassischen GUI bzw. einem Desktop zu verwechseln!) | ||
| + | * Dynamisches Laden von Module auch während der Laufzeit | ||
| + | * Unterstützung neuer Architekturen | ||
| + | * Internationalisierung | ||
| + | * Modulares und objektorientiertes Framework für Dateisysteme etc. | ||
| + | * Cross-Plattform-Installation | ||
| + | |||
| + | |||
| + | == Siehe auch == | ||
| + | * GRUB legacy | ||
| + | ** [[Teil 4 - Hello_World | OS-Dev für Einsteiger - Teil 4]]: kleiner Beispielkernel mit Multiboot | ||
| + | ** [[GRUB-Image erstellen]] | ||
| + | ** [[GRUB-Image erstellen (Windows)]] | ||
| + | ** [[GRUB auf CD]] | ||
| + | ** [[GRUB Installation auf einem USB-Stick]] | ||
| + | * GRUB 2 | ||
| + | ** [http://wiki.osdev.org/GRUB_2 Disketten-/ISO-Images mit GRUB 2 erstellen] | ||
| − | ==Weblinks== | + | == Weblinks == |
| − | * http://de.wikipedia.org/wiki/GRUB | + | * [http://de.wikipedia.org/wiki/GRUB Wikipedia:GRUB] |
| − | + | * [https://gna.org/projects/grub4dos GRUB für DOS] | |
| − | * https://gna.org/projects/grub4dos | ||
| − | [[ | + | [[Kategorie:Glossar]] |
| − | [[ | + | [[Kategorie:Software]] |