Andreas-Loibl.de Linux :: Kanotix :: GRUB2/BURG
Hintergrundbild

Bootloader:GRUB2 / BURG

GNU GRUB is a Multiboot boot loader. It was derived from GRUB, the GRand Unified Bootloader, which was originally designed and implemented by Erich Stefan Boleyn.

BURG is a brand-new boot loader based on GRUB. It uses a new object format which allows it to be built in a wider range of OS, including Linux/Windows/OSX/Solaris/FreeBSD, etc. It also has a highly configurable menu system which works in both text and graphic mode.

Links

Screenshot

So könnte z.B. ein BURG-Theme für Kanotix (auf Basis des "burg"-Themes) aussehen:

Kanotix_BURG_Theme

Erweiterungen

GRUB2/BURG: Disable cache for huge files

Für GRUB2/BURG habe ich einen Patch geschrieben, der den Cache beim Laden von größeren Dateien (> 1MB) deaktiviert. Das sorgt auf einigen Rechnern für ein erheblich schnelleres Booten, da die Zeit zum Laden des Kernels und der Initrd so verkürzt wird:

Normalerweise läd GRUB2/BURG immer nur einen Block von der maximalen Größe des Caches (4KB per default), kopiert die gelesenen Daten in den Cache und liest den nächsten Block.

Um einen Block zu lesen wird der Int 13h verwendet; da GRUB2/BURG aber als 32bit-Programm im Protected-Mode läuft, muss es um diesen Interrupt zu benutzen jedes mal in den Real-Mode und wieder zurück wechseln - dieses Hin-und-Herwechseln dauert auf manchen PCs allerdings sehr lange...

Deshalb habe ich den Code so umgeschrieben, dass für große Dateien (wie eben Kernel und Initrd, für die der Cache ja irrelevant sein dürfte) der Cache nicht benutzt wird, sondern direkt mit voller Blockgröße (512KB) gelesen wird.

Dies hat zur Folge, dass insgesamt wesentlich weniger Blöcke gelesen werden müssen und somit das Hin-und-Herwechseln zwischen Real- und Protected-Mode nicht mehr so oft ausgeführt werden muss.

Tests zeigen, dass damit das Laden des Kernels und der Initrd auch auf den PCs, die ohne den Patch langsamer waren, jetzt in etwa so schnell sind wie mit isolinux (welches komplett im 16bit Realmodus läuft und bei dem somit das Wechseln entfällt)

burg_disable-cache-for-huge-files.patch

isohybrid-bg2

Da das originale isohybrid (aus dem syslinux-Paket) nur für ISOs funktioniert welche isolinux verwenden, ich aber ein Hybrid-ISO mit BURG als Bootloader erstellen wollte (v.a. wegen dem grafischen Theme-Support von BURG) habe ich eine eigene Variante des Scripts geschrieben...

Die Funktionsweise, kurz und knapp erklärt:

  • in die ersten 32MB des ISOs muss eine Datei mit eingebettet werden, welche ein 512b Pattern (zum finden der Position mit isohybrid-bg2 später) und das core.img (von GRUB2/BURG) enthält
  • der GRUB2/BURG MBR (boot.img) wird von isohybrid-bg2 nachträglich in den MBR des ISOs geschrieben (die ersten 512b)
  • es wird eine Fake-Partitionstabelle geschrieben, mit einer ersten Partition die beim Offset 0 beginnt, wie beim originalen isohybrid
  • isohybrid-bg2 sucht nach dem 512b Pattern und trägt die Position der Fundstelle für die Sprungmarken im MBR und in der präparierten core.img ein
  • Booten klappt jetzt sowohl als LiveCD/DVD wie auch als USB-Stick

isohybrid-bg2.pl

live-build: Added support for BURG Bootloader (and isohybrid-bg2)

Wie der Titel schon sagt, die oben beschriebenen Erweiterungen auch für live-build angewendet:

live-build_added-support-for-burg-bootloader.patch