1、首先找到一張.png格式的圖片,將圖片的大小裁剪成自己想要的尺寸,這個事Windows自帶的畫圖板就能完成
2、在你的虛擬機或者linuxOS中安裝netpbm工具,這個工具的作用就是將一個.png格式的圖片轉換成ppm格式的,具體用法如下:
(1)、首先安裝該工具:
sudo apt-get install netpbm
(2)、開始轉換圖片:
pngtopnm logo.png > logo.pnm
pnmquant 224 logo.pnm > logo224.pnm
pnmtoplainpnm logo224.pnm > logo_linux_clut224.ppm
(注意:這里將終生成的ppm文件命名為logo_linux_clut224.ppm是因為,linux內核啟動默認的logo圖片名稱為該名稱,如果我們不這樣命名也行,但是需要修改一些文件,會比較麻煩,所以為了簡單起見我們就這么做)
3、這樣我們得到了ppm的圖片,只要替換driver/video/logo下面的logo_linux_clut224.ppm,刪除logo_linux_clut224.c logo_linux_clut224.o (注意,這里的.o .c文件一定要刪除再編譯,不然內核就不會編譯你的新logo),然后編譯內核得到鏡像就可以了
4、如果你的內核配置沒問題那么logo 顯示也就沒什么問題,這里對于內核的配置簡單介紹一下:
$ makemenuconfig //在內核里面選上logo 支持
DeviceDrivers --->
[*]Graphics support --->
[*]Bootup logo --->
[*] Standard black and whiteLinux logo
[*] Standard 16-color Linuxlogo
[*] Standard 224-color Linuxlogo
5、不難發現我們的logo總是顯示在屏幕的左上角,那么下面我們需要改一下內核源碼,讓logo居中全屏顯示:
vi 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);
保存退出,我們還需要修改driver/video/console/fbcon.c文件
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);
保存退出,重新編譯內核,這樣我們的logo就可以在屏幕上居中全屏顯示 了
6、可能還存在一個問題,就是如果cpu是四核的話,你會發現在屏幕上會顯示四個logo,當然如果你的logo比較大,在屏幕上只能顯示一個logo圖片,那么也就只顯示一個logo 不會顯示四個,至于這個問題我還沒有找到解決方案,希望讀者有idear能告知我一聲1979234659@qq.com,謝謝!