天天看點

修改linux核心開機logo并居中全屏顯示

​​javascript:void(0)​​

1.準備圖檔

  使用ubuntu自帶的繪圖軟體GIMP是最為快捷的方式,使用指令進行轉換也可以,實際測試中用指令轉換圖檔老提示錯誤,是以就用GIMP的方式處理了。具體流程如下:

 (1)打開GIMP軟體并加載圖檔資源(file->open),自己的原圖檔格式應該不限制,我的是bmp格式的。

 (2)點選Image->mode->Indexed 并在彈出的選項框内設定Generate optimum palette下的Maximum number of colors:224 原值預設為255,點選Convert按鈕。

 (3)點選file->Save As,修改圖檔檔案字尾為.ppm 點選儲存後會彈出一個小的頁籤供選擇資料格式,這裡選擇Ascii後儲存。

 (4)将新生成的圖檔檔案重命名為logo_linux_clut224.ppm,并将其拷貝到核心源碼中的/driver/video/logo/中,替換同名檔案。删除logo_linux_clut224.c和logo_linux_clut224.o兩個檔案,重新編譯後這個兩個檔案會自動生成。

  到這裡圖檔已經準備完畢...

2.修改核心配置選項

  (1)Device Drivers --->

       Graphics support --->

          [*]Boot logo --->

             [*] Standard 224-color Linux logo

   支援kernel logo

  (2)Device Drivers --->

       Graphics support --->

         Console display driver support --->

            <*> Framebuffer Console support

   不選該項無法在螢幕上顯示。

 重新編譯源碼啟動就是替換後的logo了,但是沒有居中全屏顯示。

3.居中全屏顯示

  (1)修改源碼/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)修改源碼/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能夠居中全屏顯示了。

經過上面的方式,核心logo已經可以正常顯示,但是會被android開機第一個logo(白色“A N D R O I D”文本字樣)給快速的重新整理掉,導緻給人一閃而過的感覺。是以實際當中還要把它給屏蔽掉。

繼續閱讀