KNOPPIX 簡體中文版 使用和定制指南

徐文達 <maxidea@maxidea.org>

最后更新:2004/3/31

引 言

KNOPPIX是一套自由的(Free)和開源的(Open Source)GNU/Linux操作系統發行版。它是基于Debian Linux,能直接由CD啟動運行的完整的操作系統。KNOPPIX里面收集了一些GNU/Linux軟件,並集成了自動硬件識別以及對許多圖形顯示卡、聲卡、SCSI和USB設備以及其他外圍設備的支持。KNOPPIX可以用于Linux演示、教學光盤、應急系統,或者被用來作為商用軟件產品的演示平台。得益于其on-the-fly的解壓縮技術,這張光盤上最多可以集成2GB的可執行軟件。KNOPPIX十分適合從MS Windows平台轉移到Linux平台的用戶,或有興趣嘗試使用Linux的用戶,以及進行Linux發行版開發和定制(custom)的用戶。本文將以MaxCapture Linux為例,介紹KNOPPIX簡體中文版的使用和定制的方法。如果您需要最新版本的KNOPPIX,可到 www.knopper.net/knoppix 下載。

目 錄

KNOPPIX 使用和定制指南
引 言
目 錄
使 用 指 南
一、主要優點
二、啟動過程
三、問題解決
四、獲得光盤影像

定 制 指 南
一、項目分析
二、必要條件
三、初步設定
四、基本定制
五、高級定制
六、中文化定制
七、光盤制作
八、存在的問題和今后的目標
九、原始資料及參考文獻


使 用 指 南

一、主要優點

1) 無需安裝到硬盤,光盤啟動直接運行;
2) 圖形用戶界面(GUI),使用MS Windows的用戶能快速掌握;
3) 支持絕大多數INTEL架構的硬件設備,支持優盤、ADSL撥號等;
4) 兼容NTFS、FAT32格式的分區,自動加載(mount)硬盤分區,自動加載USB設備;
5) 適合做硬件檢測工具,適合做硬盤數據備份的第三方軟件,適合軟/硬件工程師外出工作備用。

二、啟動過程

圖一

如上圖一,當CD啟動后出現"boot:"提示后,按下回車(enter),系統將自動啟動,約30秒即可完成文件系統(file system)的加載並進入KDE用戶圖形界面(如圖二)。

圖二

三、問題解決

1) 進入KDE后畫面花屏
這是由于顯示器未能達到1024x768的分辨率,這種情況多在舊款顯示器上出現。如遇到這種情況,請按下Ctrl + Alt + Backspace殺死X window的進程,重啟Linux,在啟動畫面(圖一)按下F2,在CHEAT CODES菜單顯示后鍵入:knoppix screen=800x600。

2) 根用戶(root)的密碼
一般在Linux的終端環境下,可通過su命令獲取根用戶權限,期間會提示您輸入根用戶的密碼。基于KNOPPIX 3.2的MaxCapture Linux 簡體中文版根用戶的密碼為maxcapture,您也可通過以下方法獲取根用戶權限:
1、直接使用Root Shell:K菜單 --> KNOPPIX --> Root Shell;
2、修改root密碼:在root shell下使用命令passwd,然后鍵入新密碼。

3) 關于在磁盤陣列的設備環境上使用
有損壞磁盤陣列信息的可能性,不建議在這種設備環境下使用。

4) 保留knoppix的系統配置和用戶數據
為了避免每次啟動都要重新配置網絡、Xwindow等,Knoppix提供了數據保存方法:
運行saveconfig,會產生一個knoppix.sh和configs.tbz,並保存到某個分區;啟動時添加myconfig=/dev/partition即可讀出,也可以用myconfig=scan讓Knoppix自己去尋找這兩個文件。
用戶數據(/home/knoppix)也可被保留到軟盤或者USB盤上,啟動時添加home=/dev/sda1 (不能是DOS格式的文件系統),也可home=scan讓Knoppix自己去尋找。如果想保留在硬盤的DOS分區上,可以創建一個loopback文件(映像文件):
點擊菜單K->KNOPPIX->Configure->Create a persistent KNOPPIX home directory或者直接運行/usr/sbin/makepersistenthome。

5) 無法瀏覽CD上的中文文件名
新版本的MaxCapture Linux已經修正了硬盤、USB設備和軟盤內中文文件名顯示的問題。但對于CD上的中文文件,必須手動挂載才能正確顯示:
簡體中文:
#mount -t auto /dev/cdrom /mnt/cdrom -o iocharset=gb2312,codepage=936
繁體中文:
#mount -t auto /dev/cdrom /mnt/cdrom -o iocharset=big5,codepage=950

