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:
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-freedann 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.bashAls User wechseln wir in das Verzeichnis source/ und führen dort folgendes aus:
# apt-get source kanotix-graphicsDadurch 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 newcolorFarben zuweisen:
/menu.bar.color mediumred def /scrollbar.color mediumred def /frame_color red def /dark_frame_color mediumred def /main_frame_color black defPositionieren: 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:
- 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:
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):
Ich hab folgende Einstellungen verwendet:
Timeout-Leiste
Die Timeout-Leiste ist der Balken, der die restliche Zeit bis zum automatischen Boot anzeigt. Das sieht dann z.B. so aus:
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 ;-)
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 bothBeispiel:
# 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.isodas war eigentlich schon alles ;)