2023年12月1日发(作者:)

自己动手制作Knoppix中文版

版本: v0.22-2003-09-29

版本沿革:

v0.22-2003-09-29 细化关于cloop的描述

v0.2-2003-09-28 添加关于cloop的描述,并修改了大量细节

v0.1-2003-09-27 首次发表

一、简介

下文将介绍如何定制一张中文版的Knoppix。主要步骤:

准备足够的硬盘空间和交换分区

Knoppix光盘上的那个大大的压缩文件KNOPPIX拷贝出来,并解压缩

根据自己的需要,添加/删除软件

添加中文显示和输入支持

重新压缩KNOPPIX

制作光盘镜像iso文件

二、准备工作

1) 准备软件

/knoppix 获得最新光盘影像文件,本文使用的是

KNOPPIX_

2) 准备硬件(建立硬盘分区)

由于要建立压缩的文件系统compressed file system需要空间较大的交换分区swap

space),最少1GB空闲RAM+Swap (比如256M内存和750Mswap) ,推荐建立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 个目录,一个用于存放我们的新CDNewCD),一个用于存放现有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_ /mnt/iso

cp /mnt/iso/KNOPPIX/KNOPPIX /mnt/hdb2/working

Mount压缩的KNOPPIX文件:

o

insmod cloop file=/mnt/hdb2/working/KNOPPIX 如果这一步出错,请看本

文结尾处对cloop的描述。

o

mkdir /mnt/KNOPPIX

o

mount -o ro /dev/cloop /mnt/KNOPPIX

复制knoppix源文件到您的工作目录(这可能得花点时间)

o

mkdir /mnt/hdb2/working/OLD/KNOPPIX

o

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/ /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/ 添加您的nameserver

16) 如果您需服务微软的工作组(通过samba那么也要修改 (通常,MSHOME

XP家庭版,WORKGROUPWin9x)

17) 检查您的chrooted环境的Internet连接: ping

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/备份一下,

完成后再恢复),我用的是:

deb /mirrors/debian/debian main non-free

contrib

另外,apt-get可以使用代理服务器,修改 /etc/apt/,添加一行:

Acquire::http::proxy "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

当然,因为DebianAPT系统将下载的包做了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

卸载(unmountproc(不能忽略):

umount /proc

22) CTRL+D 退出chrooted环境。

注意:

1) 如果您想自动运行一些程序,可以在 /etc/rc5.d/ 目录下创建脚本(这写脚本在 X 启动

前被运行)

2) /etc/init.d/knoppix-autoconfig 里面的有趣东东:

X的背景图片是 /cdrom/KNOPPIX/

floppyconfig类似,有一个cdromconfig会运行cdrom/KNOPPIX/

3) /etc/init.d/xsession 里面的有趣东东:

它也设置背景为 /usr/local/lib/

4) 现在,开始创建 ISO 文件:

我们已经完成定制,要准备刻盘了!

现在我们将制作KNOPPIX这个大文件,这是个cloop的压缩ISO9660文件系统:

o

cd /mnt/hdb2/working

o

mkisofs -R -U -V " iso9660 filesystem" -P "Hiwix

" -hide-rr-moved -cache-inodes -no-bak -pad

OLD/KNOPPIX | nice -5 /usr/bin/create_compressed_fs - 65536 >

NewCD/KNOPPIX/KNOPPIX

其中,"" " filesystem" 您可以自己改。

能会有错误报告说和ISO标准不一致,您可以忽略它。

5) 如果一切顺利,现在就开始制作光盘镜像了:

cd /mnt/hdb2/working/NewCD

rm -f KNOPPIX/md5sums; find -type f -not -name md5sums -not -name

-exec md5sum {} ; >> KNOPPIX/md5sums (这将更新新ISOmd5值,便于以

后检查)

mkisofs -pad -l -r -J -v -V "KNOPPIX" -b KNOPPIX/ -c KNOPPIX/

-hide-rr-moved -o /mnt/hdb2/working/ /mnt/hdb2/working/NewCD (

生成的ISO放在 /mnt/hdb2/working/)

完成!

技巧:

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) 安装中文字体

安装 字体:

mkdir /usr/X11R6/lib/X11/fonts/ttf

cp /selfpkg/ /usr/X11R6/lib/X11/fonts/ttf

cd /usr/X11R6/lib/X11/fonts/ttf

ttmkfdir >

cp

2) 修改XF86Config文件

vi /etc/X11/

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/

usr/lib/openoffice/share/fonts/truetype里的文件改名,并把

/usr/X11R6/lib/X11/fonts/ttf/拷贝到此目录:

mv

cp /usr/X11R6/lib/X11/fonts/ttf/

合并字体文件:

cat >>

修改字体文件,打开,会发现文件变成了两部分,第一部分即原

文件的内容,第二部分为原openoffice字体的内容,现删除openoffice

体的内容的数字部分(就是那个数字1并把第一行改成本文件的行数(如总共8

行,则将第一行的数字改成8)。最后制作一个fonts_文件,并删除原

openoffice的字体文件。

cp -f fonts_

rm -f

4) 设置中文环境变量

修改/etc/bashrc/etc/profile加入如下几行:

LC_ALL=zh_2312

LANG=zh_2312

LC_CTYPE=zh_2312

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)

LANGUAGE="zh_2312"

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"

[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

Charset=iso8859-15

Country=cn

Language=zh_2312

[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

五、高级定制

请参考本文结尾提供的链接。

六、特别说明

1) 关于fcitx输入法的特别说明

要启动fctix,请在XConsole里面输入:fcitx&

fcitx基本上不需要手工配置,不过系统字体对它很重要。

如果你在启动fcitx时系统报告字体错误,类似于:无法加载字体

-*-fixed-medium-r-normal--16-*-*-*-*-*-*-*,-*-simsun-medium-r-normal--16-*-*-*-*-*-z

h_2312-*” 等等,请把 ~/.gWuBi/profile中的显示字体=*”修改一下。怎么修改呢?

用命令 xlsfonts | grep gb 来查看你的系统中注册了哪些gb码的字体,然后把字体名写上

就可以了,比如显示字体=song ti”

关于输入法的问题,推荐一个好去处:

/bbs/?s=&threadid=37665

2) 关于cloop的特别说明

CloopCOMPRESSED LOOPBACK DEVICE (cloop.o)的简称, 是一个第三方内核模块

(官方内核中没有包含它),它提供文件系统无关的、透明压缩的、只读的块设备。Cloop

Knoppix的重要组成部分。

如果您在运行insmod cloop命令时出错,有可能您的交换分区太小,也有可能您根本

没有安装cloop模块。

Cloop的源代码可以在/knoppix/sources/下载到。下载后,

用您的内核来编译出一个cloop.o模块:

cd /tmp

wget /knoppix/sources/cloop_

tar xzf cloop_

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 使用和定制指南