6) 光盤剛啟動時出現:kernel panic:VFS:unable to mount root fs on 01:01
此問題發生機會極少,少數集成顯卡的主板會受此影響,解決辦法是在"Boot:"提示畫面(圖一)輸入以下命令:knoppix mem=?M ("?"的數值為"總內存數"減去"顯卡內存數"。)

7) 如何啟動中文輸入法
MaxCapture Linux使用的中文輸入法軟件是fcitx,帶有五筆、拼音和區位輸入法。啟動及使用方式如下:
1、在console下運行/usr/bin/fcitx或fcitx
2、使用Ctrl+Shift開啟/切換輸入法
如果OpenOffice無法正確顯示中文,是由于未曾選擇中文字體。

四、獲得光盤影像

如果您需要最新版本的KNOPPIX光盤影像文件,可到 www.knopper.net/knoppix 下載,您必須使用700M或以上的空白光盤進行刻錄。本文中使用的定制后的MaxCapture Linux光盤影像文件暫無法提供下載,但您能在 www.MaxCapture.com 以十分低廉的價格換取該光盤。


定 制 指 南

一、項目分析

下文將以MaxCapture Linux為例,介紹如何從KNOPPIX定制中文版的Linux Live CD。定制的目的是為了在系統中能快速、正確地建立Linux系統環境,主要工作是決定各種軟件包的去留。本文適合在包一級(結構部分)和代碼一級(行為部分)有一定了解的用戶,適合首次嘗試修改Linux發行版的用戶。

本文包含KNOPPIX簡體中文版定制方法。

二、必要條件

1、軟件
從www.knopper.net/knoppix 獲得最新光盤影像文件,本文使用的是KNOPPIX_V3.2-2003-04-15-EN.iso。

