2013年1月12日 星期六

更改 grub-gfxboot 的背景圖

用 identify -verbose general.jpg 查看 jpg 圖檔資訊;
用 vimdiff 比對差異 拜 antix (另文詳) 之賜, 最近很認真地研究一下 gfxboot 版本的 grub 到底該如何改背景圖。 在 debian 底下, 套件名稱為 grub-gfxboot。 它基本上就是 grub 0.97, 只是背景圖檔及訊息設定的選項比較豐富/複雜。 以下假設你曾經成功小修改過 menu.lst。

  1. 把 menu.lst 裡面的 splashimage=/boot/grub/xyz.xpm.gz 改成 gfxmenu /boot/grub/message
  2. 建一個工作目錄, 進到裡面把 /boot/grub/message 解開來: mkdir msg ; cd msg ; cpio -i < /boot/grub/message
  3. 用你自己挑選的新背景圖檔取代原有的 back.jpg
  4. 建立新的 message 放回原來的位置: ls | cpio -o > /boot/grub/message

最關鍵的是第三步如何正確製作 back.jpg 的替代圖檔。 因為 grub-gfxboot 在開機處理圖檔時, 幾乎手無寸鐵 (沒有完整的 jpg 函式庫可用), 所以不太能處理太複雜的 jpg 檔。 根據 這份文件, 圖檔大小不能超過 170k。 可是我照著建議用 gimp 剪貼並覆蓋原圖, 還是一樣失敗。 最後是靠著 ImageMagick 套件的 identify 指令比對新舊 jpg 檔的屬性, 才摸索出最關鍵的正確轉檔指令:

    convert -resize 800 -colors 255 -quality 80 -interlace none -sampling-factor 2x2 your_customized.jpg back.jpg

上圖是 vimdiff 對照比較 general.txt 跟 normalized.txt 兩個文字檔, 左邊的 general.txt 是這樣產生的: identify -verbose your_customized.jpg (一般未整理過的 jpg 圖檔); 右邊的 normalized.txt 則是這樣產生的: identify -verbose back.jpg (經過上面 convert 整理過、 gfxboot 認得的 jpg 圖檔)。 (上圖當中, 我刪掉了一些不重要的部分, 例如 Channel statistics 的差異並沒有影響。) 圖片大小與長寬比例若不正確, 其實還是 grub-gfxboot 還是會秀出圖來。 注意我把 quality 降低了, 反正 255 色的圖, quality 太高也沒用, 只會浪費空間。 不過跟先前 grub-legacy 的 14 色比起來, 現在看著 255 色的開機畫面, 真是覺得美得令人感動、 不想開進作業系統啊! (淚)

沒有留言:

張貼留言