Linux Bootup Logo Hack

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der HOWTO Sammlung.
Installationsmethoden LiveCDs Kernel & Hardware Laptops & Notebooks Portage System Netzwerke & Services X Software Anderes alphabetischer HOWTO Index



BENUTZUNG AUF EIGENER GEFAHR!

Letztes Update: 14.03.2006

Für Kernel: 2.6.x

Dieses HowTo ist für solche die das Linux Bootup Logo verändern wollen.

Inhaltsverzeichnis

[Bearbeiten] Kernel konfigurieren

Jetzt ist es an der Zeit den Kernel richtig einzustellen für unseren kleinen Hack

Device Drivers ->
   Graphics Support ->
       [*] Support for frame buffer devices
       [*] VESA VGA graphics support

   Console display driver support ->
       [*] Video mode selection support
       <*> Framebuffer Console support
       [*]Select compiled-in fonts
       [*]VGA 8x16 font

   Logo configuration->
       [*]Bootup logo
       [ ] Standard 224-color Linux logo

Achtung: Den Kernel noch nicht kompilieren - am Ende des HowTo's muss nochmals die .config des Kernels geändert werden! Mehr dazu unter Kernel kompilieren

[Bearbeiten] Logo erstellen

Wie am Anfang des HowTos schon geschrieben, kommen wir nun dazu, uns ein Logo mittels des Programmes netpbm zu erstellen:

netpbm
A set of utilities for converting to/from the netpbm (and related) formats
Entwickler Bryan Henderson
Kategorie media-libs
Lizenz GPL 2
Webseite http://netpbm.sourceforge.net/

Um es zu installieren müsst ihr einfach nur folgenden Befehl ausführen:

emerge -av netpbm

Als nächstes müssen wir nun das Logo in das richtige Format bringen, damit der Kernel damit auch was anfangen kann.

pngtopnm -plain gentoo_logo.png >logo_gentoo_clut.ppm 
ppmquant -plain 224 logo_gentoo_clut.ppm >logo_gentoo_clut224.ppm 
         ppmquant: making histogram... 
         ppmquant: 10153 colors found 
         ppmquant: choosing 224 colors... 
         ppmquant: mapping image to new colors... 

Wenn alles richtig funktioniert hat, was es auch sollte, muss nur noch die modifizierte Datei an ihren richtigen Platz kopiert werden:

cp logo_gentoo_clut224.ppm /usr/src/linux/drivers/video/logo

Bevor wir weiter machen ist es am besten, die bestehenden Dateien zu sichern:

cd /usr/src/linux/drivers/video/logo
cp Kconfig Kconfig.old
cp Makefile makefile.old
cp logo.c logo.c.old

Nun müssen nur noch folgende 3 Dateien mit unseren Erweiterungen editiert werden...

[Bearbeiten] Kconfig

nano -w Kconfig

# Logo configuration
# 

menu "Logo configuration"

config LOGO
bool "Bootup logo"
depends on FB || SGI_NEWPORT_CONSOLE

config LOGO_LINUX_MONO
bool "Standard black and white Linux logo"
depends on LOGO
default y

config LOGO_LINUX_VGA16
bool "Standard 16-color Linux logo"
depends on LOGO
default y

config LOGO_LINUX_CLUT224
bool "Standard 224-color Linux logo"
depends on LOGO
default y

config LOGO_GENTOO_CLUT224
bool "Gentoo 224-color Linux logo"
depends on LOGO
default y

config LOGO_DEC_CLUT224
bool "224-color Digital Equipment Corporation Linux logo"
depends on LOGO && DECSTATION
default y

config LOGO_MAC_CLUT224
bool "224-color Macintosh Linux logo"
depends on LOGO && MAC
default y

config LOGO_PARISC_CLUT224
bool "224-color PA-RISC Linux logo"
depends on LOGO && PARISC
default y

config LOGO_SGI_CLUT224
bool "224-color SGI Linux logo"
depends on LOGO && (SGI_IP22 || SGI_IP27 || SGI_IP32 || X86_VISWS)
default y

config LOGO_SUN_CLUT224
bool "224-color Sun Linux logo"
depends on LOGO && (SPARC || SPARC64)
default y

config LOGO_SUPERH_MONO
bool "Black and white SuperH Linux logo"
depends on LOGO && SUPERH
default y

config LOGO_SUPERH_VGA16
bool "16-color SuperH Linux logo"
depends on LOGO && SUPERH
default y

config LOGO_SUPERH_CLUT224
bool "224-color SuperH Linux logo"
depends on LOGO && SUPERH
default y

endmenu

[Bearbeiten] Makefile

