修改linux核心kernel開機logo(小企鵝),linuxkernel
修改linux核心kernel的開機圖片(原為小企鵝圖片)。
轉載請註明出處:http://blog.csdn.net/wang_zheng_kai
導航制導與控制實驗室 2014年12月10日
本文主要是介紹三部分內容:
1》如何製作linux核心所需要的開機圖片(ppm格式);
2》修改開機圖片的兩種方法;
3》調試過程中的問題與技巧;
一、如何製作linux核心所需要的開機圖片(ppm格式)
1》在ubuntu系統上安裝netpdm,命令如下:
# sudo apt-get install netpdm
2》準備所需要的logo圖片,圖片的大小請參考開發板所使用的解析度;
3》將我們準備好的logo(mylogo.png)轉換成我們需要的圖片格式:
# pngtopnm mylogo.png > my_linux_logo.pnm //將png轉換成pnm# pnmquant 224 my_linux_logo.pnm > my_linux_logo_224.pnm//將pnm圖片的顏色數限制在224# pnmtoplainpnm my_linux_logo_224.pnm > my_linux_logo_224.ppm//將pnm圖片轉換成最終的ppm
註:我調試的這個過程是基於png格式圖片的轉換過程,如果是其他格式的請轉換成png或者是使用其他的命令進行轉換。
二、修改開機圖片的兩種方法:
1、方法一:替換原有圖片
直接替換linux_kernel/driver/video/logo/下的圖片***,並確保替換的檔案名稱前後一致。然後確保核心配置如下所示:
Device Drivers-->
Graphics Support-->
Bootop logo-->
[*] Standard 224-color Linux logo
重新編譯並燒錄到開發板中,重啟即可顯示。
2、方法二:添加新的圖片
1》將得到的my_linux_logo_224.ppm圖片檔案直接複製到linux_kernel/driver/video/logo目錄下;
2》修改linux_kernel目錄下的如下檔案:
在include/linux/linux_logo.h添加
extern const struct linux_logo my_linux_logo_224;
在drivers/video/logo.c添加:
#ifdef CONFIG_LOGO_MY/*MY LINUX LOGO*/logo = &my_linux_logo_224;#endif
3、修改Makefile:
添加obj-$(CONFIG_LOGO_MY) += my_linux_logo_224.o
4、修改Kconfig:
config LOGO_MYbool "224-color my Linux logo"default y
5、修改核心配置
Device Drivers-->
Graphics Support-->
Bootop logo-->
224-color my Linux logo
並取消[*] Standard 224-color Linux logo選項。
重新編譯並燒錄到開發板中,重啟即可顯示。
三、調試過程中的問題與技巧
我在調試過程中一直出現黑屏現象,主要是我的圖片像素不正確,可以先找一個像素較小的圖片來測試片是否成功,在製作與螢幕相對應像素的圖片。
想對現實的圖片進行置中顯示、展開顯示請修改driver/video/fbmem.c中的fb_show_logo_line函數和driver/video/console/fbcon.c中的fbcon_prepare_logo()函數。下面以置中顯示為例子進行講解:
例子:置中顯示
(1)修改源碼/driver/video/fbmem.c中的fb_show_logo_line函數。
//image.dx=0;//image.dy=y;image.width=logo->width;image.height=logo->height;
增加
+image.dx = (info->var.xres / 2) - (image.width / 2);+image.dy = (info->var.yres / 2) - (image.height / 2);
(2)修改源碼/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);
經過以上方式重新編譯核心啟動就會看到修改的核心logo能夠置中全螢幕顯示了。
以後可能還會繼續完善,謝謝。