版本: v0.22-2003-09-29
作者: 冷罡華 (Hiweed,海微)
主頁: http://www.hiweed.com
email: hiweed at 163 dot com
版本沿革:
- v0.22-2003-09-29 細化關於cloop的描述
- v0.2-2003-09-28 添加關於cloop的描述,並修改了大量細節
- v0.1-2003-09-27 首次發表
一、簡介
下文將介紹如何定製一張中文版的Knoppix.主要步驟:
- 準備足夠的硬碟空間和交換分區
- 將Knoppix光碟上的那個大大的壓縮文件KNOPPIX拷貝出來,並解壓縮
- 根據自己的需要,添加/刪除軟體
- 添加中文顯示和輸入支持
- 重新壓縮KNOPPIX
- 製作光碟鏡像iso文件
二、準備工作
1) 準備軟體
從www.knopper.net/knoppix 獲得最新光碟影像文件,本文使用的是KNOPPIX_V3.3-2003-09-24-EN.iso.
2) 準備硬體(建立硬碟分區)
由於要建立壓縮的文件系統(compressed file system),需要空間較大的交換分區(swap space),最少1GB空閑RAM Swap (比如256M內存和750M的swap) ,推薦建立2G的swap分區.(創建壓縮文件系統時要用到.如果交換分區太小,會報錯);3 GB 空閑的Linux分區(ext2/3, xfs等都可以).
三、操作步驟:
1) 打開一個shell,使用
su 命令獲得root用戶的許可權.下面所有命令都是在這個root shell 裡面運行的;
2) 配置您的Internet連接(稍後要用到) ;
3) 確定用來工作的分區.在本例中,是hdb2.該分區至少要有3G空間;
4) 載入該分區:
mount -o rw /dev/hdb2 /mnt/hdb2 (如果不照做,你可能會在chroot環境工作時遇到麻煩) ;
5) 創建一個用來工作的目錄:
mkdir /mnt/hdb2/working (把所有文件放在這裡,用完可以方便地刪除) ;
6) 如果你沒有1 GB 內存, (
cat /proc/meminfo (物理內存 swap)) 那麼您需要一個swapfile:
cd /mnt/hdb2/working ; dd if=/dev/zero of=swapfile bs=1M count=750 ; mkswap swapfile ; swapon swapfile ;
7) 創建 2 個目錄,一個用於存放我們的新CD(NewCD),一個用於存放現有CD的內容(OLD):
mkdir /mnt/hdb2/working/NewCD; mkdir /mnt/hdb2/working/OLD ;
8)
mkdir /mnt/hdb2/working/OLD/KNOPPIX ;
9) 您可以不用光碟啟動,而直接mount下載得到的iso文件,然後把光碟上/KNOPPIX/KNOPPIX文件複製出來:
- mkdir /mnt/iso
- mount -o loop -t iso9660 KNOPPIX_V3.3-2003-09-24-EN.iso /mnt/iso
- cp /mnt/iso/KNOPPIX/KNOPPIX /mnt/hdb2/working
- 再Mount壓縮的KNOPPIX文件:
- insmod cloop file=/mnt/hdb2/working/KNOPPIX 如果這一步出錯,請看本文結尾處對cloop的描述.
- mkdir /mnt/KNOPPIX
- mount -o ro /dev/cloop /mnt/KNOPPIX
- 複製knoppix源文件到您的工作目錄(這可能得花點時間)
- mkdir /mnt/hdb2/working/OLD/KNOPPIX
- cp -Rupv /mnt/KNOPPIX/* /mnt/hdb2/working/OLD/KNOPPIX/
- 卸載 /mnt/KNOPPIX
umount /dev/cloop
- 卸載iso文件,刪除/mnt/hdb2/working/KNOPPIX
umount /mnt/iso
rm -f /mnt/hdb2/working/KNOPPIX
10)
mkdir /mnt/hdb2/working/NewCD/KNOPPIX ;
11)
cp /cdrom/index.html /mnt/hdb2/working/NewCD/ ;
12) 現在,複製 /cdrom/KNOPPIX/ 下面的所有內容到 /mnt/hdb2/working/NewCD/KNOPPIX/ ,除了那個接近700 Mb 的名字叫做KNOPPIX的文件.(
cd /cdrom/KNOPPIX; find . -size -10000k -type f -exec cp -p --parents {} /mnt/hdb2/working/NewCD/KNOPPIX/ ; )
13) 現在您可以 "chroot" 到剛才複製的 KNOPPIX 中去:
chroot /mnt/hdb2/working/OLD/KNOPPIX ;
14) 現在您已經處於chrooted環境中. "/" 實際上是 "/mnt/hdb2/working/OLD/KNOPPIX" ;
15) 要使用Internet,您需要載入proc文件系統:
mount -t proc /proc proc ,然後編輯 /etc/resolv.conf 添加您的nameserver;
16) 如果您需服務微軟的工作組(通過samba),那麼smb.conf也要修改 (通常,MSHOME是XP家庭版,WORKGROUP是Win9x);
17) 檢查您的chrooted環境的Internet連接:
ping google.com ;
18) 更新您的軟體包列表:
apt-get update ;
19) 現在您可以開始修改軟體包,自己決定刪除哪些,安裝哪些;
- 在安裝或刪除軟體之前,您可以看一下目前已經安裝了哪些軟體:
dpkg-query -l
- 也可以讓這個列表以軟體包的大小排序:
dpkg-query -W --showformat='${Installed-Size} ${Package}n' | sort -n
- 要刪除一個軟體包 (以及所有依賴於它的軟體包),可以這樣:
apt-get remove <要刪除的包的名字>
我刪除了這些:
apt-get remove selflinux kde-i18n-{tr,pl,cs,ja,nl,ru,it,da,es,de,fr}
其中,selflinux 是一套德文的Linux文檔,kde-i18n-* 是其他國家的kde本地化文件.這些文件佔用大約200M硬碟空間.
檢查「孤兒」軟體包,這樣:
deborphan
要想通過刪除那些孤兒(多殘忍!)騰出更多空間,可以這樣:(警告,系統不會提示 yes/no ,當您在這條命令後面敲完回車,那些軟體就沒了):
deborphan | xargs apt-get -y remove
如果您覺得上面這條命令不太保險,想在不改變系統的情況下看看會發生什麼,只要加一個 -s 參數 (您可以在所有的 apt-get命令中使用這個參數,這是個好習慣):
deborphan | xargs apt-get -s -y remove
- 現在,如果您要安裝軟體,用命令:
apt-get install <要安裝的軟體名稱>
當然您最好事先設置離自己最近的apt源(把原來的/etc/apt/sources.list備份一下,完成後再恢復),我用的是:
deb http://www.zentek-international.com/mirrors/debian/debian main non-free contrib
另外,apt-get可以使用代理伺服器,修改 /etc/apt/apt.conf,添加一行:
Acquire::http::proxy "http://yourproxy:yourport/"; (注意面必須用「;」結束)
我就安裝了兩個軟體包:
apt-get update
apt-get install kde-i18n-zhcn fcitx
- 什麼,不知道要安裝哪些軟體?用下面的命令. 當列表出現,您可以仔細看看(超過13000行!):
apt-cache search .* | sort | less
- 如果刪除和添加軟體的工作完成了,清理現場的好方法是:
COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P
當然,Debian的APT系統將下載的包做了cache,您可能想用下面的命令清除這些文件:
apt-get clean
- 用戶設置在 /etc/skel
20) 中文化定製(這一節內容較集中,單獨拿出來在後面寫);
21) 卸載 /proc -- 非常重要!
- 更新文件列表庫:
updatedb
- 更新菜單:
update-menus
- 刪除無用文件:
rm /etc/*-
rm /var/mail/*
- 刪除根目錄下的 .bash_history, .viminfo, .rr_moved等文件和目錄:
rm -Rf /.bash_history /.rr_moved /.viminfo
- 卸載(unmount)proc(不能忽略):
umount /proc
22) 按
CTRL D 退出chrooted環境.
注意:
1) 如果您想自動運行一些程序,可以在 /etc/rc5.d/ 目錄下創建腳本(這寫腳本在 X 啟動前被運行).
2) /etc/init.d/knoppix-autoconfig 裡面的有趣東東:
- X的背景圖片是 /cdrom/KNOPPIX/background.gif
- 和floppyconfig類似,有一個cdromconfig會運行cdrom/KNOPPIX/knoppix.sh
3) /etc/init.d/xsession 裡面的有趣東東:
它也設置背景為 /usr/local/lib/knoppix.gif
4) 現在,開始創建 ISO 文件:
- 我們已經完成定製,要準備刻盤了!
- 現在我們將製作KNOPPIX這個大文件,這是個cloop的壓縮ISO9660文件系統:
- cd /mnt/hdb2/working
- mkisofs -R -U -V "Hiweed.com iso9660 filesystem" -P "Hiwix www.hiweed.com" -hide-rr-moved -cache-inodes -no-bak -pad OLD/KNOPPIX | nice -5 /usr/bin/create_compressed_fs - 65536 > NewCD/KNOPPIX/KNOPPIX
其中,"www.hiweed.com" 和 "Hiweed.com filesystem" 您可以自己改. 可能會有錯誤報告說和ISO標準不一致,您可以忽略它.
5) 如果一切順利,現在就開始製作光碟鏡像了:
- cd /mnt/hdb2/working/NewCD
- rm -f KNOPPIX/md5sums; find -type f -not -name md5sums -not -name boot.cat -exec md5sum {} ; >> KNOPPIX/md5sums (這將更新新ISO的md5值,便於以後檢查)
- mkisofs -pad -l -r -J -v -V "KNOPPIX" -b KNOPPIX/boot.img -c KNOPPIX/boot.cat -hide-rr-moved -o /mnt/hdb2/working/knoppix.iso /mnt/hdb2/working/NewCD (把生成的ISO放在 /mnt/hdb2/working/knoppix.iso)
- 完成!
技巧:
1) 如果您要查找已安裝的大軟體包,請使用該命令:
dpkg-awk "Status: .* installed$" -- Package Installed-Size| awk '{print $2}' | egrep -v '^$' | xargs -n2 echo | perl -pe 's/(S )s(S )/$2 $1/' | sort -rg 這將以降序顯示.
下面的命令至少比上面的快10倍,
你不用dpkg-awk 或者 awk 或者 perl:
dpkg-query -W --showformat='${Installed-Size} ${Package}n' | sort -n四、中文化定製
注意:以下所有步驟均在在chrooted environment下進行.
1) 安裝中文字體
安裝simsun.ttf 字體:
- mkdir /usr/X11R6/lib/X11/fonts/ttf
- cp /selfpkg/simsun.ttf /usr/X11R6/lib/X11/fonts/ttf
- cd /usr/X11R6/lib/X11/fonts/ttf
- ttmkfdir > fonts.dir
- cp fonts.dir fonts.scale
2) 修改XF86Config文件
vi /etc/X11/XF86Config-4.in
在Section "Files"段加入:
FontPath "/usr/X11R6/lib/X11/fonts/ttf"
在Section "Module"段加入:
Load "xtt"
加#號註釋掉freetype:
#Load "freetype"
3) 安裝OpenOffice中文支持
cd /opt/openoffice/share/fonts/truetype
建立字體文件軟鏈接
ln -s /usr/X11R6/lib/X11/fonts/ttf/simsun.ttf simsun.ttf
把usr/lib/openoffice/share/fonts/truetype里的fonts.dir文件改名,並把/usr/X11R6/lib/X11/fonts/ttf/fonts.dir拷貝到此目錄:
mv fonts.dir oofonts.dir
cp /usr/X11R6/lib/X11/fonts/ttf/fonts.dir fonts.dir
合併字體文件:
cat oofonts.dir >> fonts.dir
修改字體文件,打開fonts.dir,會發現fonts.dir文件變成了兩部分,第一部分即原fonts.dir文件的內容,第二部分為原openoffice字體的內容,現刪除openoffice字體的內容的數字部分(就是那個數字1),並把第一行改成本文件的行數(如總共8行,則將第一行的數字改成8).製作一個fonts_dir.global文件,並刪除原openoffice的字體文件.
cp -f 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
XMODIFIERS="@im=fcitx"
XIM=fcitx
XIM_PROGRAM=fcitx
export LC_ALL LANG LC_CTYPE XMODIFIERS XIM XIM_PROGRAM
5) 配置啟動參數
修改/etc/init.d/knoppix-autoconfig文件,找到簡體中文所在的段(155行):
#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"
XIM=fcitx
XIM_PROGRAM=fcitx
XMODIFIERS="@im=fcitx"
找到美國英語所在的段(354行),將*) 改為 us),即去掉英語的默認啟動.
6) 修改字體顯示參數
6.1) 修改/etc/skel/.kderc文件
將下面的行設定為simsun.ttf字體,建議字體大小為10像素:
[General]
activeFont=simsun,10,-1,5,75,0,0,0,0,0
fixed=simsun,10,-1,5,50,0,0,0,1,0
font=simsun,10,-1,5,50,0,0,0,0,0
menuFont=simsun,10,-1,5,50,0,0,0,0,0
taskbarFont=simsun,10,-1,5,50,0,0,0,0,0
toolBarFont=simsun,10,-1,5,50,0,0,0,0,0
6.2) 修改/etc/skel/.kde/share/config/kdeglobals文件
[General] (第29行)
fixed= simsun,10,-1,5,50,0,0,0,1,0
font=simsun,10,-1,5,50,0,0,0,0,0
menuFont=simsun,10,-1,5,50,0,0,0,0,0
taskbarFont=simsun,13,-1,5,50,0,0,0,0,0
toolBarFont=simsun,10,-1,5,50,0,0,0,0,0
[Locale] (第174行)
Charset=iso8859-15
Country=cn
Language=zh_CN.GB2312
[WM] (第281行)
activeFont= simsun,10,-1,5,75,0,0,0,0,0
6.3) 修改/etc/skel/.kde/share/config/kdesktoprc
[FMSettings] (第34行)
StandardFont= simsun,10,-1,5,50,0,0,0,0,0
6.4) 修改/etc/skel/.kde/share/config/konsolerc
為保證konsole正確顯示英文字體,把Lucidatypewriter字體改成Console字體:
[Desktop Entry]
defaultfont=Console,10,-1,5,50,0,0,0,1,0
font=8
五、高級定製
請參考本文結尾提供的鏈接.
六、特別說明
1) 關於fcitx輸入法的特別說明
要啟動fctix,請在X的Console裡面輸入:
fcitx& .
fcitx基本上不需要手工配置,不過系統字體對它很重要.
如果你在啟動fcitx時系統報告字體錯誤,類似於:「無法載入字體 -*-fixed-medium-r-normal--16-*-*-*-*-*-*-*,-*-simsun-medium-r-normal--16-*-*-*-*-*-zh_CN.GB2312-*」 等等,請把 ~/.gWuBi/profile中的「顯示字體=*」修改一下.怎麼修改呢?用命令
xlsfonts | grep gb 來查看你的系統中註冊了哪些gb碼的字體,然後把字體名寫上就可以了,比如「顯示字體=song ti」.
關於輸入法的問題,推薦一個好去處:http://www.linuxsir.com/bbs/showthread.php?s=&threadid=37665
2) 關於cloop的特別說明
Cloop是COMPRESSED LOOPBACK DEVICE (cloop.o)的簡稱, 是一個第三方內核模塊(官方內核中沒有包含它),它提供文件系統無關的、透明壓縮的、只讀的塊設備.Cloop是Knoppix的重要組成部分.
如果您在運行insmod cloop命令時出錯,有可能您的交換分區太小,也有可能您根本沒有安裝cloop模塊.
Cloop的源代碼可以在http://developer.linuxtag.net/knoppix/sources/下載到.下載后,用您的內核來編譯出一個cloop.o模塊:
- cd /tmp
- wget http://developer.linuxtag.net/knoppix/sources/cloop_1.02-1.tar.gz
- tar xzf cloop_1.02-1.tar.gz
- cd cloop_1.02-1
- make KERNEL_DIR=/usr/src/linux
- mkdir -p /lib/modules/misc && cp cloop.o /lib/modules/misc/
- depmod -a
- mknod /dev/cloop b 240 0
如果還是不行,那麼您恐怕只能刻一張光碟了……
七、參考文獻
製作一張支持中文的Knoppix CD
KNOPPIX 使用和定製指南