nano -w Makefile

# Makefile for the Linux logos

obj-$(CONFIG_LOGO) += logo.o
obj-$(CONFIG_LOGO_LINUX_MONO) += logo_linux_mono.o
obj-$(CONFIG_LOGO_LINUX_VGA16) += logo_linux_vga16.o
obj-$(CONFIG_LOGO_LINUX_CLUT224) += logo_linux_clut224.o
obj-$(CONFIG_LOGO_GENTOO_CLUT224) += logo_gentoo_clut224.o
obj-$(CONFIG_LOGO_DEC_CLUT224) += logo_dec_clut224.o
obj-$(CONFIG_LOGO_MAC_CLUT224) += logo_mac_clut224.o
obj-$(CONFIG_LOGO_PARISC_CLUT224) += logo_parisc_clut224.o
obj-$(CONFIG_LOGO_SGI_CLUT224) += logo_sgi_clut224.o
obj-$(CONFIG_LOGO_SUN_CLUT224) += logo_sun_clut224.o
obj-$(CONFIG_LOGO_SUPERH_MONO) += logo_superh_mono.o
obj-$(CONFIG_LOGO_SUPERH_VGA16) += logo_superh_vga16.o
obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
# Dependencies on generated files need to be listed explicitly

$(obj)/%_mono.o: $(src)/%_mono.c

$(obj)/%_vga16.o: $(src)/%_vga16.c

$(obj)/%_clut224.o: $(src)/%_clut224.c

$(obj)/%_gray256.o: $(src)/%_gray256.c

# How to generate them

$(obj)/%_mono.c: $(src)/%_mono.pbm
$(objtree)/scripts/pnmtologo -t mono -n $*_mono -o $@ $<

$(obj)/%_vga16.c: $(src)/%_vga16.ppm
$(objtree)/scripts/pnmtologo -t vga16 -n $*_vga16 -o $@ $<

$(obj)/%_clut224.c: $(src)/%_clut224.ppm
$(objtree)/scripts/pnmtologo -t clut224 -n $*_clut224 -o $@ $<

$(obj)/%_gray256.c: $(src)/%_gray256.pgm
$(objtree)/scripts/pnmtologo -t gray256 -n $*_gray256 -o $@ $<


# Files generated that shall be removed upon make clean
clean-files := *_mono.c *_vga16.c *_clut224.c *_gray256.c

Die Syntax lautet immer : obj-$(CONFIG_OPZIONE_KERNEL) += nome_file_logo.o

[Bearbeiten] logo.c

nano -w logo.c

/*
* 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/config.h>
#include <linux/linux_logo.h>

#ifdef CONFIG_M68K
#include <asm/setup.h>
#endif

#if defined(CONFIG_MIPS) || defined(CONFIG_MIPS64)
#include <asm/bootinfo.h>
#endif

extern const struct linux_logo logo_linux_mono;
extern const struct linux_logo logo_linux_vga16;
extern const struct linux_logo logo_linux_clut224;
extern const struct linux_logo logo_gentoo_clut224;
extern const struct linux_logo logo_dec_clut224;
extern const struct linux_logo logo_mac_clut224;
extern const struct linux_logo logo_parisc_clut224;
extern const struct linux_logo logo_sgi_clut224;
extern const struct linux_logo logo_sun_clut224;
extern const struct linux_logo logo_superh_mono;
extern const struct linux_logo logo_superh_vga16;
extern const struct linux_logo logo_superh_clut224;


const struct linux_logo *fb_find_logo(int depth)
{ 
const struct linux_logo *logo = 0;

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_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_GENTOO_CLUT224
/* Gentoo Linux logo */
logo = &logo_gentoo_clut224;
#endif
#ifdef CONFIG_LOGO_DEC_CLUT224
/* DEC Linux logo on MIPS/MIPS64 */
if (mips_machgroup == MACH_GROUP_DEC)
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 */
#ifndef CONFIG_X86_VISWS
if (mips_machgroup == MACH_GROUP_SGI)
#endif
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
}
return logo;
}

[Bearbeiten] Abschluss

Nun können sie zurück in die Kernel-Konfiguration gehen und das neue Logo auswählen!

  Logo configuration->
       [*]Bootup logo                                       
       [ ] Standard black and white 
       [ ] Standard 16-color Linux logo                                                    
       [ ] Standard 224-color Linux logo                                                
       [*] Gentoo 224-color Linux logo

Nun kann endlich unser Kernel mit dem modifizierten Bootup Logo kompiliert und anschließend gebootet werden.

[Bearbeiten] Quellen & Links

'Persönliche Werkzeuge