kernel開機logo總結

2021-08-10 16:06:33 字數 2432 閱讀 6763

希望朋友們多多指點,好的技術或心得一起分享:

一.更換開機logo

pngtopnm mylogo.png > mylogo.pnm

pnmquant 224 mylogo.pnm > mylogo224.pnm

pnmtoplainpnm mylogo224.pnm > logo_linux_clut224.ppm

其中mylogo.pnm和mylogo224.pnm為中間生成檔案,結束後可以刪除。最後將logo_linux_clut224.ppm拷貝值kernel主目錄下的driver/video/logo/中,最後編譯核心即可。

二.新增開機logo

自定義logo的製作與配置,(這裡仍舊是224位色格式,其中custom名稱可以自己改變):

1.在kernel目錄下:

拷貝.ppm至logo目錄中:

cp logo_linux_custom_224.ppm driver/video/logo/logo_custom_clut224.ppm

2.修改kconfig檔案:

vi driver/video/logo/kconfig:

config logo_custom_clut224

bool 「224-color custom linux logo」

default y

3.修改makefile檔案:

vi driver/video/logo/makefile:

新增:obj-$(config_logo_custom_clut224) += logo_custom_clut224.o

4.修改logo.h檔案:

vi include/linux/linux_logo.h:

新增:extern const struct linux_logo logo_custom_clut224;

5.修改logo.c檔案

vi driver/video/logo/logo.c:

fb_find_logo函式中:

在 #ifdef config_logo_linux_clut224

/* generic linux logo */

logo = &logo_linux_clut224;

#endif

後新增:

#ifdef config_logo_custom_clut224

/* custom linux logo */

logo = &logo_custom_clut224;

#endif

6.make menuconfig 確保自定義logo被選中:

device drivers  —>

graphics support  —>

[*] bootup logo  —>

……..

[*] 224-color custom linux logo

最後編譯核心即可,這樣可以使多張logo共存於kernel中,若使用者有以後要在檔案系統中更改開機logo的需求的話,可以使用這種方法,使用者層可以通過fw_setenv工具修改uboot中自定義好的引數,該引數從uboot中傳遞進kernel,重啟後kernel根據引數的值進行判斷使用哪一張logo。這樣還得在uboot和kernel中新增自定義引數,並進行判斷,這個且看下回分解。

另附logo居中顯示方法(注:若解析度和螢幕解析度相同則不需要):

1.vi driver/video/fbmem.c:

fb_show_logo_line函式中:

在image.dx=0;

image.dy=y;

image.width = logo->width;

image.heigh = logo->height;

後增加image.dx = (info->var.xres / 2) - (image.width / 2);

image.dy = (info->var.yres / 2) - (image.height / 2);

(2)vi driver/video/console/fbcon.c:

fbcon_prepare_logo()函式中:

在logo_height = fb_prepare_logo(info, ops->rotate)

後增加logo_height += (info->var.yres / 2) - (logo_height / 2);

在drivers/video/console/fbcon.c中:

fbcon_prepare_logo函式中:

將logo_lines = div_round_up(logo_height, vc->vc_font.height);

修改為:

logo_lines = div_round_up(logo_height, (vc->vc_font.height+1));

若要對kernel啟動logo有更深入的理解可以參見老羅的部落格:

大神的講解十分詳盡!

linux開機logo製作

pngtopnm,pnmquant,pnmtoplainpnm pngtopnmlinuxlogo.png linuxlogo.pnm pnmquant 224 linuxlogo.pnm linuxlogo224.pnm pnmtoplainpnm linuxlogo224.pnm linuxlo...

linux開機logo製作

或者 bmptoppm pic.bmp temp1.ppm 生成ppm ppmquant 224 temp1.ppm temp2.ppm 轉換成224顏色 pnmnoraw temp2.ppm logo.ppm 轉換成ascii格式 這樣您製作的logo就已經成功了,將linuxlogo224.pp...

Linux 開機Logo製作

linux 開機logo製作 除。3 如何將開機logo中的游標去除 在核心的當前目錄進入到drivers video console fbcon.c檔案 將static void fb flashcursor void private 製成空函式如下 386 static void fb flas...