Ich habe die Version 7.1 von SuSE Linux und freue mich seither über ein graphisches Menü von lilo. Allerdings stelle ich mir jetzt die Frage, ob man das Bild nicht auch selbst gestalten könnte. Gibt es dazu Möglichkeiten und wenn ja, wie funktioniert das?

Doch, das geht auch. Es ist allerdings etwas trickreich. Lilo bietet ein zusätzliches Programm, mit dessen Hilfe solche Menübilder erstellt werden können, bzw. bestehende Bilder in ein Menü verwandelt werden.

Zuerst mal die Voraussetzungen:

Lilo hat schon immer eine Datei, die textorientierte Meldungen enthalten darf, und die meist in /boot/message abgelegt wird. Innerhalb der /etc/lilo.conf wird im globalen Bereich die Anweisung

  message = /boot/message

eingefügt. Nach einem Aufruf von lilo wird diese Datei jetzt in den Master Boot Record (oder Bootsektor der Partition) geschrieben und beim Booten dargestellt. Mit einem Trick kann diese Datei auch eine Graphik enthalten und lilo macht ein Menü daraus.

Das Menübild muß eines der Formate

  • 640×400
  • 640×480
  • 800×600

vorweisen. Es kann dann sogar noch ein zweites Bild mit dem Format 320×200 definiert werden, als Fallback für Rechner, die 640×480 (VESA) nicht darstellen können. Es muß in PCX-Format (256 Farben) gespeichert sein. Mit Gimp ist so etwas z.B. problemlos erstellbar.

Das Bild sollte einen Bereich vorweisen, auf dem das eigentliche Menü sichtbar ist. Also etwas in der Art:

Das blaugraue Viereck zwischen den Pinguinen soll als Menü dienen.

Das Programm, mit dem dieses PCX-Bild jetzt in das nötige Format gebracht wird heißt mklilomsg und erfordert eine Menge Parameter. Zum einen muß mindestens ein Bild angegeben werden, das als Menü dienen soll, zum anderen braucht jedes angegebene Bild die genauen Koordinaten der Fläche, die das Menü aufnehmen soll. Die grundsätzliche Form ist:

  mklilomsg Optionen Zieldatei

Wobei als Optionen mindestens eines der drei folgenden gegeben sein muß:

  --logo1 logo1 menu parameters
  --logo2 logo2 menu parameters
  --message text_message

logo1 und logo2 sind Graphik-Dateien im PCX-Format (256 Farben), text-message ist eine Datei mit alternativer Textnachricht, die verwendet wird, wenn der User den Graphikschirm mit <Esc> verlässt.

logo1 sollte eines der oben genannten Formate haben, logo2 wird als Fallback für den Fall, daß der Rechner keine VESA-Modi kennt mit 320×200 Pixeln aufgebaut. logo2 und text_message können auch weggelassen werden.

Richtig knifflig wird es mit den menu parameters. Jedes Bild braucht 12 numerische (ganzzahlige) Parameter, die alle angegeben werden müssen. Sie haben die folgende Bedeutung:

  • Menübalkenbreite
  • Menübalkenhöhe
  • Zeilenhöhe einer Menüzeile
  • Item-StartX – Start der Menüfläche X-Koordinate (Pixel vom linken Rand)
  • Item-StartY – Start der Menüfläche Y-Koordinate (Pixel vom oberen Rand)
  • Item X-Offset – Linker Rand zwischen Menüflächenbeginn und Menüeintrag
  • Item Y-Offset – Oberer Rand zwischen Menüflächenbeginn und Menüeintrag
  • Max. Items – Maximale Anzahl darstellbarer Menüeinträge
  • Schriftgröße – Eins von 0x11, 0x12 und 0x13.
  • Farbe des normalen Menüeintrags
  • Farbe des ausgewählten Menüeintrags
  • Farbe des Menübalkens

Die wichtigsten Größen sind also die Item StartX und StartY. Nochmal zur Veranschaulichung:

Der folgende Befehl würde jetzt aus dem Bild pingus.pcx eine entsprechende Datei machen, die als Message-Datei anwendbar ist:

  mklilomsg --logo1 pingus.pcx 120 20 24 220 180 5 2 7 0x13 0x07 0xff 0x01 /boot/mymessage 

Der Menübalken ist 120 Pixel breit und 20 Pixel hoch. Jede Zeile des Menüs soll 24 Pixel hoch sein. Die Menüfläche beginnt bei den Koordinaten 220,180, dabei werden links noch 5 und oben 2 Pixel Platz gelassen. Maximal 7 Menüeinträge werden dargestellt. Die Schrift ist 0x13 (8×16 Pixel) die normale Farbe eines Menüeintrags ist 0x07 ein angewählter Menüpunkt wird in der Farbe 0xff geschrieben und der Menübalken selbst ist das Ergebnis einer XOR-Operation mit dem Wert 0x01. Das Ergebnis wird in die Datei /boot/mymessage geschrieben.

Die beiden Werte für die Farben des normalen und ausgewählten Eintrags beziehen sich auf die Position der Farbe in der Farbtabelle (Palette) des Bildes. Der Wert für den Menübalken wird dem Hintergrund mit XOR dazugerechnet.

Jetzt muß noch der Eintrag

  message=/boot/mymessage

in /etc/lilo.conf erfolgen, einmal lilo aufrufen und neu booten…