Andreas-Loibl.de
Hintergrundbild

Tutorial:Grub-Gfxboot

Hinweis

Dieses Tutorial beschreibt, wie ich vor Jahren für Grub-Gfxboot ein eigenes Theme erstellt habe. Mittlerweile ist Grub von seinem Nachfolger Grub 2 abgelöst worden (das alte Grub heißt jetzt "Grub Legacy") und somit ist auch Grub-Gfxboot nicht mehr aktuell.

Zum Nachfolger GRUB2 bzw. BURG




Einleitung

Dieses Tutorial beschreibt die Erstellung eines eigenen Grub-Gfxboot-Themes. Als Basis verwendete ich Kanotix, es würde wahrscheinlich auch mit anderen Distributionen funktionieren, ich habs aber nicht getestet.

Hier wird beschrieben was alles benötigt wird um eine GRUB-message-Datei, die die Bilder und Daten beinhaltet, zu erzeugen. Dann noch ein paar Tipps zum Design und schließlich eine Anleitung zum Testen einer message-Datei in QEMU. Also los gehts ;)

Screenshots

Wer noch gar nicht weiß was Grub-Gfxboot überhaupt ist, hier mal ein paar Screenshots:

Original_Kanotix_Grub Mein_Kanotix_Grub

Vorbereitung

Hier mal eine Liste der Zutaten: (genaue Installationsbeschreibung weiter unten)
  • Die Quellen von kanotix-graphics: darin ist die Ausgangskonfiguration und das Makefile, das uns ganz unkompliziert eine message-Datei erzeugen kann
  • Natürlich auch die Abhängigkeiten von kanotix-graphics, sonst kann es ja nicht gehen ;)
  • Eine Kanotix-CD um deren /boot-Verzeichnis zu extrahieren (brauchen wir für das ISO; darin wird nur die message-Datei mit der eigenen ersetzt)
  • mkisofs um ein ISO mit dem veränderten /boot-Ordner zu erstellen
  • QEMU um das ISO zu testen
  • (Natürlich auch ein Grafikprogramm wie z.B. Gimp um überhaupt ein neues Design zu entwickeln)

Installation der benötigten Pakete

Erstmal müsst ihr die Kanotix-Quellen in der sources.list haben (falls ihr kein Kanotix verwendet):
# Kanotix
deb http://kanotix.com/files/debian sid main contrib non-free
deb-src http://kanotix.com/files/debian sid main contrib non-free
dann gehts los: folgendes als root:
# apt-get update
# apt-get build-dep kanotix-graphics

Wir brauchen noch gfxboot in der Version "kleiner 3", da das Paket (im source) folgende Abhängigkeiten hat: (anzeigen mit apt-cache showsrc kanotix-graphics)

Build-Depends-Indep: cdbs (>= 0.4.23-1.1),
debhelper (>= 5.0.0), gfxboot (<< 3)
Also schauen wir mal was es so zur Auswahl gibt:

# apt-cache policy gfxboot
gfxboot:
  Installiert:2.5-12.1
  Mögliche Pakete:3.2.0-1
  Versions-Tabelle:
 *** 3.2.0-1 0
        500 http://kanotix.com sid/main Packages
     3.1.0-2 0
        500 http://kanotix.com sid/main Packages
     2.5-12.1 0
        500 http://kanotix.com sid/main Packages
        100 /var/lib/dpkg/status
Die Version 2.5-12.1 von kanotix.com scheint passend, darum installieren wir sie:
# apt-get install gfxboot=2.5-12.1

dann gehts als user weiter: Wir erstellen uns einen Ordner, in den wir alles rein packen. Ich hab es unter /home/aloibl gemacht, ist aber egal wo.

Hier mal ein Verzeichnisbaum wie man es machen kann. Die farbigen Sachen brauchen vorerst nicht zu interessieren, sie werden in den nächsten Schritten erzeugt. Wichtig ist nur, dass die Verzeichnisse source und iso erzeugt werden.

/home/aloibl/
	my-gfxboot/
		source/
			kanotix-graphics-0.5.1/
				.orig/
				debian/
				gfxboot-theme/
					po/
				kanotix32/
				kanotix64/
				kanotixbh/
			kanotix-graphics_0.5.1.dsc
			kanotix-graphics_0.5.1.tar.gz
		iso/
			boot/
				grub/
		create-gfxboot.bash
Als User wechseln wir in das Verzeichnis source/ und führen dort folgendes aus:
# apt-get source kanotix-graphics
Dadurch wird alles was im Verzeichnisbaum rot dargestellt war erzeugt.

Vorbereiten einer Testumgebung

