一、简介
下文将介绍如何定制一张中文版的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