2、硬件
Marco Ghirlanda(www.marcoghirlanda.it)和Sunil Thomas Thonikuzhiyil (http://www.linuxgazette.com/authors/sunil.html)建議預留2GB空間給swap,另外5GB創建ext2格式分區用于制作CD(re-mastering work)。
但我建議的分區如下:
2GB的Linux swap分區(主要用于進行壓縮文件系統);
3GB的Linux ext2分區(存放用于定制的文件系統);
2GB的Linux ext2分區(用于存放文件系統壓縮影像文件和制作好的光盤影像文件;使用不同的硬盤分區,將能加快文件系統壓縮影像文件的制作速度。)。

三、初步設定

建立硬盤分區
打開 Root Shell (K菜單 --> KNOPPIX --> Root Shell),在#號提示符(# prompt)下運行cfdisk命令,創建一個格式為ext2的3GB Linux 分區(Linux native),此例中分區文件系統為/dev/hda1;創建一個格式為swap的2GB分區,為/dev/hda2;和一個格式為ext2的2GB Linux 分區,為/dev/hda5。保存分區信息並退出cfdisk。
由于要建立壓縮的文件系統(compressed file system),需要空間較大的交換分區(swap space)(一般情況下,Linux系統的交換分區設為內存的兩倍已足夠),如交換分區空間不足,后面進行壓縮文件系統的步驟將無法正常運作。
運行以下命令以完成分區的建立:
#mkswap /dev/hda2
#swapon /dev/hda2
#mke2fs /dev/hda1
#mke2fs /dev/hda5
並把兩個Linux分區分別加載到KNOPPIX的文件系統
#mkdir /mnt/hda1
#mount -rw /dev/hda1 /mnt/hda1
#mkdir /mnt/hda5
#mount -rw /dev/hda5 /mnt/hda5

四、基本定制

在光盤的./KNOPPIX目錄下包含一個名為KNOPPIX的684MB的文件,它包含了整個文件系統的壓縮影像(compressed image)。下面將介紹如何刪除或添加軟件包,並重建定制的KNOPPIX壓縮影像文件。

1、復制文件到/mnt/hda1
當系統由光盤啟動后,壓縮影像文件會加載(mount)到系統根分區(/)下的/KNOPPIX目錄中,此時/KNOPPIX目錄的大小是1837536 K-blocks,約1.8GB。在Root Shell中運行以下命令:
#cp -Rp /KNOPPIX /mnt/hda1
cp是復制命令,參數-R是對目錄中的子目錄進行遞歸處理(recursive copy),參數-p 是保留文件的屬性。

2、建立臨時目錄
#mkdir /mnt/hda1/KNOPPIX/selfpkg
拷貝待安裝的軟件包和字體文件到該目錄里。

3、Chroot (Run command on interactive shell with special root directory)
在Root Shell下運行以下命令:
#chroot /mnt/hda1/KNOPPIX
其目的是"change the root of the file system to /mnt/hda1/KNOPPIX"。同時終端提示符將變成 bash-2.05b#,並處于根分區(chrooted from /mnt/hda1/KNOPPIX)。如果終端里出現"/dev/null permission denied",請按control C。
接著加載proc文件系統(不能忽略):
bash-2.05b#mount -t proc /proc proc

4、刪除軟件包
以下命令刪除單個軟件包:
bash-2.05b#dpkg -r --force-depends package_name
切底刪除該軟件:
bash-2.05b#dpkg --purge package_name

5、安裝軟件包
bash-2.05b#dpkg -i package_name
其中必須安裝il8n

6、結束Chroot
刪除selfpkg目錄:
bash-2.05b #rm -rf /selfpkg
更新軟件庫:
#updatedb
更新菜單:
#update-menus
刪除無用文件:
#rm /etc/*-
#rm /var/mail/*
#rm -rf /tmp/*
#rm -rf /var/cache/apt/archives
刪除根目錄下的 .bash_history, .viminfo, .rr_moved等文件和目錄;
卸載(unmount)proc(不能忽略):
bash-2.05b#umount /proc
按control D離開chrooted environment。

五、高級定制

1、從源代碼安裝軟件
必須在chrooted environment下進行安裝,具體安裝方法因軟件各異,此處不作詳細介紹。Sunil Thomas Thonikuzhiyil建議使用checkininstall(http://asic-linux.com.mx/~izto/checkinstall)。

2、更改用戶設置
在chrooted environment可修改root及各用戶的配置文件,密碼等,也可創建新用戶,在此不作介紹。所有修改將在定制后的系統中使用。

3、修改桌面背景圖
在chrooted environment下修改/usr/local/lib/knoppix.gif即可。對于KNOPPIX v3.1,可直接替換光盤中/KNOPPIX/background.gif,KDE直接使用該文件;對于KNOPPIX v3.2,則需修改/usr/local/lib/knoppix.gif。

4、修改啟動畫面(boot screen)
由于KNOPPIX是基于Debian Linux的,所以它使用syslinux來啟動,我們通過修改光盤中的影像文件 /KNOPPIX/boot.img 來達到修改啟動畫面和啟動信息的目的。在Root Shell中執行:
#cp /mnt/cdrom/KNOPPIX/boot.img /mnt/hda1
#mkdir /mnt/hda1/image
#mount -t msdos -o loop /mnt/hda1/boot.img /mnt/hda1/image

a) 修改/mnt/hda1/image/logo.16
logo.16文件是啟動畫面的圖象文件,它是特殊的編碼格式(lss16 format image)。這圖象文件必須是16色,小于50K,小于640x480象素(推荐使用640x400象素,以備足夠空間顯示提示符)。我們需要使用GIMP等圖象軟件制作16色的png格式圖象,再通過以下命令轉換成lss16格式:
#pngtopnm <logo.png >logo.pnm
#ppmtolss16 <logo.pnm >logo.16
#cp logo.16 /mnt/hda1/image/logo.16

b) 修改/mnt/hda1/image/boot.msg
boot.msg是ASCII文件,直接使用vi編輯即可,如果您的logo.16是640x400象素,您可在boot.msg中寫四行文本信息。

c) 卸載/mnt/hda1/image
#umount /mnt/hda1/image
至此,/mnt/hda1/boot.img為新定制的啟動影像文件,可以制作啟動軟盤去測試效果:
#dd if=boot.img of=/dev/fd0

5、修改KDE的Splash Screen
在chrooted environment下修改或替換 /user/share/apps/ksplash/pics 的4個png文件:
splash_active_bar.png (400x60 pixels)
splash_bottom.png (400x16 pixels)
splash_inactive_bar.png (400x60 pixels)
splash_top.png (400x248 pixels)

6、修改默認圖形環境為GNOME
在chrooted environment下修改/etc/init.d/knoppix-autoconfig,查找下面文字並修改"kde"為"gnome"即可:
# Allow only supported windowmanagers
case "$DESKTOP" in gnome|kde|larswm|xfce|windowmaker|wmaker|icewm|fluxbox|twm) ;; *)
DESKTOP="kde"; ;; esac

