News Gästebuch Forum Mitglied werden FAQ Howtos Desktops C BOfH Lamer & DAUs Quote DB #linux Quotes Was und warum ? Downloads Wallpapers Subdomain Links TU Sidebar Das Team Über die Site Kontakt
Kommentar
Bootlogo durch Framebuffer


1. Hae?

Man kann in der Konsole hoehere Aufloesungen verwenden und beim Booten klebt links oben ein Pinguin-Logo :) Ok das ist nicht alles wozu der Framebuffer gut ist. Wer mehr wissen will, guckt mal in das Framebuffer-HOWTO. Ein kleiner Nachteil ist, dass es ein bisschen langsamer ist, als die normale Methode.


2. Anforderungen

Erstmal, mein System: Debian Woody, Kernel 2.4.18
Damit ging's :) Dass eventuell Pfade bei anderen Distributionen abweichen koennen, wird hier nicht beruecksichtigt.
Das ganze muesste auch schon auf 2.2.x Kernels laufen. Habe ich aber nicht getestet.

Dann braucht man noch eine VESA 2.0 Grafikkarte. Das Geraet sollte also nicht zu alt sein, dann wird's schon klappen.


3.1. Sicherungskopie erstellen

Der Kernel muss neu kompiliert werden und wer da nicht so ganz sicher ist, legt vorher mal ein Backup des Kernels an.
Bei Unklarheiten im Umgang mit dem Kernel, koennte ein Blick ins Kernel-HOWTO Abhilfe schaffen.


3.2. Den Kernel bearbeiten

Erstmal konfigurieren...

Diese Optionen mussten bei mir aktiviert werden:

Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
<optional>
Das hier muss nicht unbedingt aktiviert werden, sollte aber, sofern es unterstuetzt wird, da es das Ganze ein bisschen schneller macht.
Processor type and features --->
[*] MTRR (Memory Type Range Register) support
</optional>
Console drivers --->
[*] VGA text console
[*] Video mode selection support
< > MDA text console (dual-headed) (EXPERIMENTAL)
Frame-buffer support --->
[*] Support for frame buffer devices (EXPERIMENTAL)
<M> nVidia Riva support (EXPERIMENTAL)
...
[*] VESA VGA graphics console
...

Das mit dem nVidia Support sollte man natuerlich nur aktivieren, wenn man eine Karte mit einem Riva oder Geforce Chipsatz hat. Anderenfalls den jeweiligen Chipsatz der eigenen Grafikkarte...


Das war's schon fast. Jetzt den Kernel neu backen und installieren.

Das hier muss noch in der lilo.conf geaendert werden:
...
# Specifies the VGA text mode at boot time. (normal, extended, ask, <mode>)
vga=791
...

Dies legt den VGA-Modus fuer das Booten fest.
Dann noch das
$ lilo
nicht vergessen und es sollte klappen.


3.3. 791..?

In /usr/src/linux-2.4.18/Documentation/fb/vesafb.txt findet man diese Tabelle:

So the table for the Kernel mode numbers are:


640x480 800x600 1024x768 1280x1024
256 0x301 0x303 0x305 0x307
32k 0x310 0x313 0x316 0x319
64k 0x311 0x314 0x317 0x31A
16M 0x312 0x315 0x318 0x31B



Im Framebuffer-HOWTO gibts noch eine groessere:

Colours 640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200
4 bits ? ? 0x302 ? ? ? ?
8 bits 0x300 0x301 0x303 0x305 0x161 0x307 0x31C
15 bits ? 0x310 0x313 0x316 0x162 0x319 0x31D
16 bits ? 0x311 0x314 0x317 0x163 0x31A 0x31E
24 bits ? 0x312 0x315 0x318 ? 0x31B 0x31F
32 bits ? ? ? ? 0x164 ? ?



Dies sind die Hexwerte fuer die Grafikmodi.
Abhaengig von der lilo Version kann man gleich zum Beispiel vga=0x317 angeben oder, wenn lilo das nicht erkennt (sieht man dann an einer Fehlermeldung, nach dem Aufrufen von lilo), muss man das eben in einen Dezimalwert umrechnen. kcalc oder aehnliche Programme koennen da behilflich sein, wenn man es mal nicht im Kopf ausrechnen will. Der Dezimalwert von 0x317 ist z.B. 791. Also laeuft meine Konsole in der Aufloesung 1024x768 mit 16bit Farbtiefe.

Das waer's dann.. Mal neustarten und gucken ob's klappt. Wenn nicht, auf das Kernel-Backup zurueckgreifen :)


4. Punguin gegen eigenes Bild ersetzen

Es gibt ein GIMP-Plugin, mit dem das funktionieren soll (siehe Framebuffer-HOWTO), ich bevorzuge aber fblogo.
Das sieht dann so aus:
Erstmal wandelt man sein Bild in das PNG Format um, falls es nicht schon in diesem Format ist. Es gibt aber eine Limitierung hinsichtlich der Farbtiefe. Das Bild darf hoechstens 223 Farben haben. Sollte mit GIMP (v1.2.3) kein Problem sein:
- Bild oeffnen
- Image / Mode / Indexed...
- [x] Generate Optimal Palette: 223
- den Rest hab ich einfach so gelassen
- File / Save As...
- und als PNG speichern
- fblogo konnte mit alle PNG-Varianten (z.B. Interlaced) die ich getestet habe umgehen

In der fblogo Manpage werden noch zwei Moeglichkeiten der Konvertierung beschrieben: Einmal mit netbpm und mit ImageMagick. Bei diesen Varianten ist die Konvertierung durch fblogo gleich mit drin.

Bei der GIMP-Variante muss man aber auch nicht mehr viel machen:

$ fblogo -v <bild>.png linux_logo.h

Wer einen 2.2.x Kernel hat, gibt noch die Option -2 mit an. Bei 2.4.x und 2.5.x Kernels werden keine weiteren Optionen angegeben. Das -v sorgt dafuer, dass ausfuehrlich beschrieben wird, was man noch machen muss. Naemlich die erzeugte linux_logo.h nach .../include/linux/linux_logo.h zu kopieren und in der Datei .../drivers/video/fbcon.c zwei Zeilen, die die Bildabmessungen enthalten, zu aendern.

Beispiel:
$ cp linux_logo.h /usr/src/linux-2.4.18/include/linux/linux_logo.h
$ vi /usr/src/linux-2.4.18/drivers/video/fbcon.c

Das waere dann auch erledigt.
Jetzt noch den Kernel neu backen und fertig.

Zu den Bildabmessungen: Ein Logo mit 100x162 hat bei mir ohne Probleme geklappt. Das Standard Logo hat aber die Abmessungen 80x80. Wenn also etwas nicht klappt (mit aelteren Kernels koennten vielleicht Probleme auftauchen), kann man zuerst mal versuchen das Bild auf diese Abmessungen anzupassen.


5. Noch was..
Benutzung auf eigene Gefahr :)

Wie oben schon erwaehnt, koennen Interessierte ja mal ins Framebuffer-HOWTO gucken. Leute mit Matrox/Permedia/ATI-Karten sollten das auch mal machen.


mfg,
mxp
(mx.p@gmx.net)