Mini Framebuffer ImageViewer
-
- Beiträge: 375
- Registriert: 07.06.2005 09:48:43
Mini Framebuffer ImageViewer
Ich suche für eine Embedded Box ein richtig kleines Programm um auf einer FB-Konsole ein Bild anzuzeigen und im Hintergrund den Start ablaufen zu lassen. Splashy ist keine alternative, zu gross und ich habe keine initrd. Desweiteren bleibt es im Grafikmodus stehen. Fbi ist ebenfalls mit allen Abhängigkeiten zu gross und kann nur alleine ablaufen.
Mein Plan wäre es frühzeitig ein Script zu starten welches das Programm startet, den Bildschirm anzeigt. Bootvorgang sollte weiter laufen. Und kurz vorm X-Server kille ich das Programm wieder. Ich brauche keine Prozentanzeigen oder sonst was für SchnickSchnack, Bootvorgang dauert eh nur paar Sekunden.
Mein Plan wäre es frühzeitig ein Script zu starten welches das Programm startet, den Bildschirm anzeigt. Bootvorgang sollte weiter laufen. Und kurz vorm X-Server kille ich das Programm wieder. Ich brauche keine Prozentanzeigen oder sonst was für SchnickSchnack, Bootvorgang dauert eh nur paar Sekunden.
Re: Mini Framebuffer ImageViewer
hi,
du könntest das Linux-Logo im Kernel durch ein eigenes Bild ersetzen. Das erscheint dann so früh wie möglich und muss nicht vor dem Start von X gekillt werden. Die Konfiguration passiert unter Device Drivers -> Graphics support -> Bootup logo (z.B. CONFIG_LOGO_LINUX_CLUT224). Das Bild muss als Portable Pixmap unter drivers/video/logo/ gespeichert werden (z.B. logo_linux_clut224.ppm). Wenn du eine der Original-Dateien durch deine ersetzt, ist nichts weiter nötig, nur ein "make".
Gimp kann dieses Format direkt erzeugen, wenn man das Bild vorher in das "indexed"-Format mit 224 Farben umwandelt. Die Größe muss natürlich zum Framebuffer passen, wenn's kleiner ist, bleibt rechts und/oder unten ein schwarzer Rand. Den kann man für Boot-Meldungen nutzen, indem man in einem der ersten Scripte den Cursor positioniert, z.B. in Zeile 42, Spalte 1:
du könntest das Linux-Logo im Kernel durch ein eigenes Bild ersetzen. Das erscheint dann so früh wie möglich und muss nicht vor dem Start von X gekillt werden. Die Konfiguration passiert unter Device Drivers -> Graphics support -> Bootup logo (z.B. CONFIG_LOGO_LINUX_CLUT224). Das Bild muss als Portable Pixmap unter drivers/video/logo/ gespeichert werden (z.B. logo_linux_clut224.ppm). Wenn du eine der Original-Dateien durch deine ersetzt, ist nichts weiter nötig, nur ein "make".
Gimp kann dieses Format direkt erzeugen, wenn man das Bild vorher in das "indexed"-Format mit 224 Farben umwandelt. Die Größe muss natürlich zum Framebuffer passen, wenn's kleiner ist, bleibt rechts und/oder unten ein schwarzer Rand. Den kann man für Boot-Meldungen nutzen, indem man in einem der ersten Scripte den Cursor positioniert, z.B. in Zeile 42, Spalte 1:
Code: Alles auswählen
echo -en '\e[42;1H'
Beware of programmers who carry screwdrivers.
-
- Beiträge: 375
- Registriert: 07.06.2005 09:48:43
Re: Mini Framebuffer ImageViewer
Ja, stimmt. Diese Möglichkeit hatte ich ja ganz vergessen So wie Du mir das erklärst kann ich also ein Bild@1024x768 basteln und es wird füllend angezeigt? So wie ich in Erinnerung habe wird pro CPU-Kern ein Bild angezeigt. War jedenfalls damals so bei meinen ersten Versuchen. Hatte dann 4x BMW Logo beim Start
Re: Mini Framebuffer ImageViewer
hmpf, wer denkt denn bei "Embedded Box" und "richtig kleines Programm" an mehrere Kerne? In dem Fall müsste man wohl einen echten Patch anbringen, wahrscheinlich in drivers/video/fbmem.c, da gibt's einen Call
Ich hab's mal mit einem 1280x960 Bild in einem 1280x1024-Framebuffer probiert und das sah richtig aus. Der Kernel ist in dem Fall um ca. 1.2MB grösser, aber das ist "__initdata" und wird wieder freigegeben (siehe "dmesg | grep freed").
Code: Alles auswählen
y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,
num_online_cpus());
Beware of programmers who carry screwdrivers.
-
- Beiträge: 375
- Registriert: 07.06.2005 09:48:43
Re: Mini Framebuffer ImageViewer
Hi
Ich habe nich tviel Ahnung von C, sollte das dann so aussehen?
Ich probiere es einfach mal. Das ist ein Sempron 2100+, also nur ein Kern. Aber mag sein, das irgendwann mal ein ATOM folgt. Bootmedium ist eine kleine 1GB DOM. Mit allem benötigten zeug sowie MediaCenter, X-Server, Emulatoren wird es dann schon recht eng.
Ich habe nich tviel Ahnung von C, sollte das dann so aussehen?
Code: Alles auswählen
y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,0);
Re: Mini Framebuffer ImageViewer
fast, aber 1 Bild soll ja wohl angezeigt werden, also eher
aber probier's erstmal ohne das wenn du sowieso nur einen Kern hast.
Code: Alles auswählen
y = fb_show_logo_line(info, rotate, fb_logo.logo, 0, 1);
Beware of programmers who carry screwdrivers.
-
- Beiträge: 375
- Registriert: 07.06.2005 09:48:43
Re: Mini Framebuffer ImageViewer
Alles klar, werde dann mal ein Bild wandeln. ich berichte dann. Grossen dank für die Hilfe!
Code: Alles auswählen
pngtopnm logo.png | ppmquant -fs 223 | pnmtoplainpnm > logo_linux_clut224.ppm
-
- Beiträge: 375
- Registriert: 07.06.2005 09:48:43
Re: Mini Framebuffer ImageViewer
So, leider erster Versuch fehlgeschlagen. Habe mir so schickes Logo gemacht. Auf 1360x768 (TV) (Datei ~ 380Kb)skaliert. Das dann nach plainppm gewandelt. Hatte dann ne richtig fette 10,2MB Datei. Das dann in den Kernel kompiliert. Kernel startet ganz normal, ich kann ausserdem nur die letzte Zeile sehen. 45% des Schirms ist komplett schwarz. Der Rest steht still. Nur die letzte Zeile bewegt sich.
Hm, ich denke mal das Logo ist enfach zu gross oder falsch. Jedenfalls der Kernel hat sich kaum verändert in der Grösse. Gibt es da ein paar Tipps wie ich das Bild kleiner machen kann? Bestimmte Farben verwendne oder so?
mfg
Hm, ich denke mal das Logo ist enfach zu gross oder falsch. Jedenfalls der Kernel hat sich kaum verändert in der Grösse. Gibt es da ein paar Tipps wie ich das Bild kleiner machen kann? Bestimmte Farben verwendne oder so?
mfg
Re: Mini Framebuffer ImageViewer
welche Auflösung hat denn dein Framebuffer? Wenn das Bild breiter ist, wird es bei mir garnicht angezeigt, aber evt. passieren dann ganz seltsame Dinge. Was wird denn von deinem Bild angezeigt? Falsche Farben oder nur ein Teil oder...? Wie sieht das logo.ppm in einem Bildbetrachter aus? Dass die reine Größe ein Problem sein soll, kann ich mir nicht vorstellen, mein logo.ppm hat 13MB und der Kernel wird ca. 555kB größer.
Dass nur die untersten Zeilen scrollen ist mir auch aufgefallen, allerdings nur auf einem von zwei Rechnern. Wahrscheinlich werden bei dem (wegen "quiet") zuwenig Boot-Meldungen ausgegeben -- was ja auch vernünftig ist, man will ja das Logo nicht mit Text vollmüllen. Insofern würde ich das als Feature betrachten, man müsste nur eine sinnvolle Zeilenzahl einstellen können.
Dass nur die untersten Zeilen scrollen ist mir auch aufgefallen, allerdings nur auf einem von zwei Rechnern. Wahrscheinlich werden bei dem (wegen "quiet") zuwenig Boot-Meldungen ausgegeben -- was ja auch vernünftig ist, man will ja das Logo nicht mit Text vollmüllen. Insofern würde ich das als Feature betrachten, man müsste nur eine sinnvolle Zeilenzahl einstellen können.
Beware of programmers who carry screwdrivers.
-
- Beiträge: 375
- Registriert: 07.06.2005 09:48:43
Re: Mini Framebuffer ImageViewer
Daran wird es wohl liegen, hatte das Bild auf 1360x768 skaliert und vga=791 genommen, natürlich passt das nicht. Werde mal das Bild auf 800x600 skalieren und mit grub2 mal den gfxpayload ebenflls auf 800x600 setzen. Das sollte klappen und an sich nur kurz das Bild verschwinden lassen und einen konstanten Bootschirm bringen
mfg
mfg
-
- Beiträge: 375
- Registriert: 07.06.2005 09:48:43
Re: Mini Framebuffer ImageViewer
So, hat geklappt Habe unten ein wenig frei gelassen vom Image. Dort werden nun die Bootmeldungen ausgegeben Mit dem setzen des Cursors klappt zwar auch, aber wenn ich von USB Stick boote meldet sich der Kernel leider zuerst bevor das Cursor Script gestartet wird.
mfg
mfg
-
- Beiträge: 375
- Registriert: 07.06.2005 09:48:43
Re: Mini Framebuffer ImageViewer
Hier mal mein Ergebnis. Wie man sieht ist das BIOS noch nicht auf Tempo angepasst, aber der Rest bootet schon recht schnell. Bootmedium ist eine 1GB DOM.
Sempron 2100+ @1GHz / 2GB RAM / 1GB DOM
http://www.file-upload.net/download-239 ... t.mp4.html
Sempron 2100+ @1GHz / 2GB RAM / 1GB DOM
http://www.file-upload.net/download-239 ... t.mp4.html