Ich habe es dann irgendwann doch hinbekommen, da ich grad etwas Zeit habe hier mal meine Lösung.
Als erstes müssen natürlich die eigenen Logos erstellt werden. 😉
# pngtopnm -plain mein_logo_1.png >logo_meinlogo1_clut.ppm
# ppmquant -plain 224 logo_meinlogo1_clut.ppm >logo_meinslogo1_clut224.ppm
# pngtopnm -plain mein_logo_2.png >logo_meinlogo2_clut.ppm
# ppmquant -plain 224 logo_meinlogo2_clut.ppm >logo_meinlogo2_clut224.ppm
ect..
und nach /usr/src/linux-<kernel-version>/drivers/video/logo/ kopiert werden.
Jetzt müssen die Dateien
/usr/src/linux-<kernel-version>/include/linux/linux_logo.h
/usr/src/linux-<kernel-version>/drivers/video/logo/Makefile
/usr/src/linux-<kernel-version>/drivers/video/logo/Kconfig
/usr/src/linux-<kernel-version>/drivers/video/logo/logo.c
in die
linux_logo.h muss für jedes Logo diese Zeile hinzugefügt werden.
extern const struct linux_logo logo_meinlogo1_clut224;
in das
Makefile kommt für jedes Logo
obj-$(CONFIG_LOGO_MEINLOGO1_CLUT224) += logo_meinlogo1_clut224.o
in
Kconfig kommt (ans Ende des "if LOGO" Blocks)
config LOGO_MEINLOGO1_CLUT224
bool "224-color Mein Logo Name"
depends on LOGO
default y
jetzt noch die
logo.c. Hier wird durch ein paar Änderungen die Auswahl ermöglicht. Deshalb post ich hiermal die komplette Datei mit Änderungen für 2 eigene Logos
meinlogo1 und
meinlogo2.
/*
* Linux logo to be displayed on boot
*
* Copyright (C) 1996 Larry Ewing (lewing@isc.tamu.edu)
* Copyright (C) 1996,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
* Copyright (C) 2001 Greg Banks <gnb@alphalink.com.au>
* Copyright (C) 2001 Jan-Benedict Glaw <jbglaw@lug-owl.de>
* Copyright (C) 2003 Geert Uytterhoeven <geert@linux-m68k.org>
*/
#include <linux/linux_logo.h>
#include <linux/stddef.h>
#include <linux/module.h>
#ifdef CONFIG_M68K
#include <asm/setup.h>
#endif
#ifdef CONFIG_MIPS
#include <asm/bootinfo.h>
#endif
static int nologo;
static int meinlogo1;
static int meinlogo2;
module_param(nologo, bool, 0);
module_param(meinlogo1, bool, 0);
module_param(meinlogo2, bool, 0);
MODULE_PARM_DESC(nologo, "Disables startup logo");
MODULE_PARM_DESC(meinlogo1, "Selects meinlogo1 startup logo");
MODULE_PARM_DESC(metallica, "Selects meinlogo2 startup logo");
/* logo's are marked __initdata. Use __init_refok to tell
* modpost that it is intended that this function uses data
* marked __initdata.
*/
const struct linux_logo * __init_refok fb_find_logo(int depth)
{
const struct linux_logo *logo = NULL;
if (nologo)
return NULL;
if (depth >= 1) {
#ifdef CONFIG_LOGO_LINUX_MONO
/* Generic Linux logo */
logo = &logo_linux_mono;
#endif
#ifdef CONFIG_LOGO_SUPERH_MONO
/* SuperH Linux logo */
logo = &logo_superh_mono;
#endif
}
if (depth >= 4) {
#ifdef CONFIG_LOGO_LINUX_VGA16
/* Generic Linux logo */
logo = &logo_linux_vga16;
#endif
#ifdef CONFIG_LOGO_BLACKFIN_VGA16
/* Blackfin processor logo */
logo = &logo_blackfin_vga16;
#endif
#ifdef CONFIG_LOGO_SUPERH_VGA16
/* SuperH Linux logo */
logo = &logo_superh_vga16;
#endif
}
if (depth >= 8) {
#ifdef CONFIG_LOGO_LINUX_CLUT224
/* Generic Linux logo */
logo = &logo_linux_clut224;
#endif
#ifdef CONFIG_LOGO_BLACKFIN_CLUT224
/* Blackfin Linux logo */
logo = &logo_blackfin_clut224;
#endif
#ifdef CONFIG_LOGO_DEC_CLUT224
/* DEC Linux logo on MIPS/MIPS64 or ALPHA */
logo = &logo_dec_clut224;
#endif
#ifdef CONFIG_LOGO_MAC_CLUT224
/* Macintosh Linux logo on m68k */
if (MACH_IS_MAC)
logo = &logo_mac_clut224;
#endif
#ifdef CONFIG_LOGO_PARISC_CLUT224
/* PA-RISC Linux logo */
logo = &logo_parisc_clut224;
#endif
#ifdef CONFIG_LOGO_SGI_CLUT224
/* SGI Linux logo on MIPS/MIPS64 and VISWS */
logo = &logo_sgi_clut224;
#endif
#ifdef CONFIG_LOGO_SUN_CLUT224
/* Sun Linux logo */
logo = &logo_sun_clut224;
#endif
#ifdef CONFIG_LOGO_SUPERH_CLUT224
/* SuperH Linux logo */
logo = &logo_superh_clut224;
#endif
#ifdef CONFIG_LOGO_M32R_CLUT224
/* M32R Linux logo */
logo = &logo_m32r_clut224;
#endif
ifdef CONFIG_LOGO_MEINLOGO1_CLUT224
/* meinlogo 1 logo */
if (meinlogo1)
logo = &logo_meinlogo1_clut224;
#endif
ifdef CONFIG_LOGO_MEINLOGO2_CLUT224
/* meinlogo 2 logo */
if (meinlogo2)
logo = &logo_meinlogo2_clut224;
#endif
}
return logo;
}
EXPORT_SYMBOL_GPL(fb_find_logo);
Die hinzugefügten Teile sind diese:
static int meinlogo1;
static int meinlogo2;
module_param(meinlogo1, bool, 0);
module_param(meinlogo2, bool, 0);
MODULE_PARM_DESC(meinlogo1, "Selects meinlogo1 startup logo");
MODULE_PARM_DESC(metallica, "Selects meinlogo2 startup logo");
ifdef CONFIG_LOGO_MEINLOGO1_CLUT224
/* meinlogo 1 logo */
if (meinlogo1)
logo = &logo_meinlogo1_clut224;
#endif
ifdef CONFIG_LOGO_MEINLOGO2_CLUT224
/* meinlogo 2 logo */
if (meinlogo2)
logo = &logo_meinlogo2_clut224;
#endif
nach diesen Änderungen kann man nun bei der Kernel-Konfiguration die beiden neuen Logos auswählen (beide) und so in den Kernel kompilieren. Man kann nun in der GRUB menu.lst das Logo in der kernel-Zeile auswählen.
logo.meinlogo1
oder
logo.meinlogo2
logo.nologo deaktiviert das Boot-Logo. Wird kein logo.<irgendwas> angegeben sollte der normale Tux als logo erscheinen.
ich hoffe das war jetzt einigermaßen verständlich 😉
sieh auch
http://www.gentooforum.de/artikel/9226/linux-bootup-logo-hack.html