修改linux核心kernel開機logo(小企鵝),linuxkernel

來源:互聯網
上載者:User

修改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能夠置中全螢幕顯示了。

以後可能還會繼續完善,謝謝。








相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.