Ein Teil der Frage, der bisher nicht beantwortet wurde, ist der Unterschied zwischen Bootloadern auf Mikrocontrollern und Mikroprozessorsystemen.
Mikrocontroller
Die meisten Mikrocontroller verfügen über einen integrierten ROM-Speicher, der ihren Programmcode enthält. Das Ändern dieses Codes erfordert normalerweise ein Programmiergerät, das mit der Programmierschnittstelle des Mikrocontrollers verbunden ist (z. B. ISP auf ATMega). Diese Programmierschnittstellen sind jedoch im Vergleich zu anderen Schnittstellen in der Regel nicht sehr benutzerfreundlich, da sie im gegebenen Kontext möglicherweise nicht sofort verfügbar sind. Während zum Beispiel fast jeder Computer über USB-Anschlüsse verfügt, ist die für ISP erforderliche SPI-Schnittstelle viel seltener und andere Schnittstellen wie die PID-Schnittstelle von ATXMega werden nur von dedizierter Programmierhardware unterstützt.
Wenn Sie beispielsweise die Software von einem normalen Computer ohne externe Hardware aktualisieren möchten, können Sie einen Bootloader verwenden, der von einer anderen Art von Schnittstelle (z. B. RS232, USB oder RS232 über USB wie beim Arduino) liest, um das Gerät zu programmieren über gemeinsame Schnittstellen.
Das heißt, wenn Sie diese Funktionalität nicht benötigen, ist der Bootloader völlig optional. Der Mikrocontroller kann seinen Code immer noch vollständig ohne den Bootloader ausführen.
Mikroprozessor
Bei einem Mikroprozessor liegen die Dinge etwas anders. Während die meisten Mikroprozessoren über ein ROM verfügen, das groß genug für einen Bootloader ist, sind diese ROMs bei weitem nicht groß genug, um ein volles Betriebssystem aufzunehmen. Der Zweck des Bootloaders besteht also darin, die Hardware zu initialisieren, nach einem bootfähigen Betriebssystem zu suchen, es zu laden und auszuführen. Daher ist der Bootloader für jeden einzelnen Boot entscheidend.
Auf x86 / x64-Systemen ist dieser Bootloader entweder das BIOS oder das UEFI (im Grunde genommen eine neuere Version eines BIOS).
Manchmal können sogar mehrere Bootloader in einer Kette ausgeführt werden. Wenn Sie beispielsweise über ein Dual-Boot-System mit Windows und Linux verfügen, kann dies zu folgenden Ergebnissen führen:
- BIOS / UEFI startet und findet GRUB installiert. Anschließend wird GRUB (= Grand Unified Bootloader) geladen.
- GRUB findet eine Art Linux und den Windows Bootloader. Der Benutzer wählt den Windows-Bootloader aus.
- Der Windows-Bootloader startet und findet Windows 7 und Windows 10 installiert. Der Benutzer wählt Windows 10 aus.
- Windows 10 bootet endlich.
In diesem Fall gab es also drei Softwareteile, die als Bootloader betrachtet werden können. Sowohl GRUB als auch der Windows-Bootloader dienen hauptsächlich dazu, dem Benutzer eine komfortablere Bootauswahl zu bieten, als dies das BIOS / UEFI tun würde. Außerdem können mehrere Betriebssysteme von derselben Festplatte oder sogar derselben Partition gestartet werden.
TLDR
Während also in beiden Systemen der Bootloader etwas Ähnliches tut (was dem Benutzer bei der Auswahl des zu bootenden Codes hilft), unterscheiden sich beide stark darin, wie sie dies erreichen und was sie genau tun.