CDlinux 0.6.2 配置及软件安装

这是CDlinux 0.6.2 使用小结的第2篇,上一篇为:CDlinux 0.6.2 安装,下一篇将是:CDlinux 0.6.2应用。

在这篇日记,我将根据自己的了解,向大家介绍一下设置CDlinux以适合于自己的硬件环境,在CDlinux中使用交换分区(或交换文件),在CDlinux中添加自己需要的软件,在CDlinux中保存自己的变动数据(注意,在刚刚发布的CDlinux 0.9.0 中,已经提供了自动保存和恢复用户数据/home/cdl , /root  和硬件配置的机制,写在/boot/CDlinux/settings 文件夹中),CDlinux模块和包的制作等。

实际上,对 CDlinux-0.6.2 进行系统的配置和添加自己的软件是使用同样的方式,我所知的有3种方式,包括:用脚本直接对初始的配置数据或软件包进行操作,使相关数据加载到系统合适的地方;把这些配置或软件做成软件包的形式;把这些配置或软件做成模块的形式。我个人感觉第一种方式比较灵活,自己也是使用的第一种方式。所以下面介绍的方法以在硬盘安装的CDlinux中用脚本操作原始数据的方法为主。这种方法适合于任何Linux系统,但是我在CDlinux似乎并没有看到相关的描述。关于这种用脚本配置系统的方法你可以在我原来关注过的Damn Small Linux(DSL)发现。如在DSL中进行网络设置,参见局域网内Linux网络设置小结中DSL-3.4.4网络设置部分。日记的末后会简介一下模块和包的制作。

1、系统硬件配置
实际上,CDlinux的自动检测硬件能力非常强大,包括对软阵列等的支持都已编译进内核,正如它的主页上介绍的一样:

你可以把 CDlinux 安装到 CD、DoC、Flash、HD 或者 MD 等类型的驱动器上,这些驱动器可以连接在 ATA、SATA、SCSI、USB 或者 IEEE1394 等总线上。在绝大多数情况下,CDlinux 都能自动识别这些设备并找到自己。

CDlinux 支持多种文件系统,你可以把它安装到 ext2、ext3、jfs、reiserfs、xfs、isofs、udf 及 hfs、hfsplus、fat、ntfs 等等分区上,CDlinux 都能自动挂载它们、找到自己并正常启动。

但是,再完美的系统也不能囊扩一切,如我的一台赛扬CPU的老机器上,老式串口2键机械鼠标,需要使用800x600屏幕分辨率并且工作在75HZ的刷新率;另外,在把CDlinux放入Vmware虚拟机中运行时,没有vmware显示的驱动,用vesa显示驱动代替,下面我就以此为例讲一下怎样在脚本中配置我需要的硬件环境。

我的CDlinux硬盘安装是安装在第一个硬盘的第一个Windows FAT32分区中的(即Windows下的C:盘,CDlinux 下的/dev/sda1),目录结构是 /CDlinux/CDlinux/bzImage 。先建一个文本文件: /CDlinux/CDlinux/local/run.sh 。我的配置脚本将写在这个run.sh文件中。另外,在运行着的CDlinux中拷贝/etc/X11/xorg.conf Xorg Server配置文件到相同的目录下,即:/CDlinux/CDlinux/local/xorg.conf 。

CDlinux不能自动识别我的老式串口2键机械鼠标,串口的设备文件也没有,所以我先用脚本生成串口设备文件,如: mknod /dev/ttyS0 c 4 64 。然后在xorg.conf中相应位置配置串口鼠标,如:

Section "InputDevice"
Identifier "GenericMouse"
Driver "mouse"
Option "Protocol" "Microsoft"
Option "Device" "/dev/ttyS0"
Option "Emulate3Buttons" "Yes"
EndSection

修改xorg.conf相应位置使显示器工作在800x600x16@75HZ,相应配置为:

Section "Monitor"
#DisplaySize 280 210 # mm
Identifier "Monitor0"
VendorName "GSM"
ModelName "3abd"
Option "DPMS"
HorizSync 29-50
VertRefresh 56-75
EndSection