六、中文化定制

注意:以下所有步驟均在在chrooted environment下進行。

1、安裝中文字體
安裝simhei.ttf 字體:
bash-2.05b#mkdir /user/X11R6/lib/X11/fonts/ttf
bash-2.05b#cp /selfpkg/simhei.ttf /user/X11R6/lib/X11/fonts/ttf
bash-2.05b#cd /user/X11R6/lib/X11/fonts/ttf
bash-2.05b#ttmkfdir > fonts.dir
bash-2.05b#cp fonts.dir fonts.scale

2、修改XF86Config文件
bash-2.05b#vi /etc/X11/XF86Config-4.in
在Section "Files"段加入:
FontPath "/usr/X11R6/lib/X11/fonts/ttf"
在Section "Module"段加入:
Load "xtt"
加#號注釋掉freetype:
#Load "freetype"

3、安裝OpenOffice中文支持
bash-2.05b#cd /opt/openoffice/share/fonts/truetype
建立字體文件軟鏈接
bash-2.05b#ln -s /user/X11R6/lib/X11/fonts/ttf/simhei.ttf simhei.ttf
把/opt/openoffice/share/fonts/truetype里的fonts.dir文件改名,並把/user/X11R6/lib/X11/fonts/ttf/fonts.dir拷貝到此目錄:
bash-2.05b#mv fonts.dir oofonts.dir
(此文件僅兩行,第一行為1,第二行為opens___.ttf -sun-OpenSymbol-medium-r-normal--0-0-0-0-p-0-iso10646-1)
bash-2.05b#cp /usr/X11R6/lib/X11/fonts/ttf/fonts.dir fonts.dir
合並字體文件:
bash-2.05b#cat oofonts.dir >> fonts.dir
修改字體文件,打開fonts.dir,會發現fonts.dir文件變成了兩部分,第一部分即原fonts.dir文件的內容,第二部分為原openoffice字體的內容,現刪除openoffice字體的內容的數字部分,並在第一行加上刪除的數。如刪除為1,則將第一行的數字加1。最后制作一個fonts_dir.global文件,並刪除原openoffice的字體文件。
#cp fonts.dir fonts_dir.global
#rm -f oofonts.dir

4、設置中文環境變量
修改/etc/bashrc和/etc/profile加入如下幾行:
LC_ALL=zh_CN.GB2312
LANG=zh_CN.GB2312
LC_CTYPE=zh_CN.GB2312
export LC_ALL LANG LC_CTYPE

5、配置啟動參數
修改/etc/init.d/knoppix-autoconfig文件,找到簡體中文所在的段:
#cn) 注釋掉此行,改為 *) 即設為默認中文啟動
*)
# Simplified Chinese version
COUNTRY="cn"
LANG="zh_CN.GB2312"
#LANGUAGE="gb2312.1980-0"
LANGUAGE="zh_CN.GB2312"
KEYTABLE="us"
XKEYBOARD="us"
KDEKEYBOARD="us"
CHARSET="gb2312.1980-0"
# Additional KDE Keyboards
KDEKEYBOARDS="us,de,fr"
XMODIFIERS="@im=fcitx"
*(fcitx為中文輸入法,本文暫未提供安裝配置方法,啟動輸入法請使用/usr/bin/fcitx)
找到美國英語所在的段,將*) 改為 us),即去掉英語的默認啟動
把echo "XMODIFIERS=\"$XMODIFIERS\"" >> /etc/sysconfig/i18n所在的行(大概在400行左右)注釋掉,改為:
echo "XMODIFIERS="@im=fcitx"" >> /etc/sysconfig/i18n
這是為了在其它語言中也可用fcitx輸入漢字(fcitx中文輸入法,本文暫未提供安裝配置方法)。

6、修改字體顯示參數

a) 修改/etc/skel/.kderc文件
將下面的行設定為simhei.ttf字體,建議字體大小為14像素:
[General]
activeFont=simhei,14,-1,5,75,0,0,0,0,0
fixed=simhei,14,-1,5,50,0,0,0,1,0
font=simhei,14,-1,5,50,0,0,0,0,0
menuFont=simhei,14,-1,5,50,0,0,0,0,0
taskbarFont=simhei,13,-1,5,50,0,0,0,0,0
toolBarFont=simhei,14,-1,5,50,0,0,0,0,0

