拜 antix (另文詳) 之賜, 最近很認真地研究一下 gfxboot 版本的 grub 到底該如何改背景圖。 在 debian 底下, 套件名稱為 grub-gfxboot。 它基本上就是 grub 0.97, 只是背景圖檔及訊息設定的選項比較豐富/複雜。 以下假設你曾經成功小修改過 menu.lst。
- 把 menu.lst 裡面的
splashimage=/boot/grub/xyz.xpm.gz
改成gfxmenu /boot/grub/message
- 建一個工作目錄, 進到裡面把 /boot/grub/message 解開來:
mkdir msg ; cd msg ; cpio -i < /boot/grub/message
- 用你自己挑選的新背景圖檔取代原有的 back.jpg
- 建立新的 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 色的開機畫面, 真是覺得美得令人感動、
不想開進作業系統啊! (淚)
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。