Section "Screen"
DefaultDepth 16
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Modes "800x600"
Depth 16
EndSubSection
EndSection

在Vmware虚拟机中使用vesa的xorg驱动只要把xorg.conf中"Device"那节的"Driver"修改为"vesa"就行了。
你需要根据自己的情况修改相应参数。

2、使用交换分区(或交换文件)
在内存不足的情况下,在Linux中使用交换分区(或交换文件)是必须的。就是在内存足够的情况下,听说在Linux中使用了交换分区(或文件)的系统的内存调度算法会优化(没有查资料,也许不正确)。如果你在已有Linux交换分区的机器上运行CDlinux,一般来说都会自动启用交换分区,不过我在Vmware虚拟机中运行CDlinux ISO 光盘系统时好像也碰到过不能自动启动交换分区的情况,这时,你在脚本文件中添加一句swapon /dev/sdaX(/dev/sdaX代表你的交换分区)。

不过,当你在Windows系统中或先前没有系统的机器上运行CDlinux,那么方便的方法是使用交换文件。Windows系统有名为“pagefile.sys”的页面文件,不过,我发现并不能用swapon命令直接使用它,我在脚本文件中添加如下两句来使用它作为交换文件:

mkswap $SWAPPATH/pagefile.sys
swapon $SWAPPATH/pagefile.sys

$SWAPPATH 指交换文件的位置,在这之前你可以先指定CDlinux安装路径前缀和交换文件路径前缀如下:

CDLPATH=/media/sda1/CDlinux
SWAPPATH=/media/sda5

另外,我建议在CDlinux安装中制作一个交换文件以备在没有任何已有的交换分区或文件的情况下使用(甚至在安装U盘的系统中这样做)。在安装CDlinux时,我事先用如下命令在/media/sda1/CDlinux 下面制作一个128M的交换文件:

dd if=/dev/zero of=/media/sda1/CDlinux/swapfile bs=1024 count=131072
mkswap /media/sda1/CDlinux/swapfile

然后在脚本文件中启用这个交换文件:

swapon $CDLPATH/swapfile

$CDLPATH为前面指定的CDlinux安装路径前缀。
另外,我发现启用swap的顺序确定了swap使用的优先级别。可以通过"cat /proc/swaps"查看。所以,要把速度快的交换分区(交换文件)放在前面。

3、添加软件
这里添加调整 reiserfs 文件系统大小的 resize_reiserfs 命令和更新王码五笔码表为例。添加软件之前请先阅读CDlinux官方网站的文档:我想自己编译软件包加到 CDlinux 中,该用哪个发行版?,从上面得知在CDlinux 0.6.2中可以采用Slackware 11 或 LFS 6.1.1 的软件包。但是我想这也不是绝对的,你同样可以试试其它发行版的软件包。

不知为什么,CDlinux 0.6.2包括了reiserfs文件系统的几乎所有命令,但唯独漏了调整reiserfs文件系统大小的resize_reiserfs命令,在Slackware包查询页面中查询到Slackware-11.0包含文件名为“resize_reiserfs”的包为:reiserfsprogs-3.6.19-i486-1,下载下来用 "tar xfvz"把它解压开,把里面的resize_reiserfs 文件复制到$CDLPATH/CDlinux/local/sbin/resize_reiserfs 备用。然后,在脚本文件run.sh添加如下几行使用这个命令:

cp $CDLPATH/CDlinux/local/sbin/resize_reiserfs /sbin/resize_reiserfs
chmod 755 /sbin/resize_reiserfs

CDlinux 0.6.2中的五笔输入法fcitx是不支持词语输入的,所以我需要替换它的五笔码表文件“/usr/share/fcitx/data/wbx.mb”为支持词语输入的。

在Ubuntu的仓库里下载到fcitx_3.4.99+svn163-0ubuntu1_i386.deb。在我这里(四川),台湾的镜像比较快,你可以根据自己的情况选择Ubuntu仓库的镜像站点。然后,用 "ar x fcitx*"解开deb文件,再解开里面的data.tar.gz文件“tar xfvz data.tar.gz”,把解开的“./usr/share/fcitx/data/wbx.mb”复制到$CDLPATH/CDlinux/local/wbx.mb 备用。在脚本文件里添加如下两句替换系统中的五笔码表:

rm /usr/share/fcitx/data/wbx.mb
cp $CDLPATH/CDlinux/local/wbx.mb /usr/share/fcitx/data/wbx.mb

4、保存变动的数据
据我所知,CDlinux官方没有提供保存变动数据的方法,我借鉴Puppy Linux保存变动数据的方法。事先建立一个loop设备文件,再把这个loop设备格式化为一个文件系统,在文件系统中保存变动数据。我因为需要在CDlinux加入F-PROT杀毒软件,而杀毒软件的病毒库是需要随时更新的。如果把它安装在非Linux文件系统中,因为一些文件的属性不能保留,我好像没有安装成功。最后决定在loop设备的Linux文件系统中安装这个杀毒软件。下面是创建一个100M大小的loop设备文件和格式化为ext2文件系统并挂载在/mnt/save下的命令(Ubuntu 6.06下执行为例):

dd if=/dev/zero of=~/save.img bs=1K count=102400
sudo losetup /dev/loop0 save.img
sudo mkfs.ext2 /dev/loop0
sudo mkdir /mnt/save
sudo mount -t ext2 -o loop save.img /mnt/save

F-PROT下载Linux版本家用F-PROT,然后用下面的步骤解压并安装到上面创建的loop设备文件系统中:

sudo tar xfvz fp* -C /mnt/save
sudo mkdir /mnt/save/usr/bin -p
sudo mkdir /mnt/save/usr/man

上面创建/mnt/save/usr/等目录是因为安装f-prot为问在什么地方安装到其相应的真实文件的链接,我是把这些链接(如fpscan的链接)安装到/mnt/save/usr下面的。(注意:/mnt/save 是上面loop设备文件的挂载点)

可能你要问我为什么不在 CDlinux下安装f-prot,是因为安装f-prot需要执行*.pl后缀的安装文件install-f-prot.pl,而在CDlinux 0.6.2标准版默认没有相应的执行程序perl。而我懒得在CDlinux中添加perl。

这样,根据提示在loop设备文件中安装完f-prot后。你就可以把这个loop设备文件复制到CDlinux所在文件系统中,到时挂载上这个loop设备,执行里面的杀毒程序就行了。
下面是我写在run.sh脚本中的加载loop文件系统中的f-prot杀毒软件,并更新杀毒软件病毒库(loop文件系统可以保存用户的变动数据)的脚本:

mkdir /mnt/save
mount -o loop $CDLPATH/CDlinux/local/save.img /mnt/save

ln -s /mnt/save/apps/f-prot/f-prot.conf /etc/f-prot.conf
ln -s /mnt/save/apps/f-prot/fpscan /usr/bin/fpscan
cd /mnt/save/apps/f-prot
./fpupdate &

你会发现用这个loop设备文件确实可以保存你的变动数据。

最后我完成的脚本文件run.sh的内容如下(供参考):

#!/bin/bash

#CDlinux安装路径和Windows的页面文件(用作CDlinux的交换文件)位置
CDLPATH=/media/sda1/CDlinux
SWAPPATH=/media/sda5

#格式化交换文件和启用交换文件
mkswap $SWAPPATH/pagefile.sys
swapon $SWAPPATH/pagefile.sys
swapon $CDLPATH/swapfile

#生成串口鼠标需要的串口设备文件
mknod /dev/ttyS0 c 4 64

#添加调整 reiserfs 文件系统大小的 resize_reiserfs 文件
cp $CDLPATH/CDlinux/local/sbin/resize_reiserfs /sbin/resize_reiserfs
chmod 755 /sbin/resize_reiserfs

#用定制的Xorg XServer 配置文件 xorg.conf 替换系统中默认的配置文件
cp $CDLPATH/CDlinux/local/xorg.conf /etc/X11/xorg.conf

