製作個人風格的Knoppix開機檔
by
Kuo-Ping Chiao
(revision dates: 2003-01-22, 2004-07-06, 2004-12-08, 2005-01-05, 2005-09-29)
(本文件僅適用v3.6以上的原始
Knoppix CD)
由於
knoppix
是一個具有高度自製的
linux live-CD 系統,當然連開機也應該有屬於自己風格的畫面。底下簡介製作個人風格的Knoppix開機畫面步驟:
- 設計開機畫面:
-
確定你的 linux box 中有安裝下列套件:
syslinux(需要其中的 ppmtolss16), netpbm(需要其中的 xxxtopnm or xxxtoppm)
- 製作一幅(建議用 gimp)或找現成的 640x400 (留80是為了使 boot:
行不致於重疊上),且顏色數不得超過16色的圖檔。
- 存檔格式為 bmp 例如:logo.bmp.
- bmptoppm < logo.bmp > logo.ppm
- ppmtolss16 < logo.ppm > logo.16
- 或者用一串指令: bmptoppm < logo.bmp | ppmtolss16 > logo.16
- 把 knoppix CD 中的 boot/isolinux/boot.msg copy 出來,更改 boot.msg :
- 確定你的 linux box 中有安裝下列套件: hexedit (其他可 edit binary file 的軟體亦可)
- hexedit boot.msg
- 更改 messages(按 Tab)。例如:可以把自己的 email ,或 remaster (重製)的日期寫上。
- 如此即有了自己專屬的 knoppix 開機畫面及訊息檔。如果要 preview 開機畫面,不用每次都燒上 remaster 的 CD 後再開機看,可以先找一個 USB 隨身碟製作開機系統來欣賞:
- 首先 USB 上要有一個 bootable 的 partition, 且其 filesystem 必需為 msdos (FAT16), size 要大於 3MB
- 假設此 partition 是位於 /dev/sda1 上。執行下列指令,建立 linux 開機系統:
- syslinux /dev/sda1
- mount /dev/sda1 /mnt/usb
- 把 knoppix CD 中的 boot/isolinux/ 中所有檔案 copy 至 /mnt/usb
- 把上一步驟製作的 logo.16 及 boot.msg copy (覆蓋)至 /mnt/usb
- mv /mnt/usb/isolinux.bin /mnt/usb/syslinux.bin
- umount /mnt/usb
- 用此 USB 隨身碟來開機欣賞一下自己專屬的 Knoppix LiveCD
- 如果要經常更改 boot.msg 中的 RELEASE: date, 不需要用 hexedit 編輯。底下提供一個 shell
script 可以方便地更改 boot.msg 中的 date,但首先要將 boot.msg 中的 RELEASE:
日期,例如:2004-12-08 改為 yyyy-mm-dd, 然後存成 boot.msg_template. 將下列 shell
script 存成 change_date.sh,執行:
/bin/sh change_date.sh `date +"%Y %m %d"`
如此即把 boot.msg 中的 RELEASE 日期改為今天的日期了。
#!/bin/bash
# Replace the remastered date inside boot.msg
# by Kuo-Ping Chiao, 2005-01-05
if [ ! -f ./boot.msg ];then
echo "Error: No boot.msg in this subdirectory.";
exit;
fi
if [ "$#" -lt "3" ];then
echo "Usage: `basename $0` <year> <month> <day>";
exit;
fi
if [ -z $(echo $1 | grep '^2[0-9][0-9][0-9]$') ];then
echo "Usage: `basename $0` <year> <month> <day>";
echo "Error: <year> must be 4-digit, for example 2005";
exit;
fi
if [ -z $(echo $2 | grep '^[0-9][0-9]$') ];then
echo "Usage: `basename $0` <year> <month> <day>";
echo "Error: <month> must be 2-digit, for example 03 or 11";
exit;
fi
if [ -z $(echo $3 | grep '^[0-9][0-9]$') ];then
echo "Usage: `basename $0` <year> <month> <day>";
echo "Error: <day> must be 2-digit, for example 04 or 15";
exit;
fi
/bin/cp -f ./boot.msg ./boot.msg_old
sed "s/yyyy/${1}/g" boot.msg_template > b00001
sed "s/mm/${2}/g" b00001 > b00002
sed "s/dd/${3}/g" b00002 > boot.msg
/bin/rm -f b00001 b00002
echo "RELEASE date has been successfully changed."
echo "The old boot.msg is copied to boot.msg_old."