一、简介
下文将介绍如何用定制一张中文版的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) 您可以不用光盘启动,而直接mount下载得到的iso文件,然后把光盘上/KNOPPIX/KNOPPIX文件复制出来(比如复制到/tmp):
mkdir /mnt/iso
mount -o loop -t iso9660 KNOPPIX_V3.3-2003-09-24-EN.iso /mnt/iso
cp /mnt/iso/KNOPPIX/KNOPPIX /tmp
再Mount压缩的KNOPPIX文件:
insmod cloop file=/tmp/KNOPPIX
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文件
umount /mnt/iso
2) 配置您的Internet连接(稍后要用到) ;
3) 打开一个root shell (在 Kmenu->Knoppix->Root Shell) --下面所有命令都是在这个root shell 里面运行的;
4) 找到用来工作的分区。在本例中,是hdb2。该分区至少要有3G空间;
5) 加载该分区:
mount -o rw /dev/hdb2 /mnt/hdb2 (如果不照做,你可能会在chroot环境工作是遇到麻烦) ;
6) 创建一个用来工作的目录: mkdir /mnt/hdb2/working (把所有文件放在这里,用完可以方便地删除) ;
7) 如果你没有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 ;
8) 创建 2 个目录,一个用于存放我们的新CD(NewCD),一个用于存放现有CD的内容(OLD), 在一个分区上:
mkdir /mnt/hdb2/working/NewCD; mkdir /mnt/hdb2/working/OLD ;
9) mkdir /mnt/hdb2/working/OLD/KNOPPIX ;
10) 现在,把KNOPPIX文件复制到您的OLD目录 :
cp -Rp /KNOPPIX/* /mnt/hdb2/working/OLD/KNOPPIX 这可能得花点时间;
11) mkdir /mnt/hdb2/working/NewCD/KNOPPIX ;
12) cp /cdrom/index.html /mnt/hdb2/working/NewCD/ ;
13) 现在,复制 /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/ ; )
14) 现在您可以 "chroot" 到刚才复制的 KNOPPIX 中去: chroot /mnt/hdb2/working/OLD/KNOPPIX ;
15) 现在您已经处于chrooted环境中。 "/" 实际上是 "/mnt/hdb2/working/OLD/KNOPPIX" ;
16) 要使用Internet,您需要加载proc文件系统: mount -t proc /proc proc ,然后编辑 /etc/resolv.conf 添加您的nameserver;
17) 如果您需服务微软的工作组(通过samba),那么smb.conf也要修改 (通常,MSHOME是XP家庭版,WORKGROUP是Win9x);
18) 检查您的chrooted环境的Internet连接: ping google.com ;
19) 更新您的软件包列表: apt-get update ;
20) 现在您可以开始修改软件包,自己决定删除哪些,安装哪些;
在安装或删除软件之前,您可以看一下目前已经安装了哪些软件:
dpkg-query -l
也可以让这个列表以软件包的大小排序:
dpkg-query -W --showformat='${Installed-Size} ${Package} ' | 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
21) 中文化定制(这一节内容较集中,单独拿出来在后面写);
22) 卸载 /proc -- 非常重要!
umount /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
23) 按 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} ' | 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,则将第一行的数字加1。最后制作一个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
五、高级定制
请参考本文结尾提供的链接。
六、关于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
七、参考文献
介紹:
本文的目的是提供一個 KNOPPIX 中文化的可行方法。
文件最新版本:
您可以在 ftp://debian.linux.org.tw/pub/3Anoppix/howto.txt 找到這份文件的最新版本。
聲明:
如果採用了這份 HOWTO 當中的方法而對設備或造成任何隕失,無論是作者、散佈者或對這份 HOWTO 有貢獻的人都將拒絕承擔任何責任。
版權:
這份文件的版權 Copyright 2002 屬於 AndrewLee(李健秋)、Arne Goetje(高盛華)和 AceLan(高嘉璘)。並在GNU
General Public Licence 允許下散佈和修改本文件。
回饋與修正:
如果您對 HOWTO 有什麼問題或看法,請寄 E-Mail 到
Mailing list - tlug_en@linux.org.tw
或是
Andrew Lee <andrew 小老鼠 linux 點 org 點 tw>
Arne Goetje <arne 小老鼠 goetje-online 點 de>
AceLan <acelan 小老鼠 kde 點 linux 點 org 點 tw>
如果是中文信件,請寄給 Andrew 和 AceLan 就好 :-)
事前準備:
磁碟空間 7GB,其中 2GB 為 swap(請預先分割完畢)
使用 knoppix-en 光碟開機(knoppix 2),然後把此分割區 mount 到 /mnt
#建立工作時所需的目錄
mkdir -p /mnt/{source,master}/KNOPPIX
#複製整個 knoppix 系統,以便將來修改之用
cp -Rp /KNOPPIX/* /mnt/source/KNOPPIX
#複製 knoppix 的開機影像檔及開機畫面等內容
cp -Rp /cdrom/KNOPPIX/*.* /mnt/master/KNOPPIX
#從這裡開始可以重新開機到原本的 linux 系統繼續進行(強烈建議)
#記得將分割區 mount 上即可
chroot /mnt/source/KNOPPIX
mount -t proc /proc /proc
安裝中文環境:
首先修改 /etc/apt/sources.list(完整內容貼於文末附錄)
將指向德國的位址換成 http://debian.linux.org.tw
將 KDE3 的來源換成
deb http://shakti.ath.cx/debian/kde3.1/ ./
deb ftp://debian.linux.org.tw/pub/kde/stable/3.0.5a/Debian/woody ./
deb-src ftp://debian.linux.org.tw/pub/kde/stable/3.0.5a/Debian/woody ./
將 OpenOffice.org 的來源換成
deb http://www.phy.olemiss.edu/openoffice/ unstable main contrib
/etc/apt/apt.conf
加入
Cache-Limit 12582912;
使用 aptitude update 後選取
Tasks -> Localization -> traditional chinese environment
除了 chdrv、chinput、fortune-zh、kde-i18n-zhtwbig5(2.2.2)、zhcon 之外
其餘全選(pyDict 會有 python 相依性的問題,要手動選取套件解決)
安裝 ttf-arphic-*、dynafont
升級 KDE3
安裝 OpenOffice.org 及 OO.o 中文套件,並移除 openoffice-de-en
安裝 libming-fonts-openoffice、xfonts-cmex-big5p、msttcorefonts
安裝 mozilla-xft
移除套件:
由於安裝了許多中文的套件,會使得總容量超出一片光碟的大小,
所以我們得要刪除一些用不太到的套件
Tasks -> Localization -> German environment
保留 language-env、locales 其餘移除
移除 kde-i18n-*,只安裝 kde-i18n-zhtw
移除 abiword*、mozilla-locale-de-at
(and anything you don't want)
修改設定:
/etc/init.d/knoppix-autoconfig
(KNOPPIX_V3.1-2002-12-12 之後的版本已修正此項)
修改
tw)
# Traditional chinese version (thanks to Chung-Yen Chang)
COUNTRY="tw"
LANG="zh_TW.Big5"
LANGUAGE="zh_TW.Big5"
KEYTABLE="us"
XKEYBOARD="us"
KDEKEYBOARD="us"
CHARSET="iso8859-1"
# Additional KDE Keyboards
KDEKEYBOARDS="us"
XMODIFIERS="@im=xcin"
/etc/xcinrc:隱藏起 xcin 的大視窗 & 叫他別吵
修改
(define XCIN_HIDE "YES")
(BEEP_WRONG NO)
(BEEP_DUPCHAR NO)
修改預設的輸入法
'((DEFAULT_IM "chewing")
/etc/X11/Xsession.d/45xsession
加入(第 174 行)(KNOPPIX_V3.1-2002-12-12 在啟動 KDE3 的上面)
export XMODIFIERS="@im=xcin"
export LANG=zh_TW.Big5
/usr/bin/xcin&
/etc/X11/XftConfig
加入
dir "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
dir "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
dir "/usr/share/fonts/"
dir "/usr/share/fonts/truetype/"
dir "/usr/share/fonts/truetype/arphic/"
dir "/usr/share/fonts/truetype/openoffice/"
/etc/X11/XF86Config-4.in
Section "Files" 裡
加入
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
FontPath "/usr/share/fonts/"
FontPath "/usr/share/fonts/truetype/"
FontPath "/usr/share/fonts/truetype/arphic"
FontPath "/usr/share/fonts/truetype/openoffice/"
Section "Module" 裡
加入
Load "xtt"
移除
Load "freetype"
/etc/skel/.kderc:設定字型及大小
(修改這個檔案似乎沒用,不過安全起見,還是改了)
修改
activeFont=Ar Pl Mingti2l Big5 [Xft],12,-1,5,75,0,0,0,0,0
fixed=Andale.mono,12,-1,5,50,0,0,0,1,0
font=Ar Pl Mingti2l Big5 [Xft],12,-1,5,50,0,0,0,0,0
menuFont=Ar Pl Mingti2l Big5 [Xft],12,-1,5,50,0,0,0,0,0
taskbarFont=Ar Pl Mingti2l Big5 [Xft],12,-1,5,50,0,0,0,0,0
toolBarFont=Ar Pl Mingti2l Big5 [Xft],12,-1,5,50,0,0,0,0,0
/etc/skel/.kde/share/config/kdeglobals:設定預設字型及語系
activeFont=Ar Pl Mingti2l Big5 [Xft],12,-1,5,75,0,0,0,0,0
fixed=Andale.mono,12,-1,5,50,0,0,0,1,0
font=Ar Pl Mingti2l Big5 [Xft],12,-1,5,50,0,0,0,0,0
menuFont=Ar Pl Mingti2l Big5 [Xft],12,-1,5,50,0,0,0,0,0
taskbarFont=Ar Pl Mingti2l Big5 [Xft],12,-1,5,50,0,0,0,0,0
toolBarFont=Ar Pl Mingti2l Big5 [Xft],12,-1,5,50,0,0,0,0,0
修改
[Locale]
Charset=iso8859-15
Country=tw
Language=zh_TW.Big5
/etc/skel/.kde/share/config/kdesktoprc:設定預設字型
修改
StandardFont=Ar Pl Mingti2l Big5 [Xft],12,-1,5,50,0,0,0,0,0
/etc/skel/.kde/share/config/kwinrc:避免 xcin 與 KDE 造成當機
修改
MoveMode=Opaque
ResizeMode=Opaque
/etc/skel/.kde/share/config/kickerrc:設定面板佈景
(這部份內容請自行抓取佈景回來設定安裝,不重要的部份,僅僅只是為了美觀)
在更新完系統之後,啟動 X 都會喚起 kdm,所以我們將
knoppix 這個 user 的密碼刪掉,以便登入系統
passwd -d knoppix
善後工作:
修改完成之後要離開 chroot 之前,有些重要的動作得要先做
apt-get clean
updatedb
umount /proc
exit
測試成果:
要測試修改完成的 knoppix 並不需要燒成光碟才能測試,藉由 cloop 可以使用磁片開機後進行測試
#製作開機片 放入軟碟(後面會講解製作 boot-tw.img 的方法 ^_^)
dd if=/mnt/master/KNOPPIX/boot-en.img of=/dev/fd0
#製作 cloop 檔案(記得先安裝好 cloop-utils)
mkiso -R -l -V "KNOPPIX-zh" -hide-rr-moved -v /mnt/source/KNOPPIX | create_compressed_fs - 65536 > /mnt/master/KNOPPIX/KNOPPIX
#開機時 knoppix 會在硬碟上尋找 /KNOPPIX 目錄當成系統資料來源的目錄
#所以我們將 /mnt/master/KNOPPIX ln 到 /mnt 去,使他成為這個分割區的 /KNOPPIX
cd /mnt
ln -s /mnt/master/KNOPPIX KNOPPIX
使用此磁片開機時,得要下參數選擇台灣環境
knoppix lang=tw
開機片製作:
製作一份 boot-tw.img是很簡單的
cp /mnt/master/KNOPPIX/boot-en.img /mnt/master/KNOPPIX/boot-tw.img
mkdir /mnt/boot-disk
mount -o loop /mnt/master/KNOPPIX/boot-tw.img /mnt/boot-disk
修改 /mnt/boot-disk/syslinux.cfg
將裡面的 lang=us 全部改成 lang=tw
umount /mnt/boot-disk
這樣就完成啦
製作光碟映像檔:
cd /mnt/master
mkisofs -l -r -J -V "KNOPPIX-zh" -hide-rr-moved -v -b KNOPPIX/boot-tw.img -c KNOPPIX.cat -o /mnt/knoppix-zh.iso /mnt/master
附錄:
----------------------/etc/apt/sources.list----------------------
http://debian.linux.org.tw/pub/3Anoppix/howto.txt
已做好的光盘下载地址: :ftp1:ftp1@61.172.250.145