#用可以输入词语的王码五笔码表替换原系统中只支持单字输入的五笔码表
rm /usr/share/fcitx/data/wbx.mb
cp $CDLPATH/CDlinux/local/wbx.mb /usr/share/fcitx/data/wbx.mb

#加载loop文件系统中的f-prot杀毒软件,并更新杀毒软件病毒库(loop文件系统可以保存用户的变动数据)
mkdir /mnt/save
mount -o loop $CDLPATH/CDlinux/local/save.img /mnt/save

ln -s /mnt/save/apps/f-prot/f-prot.conf /etc/f-prot.conf
ln -s /mnt/save/apps/f-prot/fpscan /usr/bin/fpscan
cd /mnt/save/apps/f-prot
./fpupdate &

#重启Xorg Xserver
killall xfce4-session

使用的方法是,当启动CDlinux后,按CTRL+ALT+F1进入控制台,执行 :

. /media/sda1/CDlinux/CDlinux/local/run.sh

或者

cp /media/sda1/CDlinux/CDlinux/local/run.sh ~/
cd
chmod +x run.sh
./run.sh

即可。这样,Xorg Xserver 将重启,所有配置生效。杀毒软件自动更新。请注意,如果你在X Winow 下的终端下执行这个脚本,由于脚本先kill掉当前的窗口管理器,你的杀毒软件将不能得到更新。

5、CDlinux模块和包的制作
相比CDlinux 0.5.9,CDlinux 0.6.2的模块制作要简单一些,你不必写.autoreg, .mount_point, .init等配置文件了。在CDlinux下直接把你要制作的软件模块的相应文件和库放在一个目录下(如temp),然后在这个目录的上级目录中执行“mksquashfs temp module-cdl.md”,其中的module是你任意指定的模块名。为什么要在CDlinux下呢?因为CDlinux 0.6.2的模块文件*.md和initrd文件采用的squashfs文件系统使用了新的lzma压缩算法,在一般没有对内核打过补丁的Linux系统中无法使用(如我使用的Ubuntu 6.06 和 Ubuntu 8.04)。

包的制作实际上就是把你需要加入的软件相关文件做成*-cdl.tgz形式的归档压缩文件(也就是用 tar cfvz 任意的包名-cdl.tgz ./* 的命令)。放在相应的位置就行了。

模块和包的区别在于模块可以在内存不足的情况下加载为loop设备。而包是启动系统后把全部文件加载入了内存中。

关于模块和包的加载顺序,从启动的屏幕信息得知,是先加载extra文件夹里的基本系统,再加载lang文件夹里面语言相关的东西,再加载local文件里面的东西。所以,自己添加的东西应该是放在local文件夹下面。关于模块和包的加载顺序没有仔细的学习。如:两个包在运行的CDlinux系统中解开后,有同路径同名的文件时,系统是怎样处理的?

好了,关于CDlinux 0.6.2的配置及软件安装就记到这里。个人水平有限,欢迎批评与指正。谢谢。

下一篇将是:CDlinux 0.6.2 应用。

5 thoughts on “CDlinux 0.6.2 配置及软件安装”

  1. Pingback: pingback
  2. Pingback: pingback
  3. Pingback: pingback
  4. 我使用CDlinux 0.9.2 社区版,里面没有音频播放器,去哪下载audacious,如何安装audacious 1.5.1?audacious已经有2.0版本了,是不是高版本好点?

  5. 在菜单中有smplayer可以用。
    CDlinux目前还没有包管理系统,如果您需要添加额外的软件,请参见:
    1、我想自己编译软件包加到 CDlinux 中,该用哪个发行版? http://cdlinux.info/wiki/doku.php/zh/doc/faq/devel
    2、CDlinux 0.5.9模块及包制作:
    http://www.learndiary.com/archives/diaries/3523.htm
    3、CDlinux 0.6.2的模块及包制作,即这篇日记。
    没有用过audacious,按一般规律应该说是高版本比低版本的功能等更好点。
    另,学习日记(本站)即将推出U盘Linux系统定制服务,可以根据您的需要为您定制适合的U盘Linux(暂时在CDlinux, Puppy, Ubuntu中选择并提供技术支持)。敬请关注。

Comments are closed.