b) 修改/etc/skel/.kde/share/config/kdeglobals文件
[General]
fixed= simhei,14,-1,5,50,0,0,0,1,0
font=simhei,14,-1,5,50,0,0,0,0,0
menuFont=simhei,14,-1,5,50,0,0,0,0,0
taskbarFont=simhei,13,-1,5,50,0,0,0,0,0
toolBarFont=simhei,14,-1,5,50,0,0,0,0,0
[WM]
activeFont= simhei,14,-1,5,75,0,0,0,0,0
[Locale]
Charset=iso8859-15
Country=cn
Language=zh_CN.GB2312

c) 修改/etc/skel/.kde/share/config/kdesktoprc
StandardFont= simhei

d) 修改/etc/skel/.kde/share/config/konsolerc
為保証konsole正確顯示英文字體,把Lucidatypewriter字體改成Console字體:
[Desktop Entry]
defaultfont=Console,12,-1,5,50,0,0,0,1,0
font=8

7、添加中文文件名支持
修改/usr/sbin/rebuildfstab,把以下兩句:
ntfs) options="${options},ro,uid=knoppix,gid=knoppix" ;;
vfat|msdos) options="${options},umask=000,uid=knoppix,gid=knoppix" ;;
修改為以下三句:
ntfs) options="iocharset=utf8,${options},ro,uid=knoppix,gid=knoppix" ;;
vfat|msdos) options="iocharset=gb2312,codepage=936,${options},umask=000,uid=knoppix,gid=knoppix" ;;
auto) options="iocharset=gb2312,codepage=936,${options},umask=000,uid=knoppix,gid=knoppix" ;;

七、光盤制作

1、建立臨時目錄
# mkdir /mnt/hda5/NewCd
拷貝CD上除/KNOPPIX/KNOPPIX壓縮影像文件外的所有文件到/mnt/hda5/NewCd,可刪除boot-en.img、boot-de.img等影像文件,所有html文件,talks和demo文件夾以及autorun.bat等文件,並修改autorun.inf為:
[autorun]
icon=your.ico
用ICON工具制作您的ico文件,具體操作略。
拷貝/mnt/hda1/boot.img取替/mnt/hda5/NewCd/KNOPPIX/boot.img

2、創建文件系統壓縮影像文件
建議使用的命令(注意空格,否則將無法制作成功):
#mkisofs -R -l -V "KNOPPIX iso9660 filesystem" -hide-rr-moved \
-v /mnt/hda1/KNOPPIX | create_compressed_fs - 65536 > \
/mnt/hda5/NewCd/KNOPPIX/KNOPPIX

3、制作光盤影像文件
建議使用的命令:
#cd /mnt/hda5/NewCd
#mkisofs -l -r -J -V "KNOPPIX-your_name" -hide-rr-moved -v \
-b KNOPPIX/boot.img -c KNOPPIX/boot.cat \
-o /mnt/hda5/knoppix-cd.iso /mnt/hda5/NewCd

如果您想更方便,或您不習慣使用Linux的命令行,建議使用MS Windows下的第三方工具WinISO,把/mnt/hda5/NewCd中的所有文件創建成新ISO文件,並把boot.img加入到光盤啟動區即可。
最后,把您制作好的ISO文件刻成光盤,全部定制工作完成。

八、存在的問題和今后的目標

本文介紹的定制方式,主要是以包為裁剪單元進行的,目前已修正中文文件名的顯示問題,更提供全面的中文輸入法支持。但我們相信未來的工作還是有許多,我們希望會有更多的程序員和愛好者加入到Linux的應用和開發上去,希望本文能給您一點幫助,也祝願更多的人能真正了解Linux和喜歡上它。

九、原始資料及參考文獻

Linux發行版制作指南 (Coolee)
自制KNOPPIX簡要說明(VB1AL)
Nicklaser的HOWTO文檔(nicklaser@263.net)
KNOPPIX中文化可行方法(3Anoppix)
Knoppix Linux CD 中文版(imap)
Knoppix中文版制作方法HOWTO(imap)
I Built a Custom Debian CD from Knoppix (Sunil Thomas Thonikuzhiyil)
The Linux Bootdisk HOWTO (Tom Fawcett)
WORKING INSTRUCTIONS (Marco Ghirlanda)
HOWTO: Change the boot logo/screen (eadz from knoppix.net)
Creating the logo.16 file (mozdev.org)
How to install a splash screen (kde-look.org)

感謝所有熱愛Linux的人們的努力。