Bis hier her würde es eigentlich schon reichen, man kann jetzt schon ganz einfach message-Dateien erzeugen. Aber es ist etwas blöd diese dann zu Testen, darum hab ich mir überlegt ein mini-ISO, auf dem nur Grub ist, zu erzeugen und dies in QEMU laufen zu lassen.

Dazu nehmen wir eine Kanotix-CD und extrahieren das /boot-Verzeichnis:

# cd iso/
# su
(Passwort)
# mount /media/cdrom0/
# cp -ar /media/cdrom0/boot/ .
Das sollte vorerst reichen, jetzt fängts mal richtig an:

Design erstellen

Wir gehen nach kanotix-graphics-0.5.1/gfxboot-theme/ (z.B. mit Konqueror). Mit einem beliebigen Editor (ich mag KWrite gern ;-) ) die Datei theme_colors.inc öffnen und mal durchschaun. Ich denke die Syntax ist einigermaßen selbsterklärend, aber hier eine kurze Übersicht:

Kommentar ist alles, was nach einem % (Prozent) steht.

Farben definieren:
/black               0x000000          newcolor
/white               0xffffff          newcolor
/blue                0x0000a0          newcolor
Farben zuweisen:
/menu.bar.color      mediumred       def
/scrollbar.color     mediumred       def
/frame_color         red             def
/dark_frame_color    mediumred       def
/main_frame_color    black           def
Positionieren: Die Zahlen sind alles Angaben in Pixel
 % main
/frame1.pos  { 205 15  } def
/frame1.size { 350 305 } def

Hintergrundbild

Für das Hintergrundbild legen wir die Datei background.pcx im Ordner kanotix-graphics-0.5.1/gfxboot-theme/ an. Ich hab alles mit Gimp gemacht, darum hier ein paar Tipps:

Neue Datei mit Gimp
  • Auflösung: 640x480 px
  • nicht viele Farben verwenden; die Datei wird hernach indiziert gespeichert und darf nicht zu groß werden

Dann kannst du dein Bild malen, da kann ich keine Beschreibung angeben ;)

So könnte es zum Beispiel aussehen wenn es fertig ist:

Mein_Hintergrundbild

Dateigröße verringern

Um die Größe zu verringern machen wir aus dem RGB-Bild ein Indiziertes das nur eine begrenzte Palette hat (z.B. mit 32 Farben):

Indizieren

Ich hab folgende Einstellungen verwendet:

Indizieren_Einstellungen

Timeout-Leiste

Die Timeout-Leiste ist der Balken, der die restliche Zeit bis zum automatischen Boot anzeigt. Das sieht dann z.B. so aus:

Die Timeout-Leiste

Und so gehts:

Ganz links unten sind ein paar Pixel, die verwendet werden um die Timeout-Leiste zu füllen. Diese malt man mit dem Pinselwerkzeug einfach an ;-)

Komplettansicht Links unten
Links unten

Speichern

Speichern

Vorerst sind wir mit dem Design fertig, aber normal will man es immer erst Testen, wieder was Ändern, wieder Testen, wieder Ändern, ..., bis es einmal passt.

Testen

Zum Testen verwenden wir am besten das Script create-gfxboot.bash, es nimmt die meiste Arbeit ab. Einfach von dort runterladen und im Hauptverzeichnis abspeichern, wie im Verzeichnisbaum oben dargestellt:

create-gfxboot.bash (chmod +x ./create-gfxboot.bash danach nicht vergessen!)

Theme bzw. Grub ISO-Image erstellen

Das ist recht einfach mit dem Script, einfach folgendes als root machen:
so:	./create-gfxboot.bash message
oder:	./create-gfxboot.bash iso
oder:	./create-gfxboot.bash both
Beispiel:
# Sind wir im richtigen Verzeichnis?
$ ls
create-gfxboot.bash  iso/  source/

# Message-Datei wird erzeugt...
$ ./create-gfxboot.bash message
# ... und da ist sie!
$ ls
create-gfxboot.bash  iso  message  source

# ISO-Datei wird erzeugt...
$ ./create-gfxboot.bash iso
# ... und da ist sie!
$ ls
create-gfxboot.bash  gfxboot.iso  iso  source

# Beides wird erzeugt...
$ ./create-gfxboot.bash both
# ... und da ist es!
$ ls
create-gfxboot.bash  gfxboot.iso  iso  message  source

ISO-Image mit QEMU testen

einfach als User folgendes ausführen:
# qemu -cdrom gfxboot.iso
das war eigentlich schon alles ;)

Fertigstellen

Wenn alles so funktioniert wie es soll, dann verschiebt/ kopiert man als root die message-Datei (wenn nicht vorhanden muss sie erst erstellt werden mit create-gfxboot.bash message) einfach nach /boot/message. Fertig!