DeLi Linux 中文翻译备忘录

DeLi Linux 是一个致力于为老旧电脑(486~PII)提供自由操作系统的轻量级桌面型 linux 发行版。它认为,扔掉那些老旧电脑是可耻的,一些不愿扔掉老旧电脑或者买不起新电脑的人可以用这些老旧电脑装上 DeLi Linux ,从而变为一台可用的系统。虽然,这些电脑也可以装上 Windows 95 类似的操作系统,不过,这些操作系统微软不再生产和支持了。针对于这些操作系统的软件也不再有了。所以,DeLi Linux 决定来承担这一使命。

我想说,DeLi Linux 的愿望是良好的,我赞赏他们的愿望。我试用了一下 DeLi Linux,确实,它能在我的 486DX100 + 24M 内存的机器上顺畅运行,但是,它的中文支持相当的差,我向DeLi Linux 的论坛提交了一则反映中文支持极差这个问题的帖子:Some experiments of using DeLi Linux with chinese,据 DeLi Linux 的作者 haary 回复,因为DeLi Linux-0.7.2 使用的是GTK1,GTK1 对unicode 没有支持,所以如此。DeLi Linux 未来的 0.8 版本将转换为使用GTK2,非 latin 字体将得到完全支持。所以,我想,DeLi Linux-0.8 的中文支持将有巨大的提升。

我觉得,如果 DeLi Linux 发展得好,那些老旧电脑的使用者将受益;如果 DeLi Linux 的中文支持发展得好,那么,老旧电脑的中文使用者将受益(包括我)。于是,当我看见了 DeLi Linux 的作者 haary 发的需要翻译人员的帖子:Translators wanted 后,我决定加入 DeLi Linux 现有的10种语言之一的中文的翻译。下面是翻译的网页地址:

DeLi Linux 英文主页 DeLi Linux 中文主页

DeLi Linux 英文WiKi DeLi Linux 中文WiKi

因为我的英文水平实在有限,错误之处在所难免。所以,如果你发现翻译中有什么错误的话,请点击这里反馈给我,谢谢。

在这篇日记的评论中记录我在翻译过程中碰到的一些问题。所以这篇日记取名叫备忘录。

把下面WiKi链接中出现的“chinese:” 去掉就是英文原文的地址。如果您对我的这些问题有什么意见或建议的话,请在评论中回复一下吧。谢谢。

Some experiments of using DeLi Linux with chinese (转帖)

转自:(Some experiments of using DeLi Linux with chinese

First, thank developers' effort. DeLi have a good goal: do a OS for that old machine, don't waste them, and make someone who can't afford new machine can use DeLi on a old machine, especially in some Third County.

Yes, it works well on my 486DX100 with 24M ram machine. But, when I try to use chinese on it, the big problem rose. I almost can't use any program in DeLi with chinese, except one: Dillo explorer. It isn't like some words in DeLi's homepage: "you can configure DeLi Linux to "speak" the language you want".

I have set "LANG=zh_CN.UTF-8" in /etc/profile with the help of Konqueror/Embeded enable unifont.

But, Konqueror can't display chinese too. Beaver can display and input chinese (I compiled a chinese input program called Fcitx on it successfully ) after set the font to chinese font, but it can't display or input english in Beaver :( . Abiword can't start simply when I set "LANG=zh_CN.UTF-8"

Firefox can display and input chinese, but it can't use the chinese fonts which I copied from Redhat Linux 9.0's "/usr/share/fonts" (Dillo can use it). Before use rehat's chinese fonts, I have executed "fc-cache -fv".

And, the chinese console enviroment "Zhcon + Screen + W3m" works well under my Redhat Linux 9.0 on my 486. But, when I try to compile Zhcon and Screen in DeLi, both of them faild.

Because the chinese issues is so much, it isn't necessary to write every error information of these program here.

I have read some posts in this forum of yours, you say: "Unicode is a big issue which I plan to address in the 0.8 release. Most current apps in DeLi don't have unicode support, because GTK1 has none." in Konqueror/Embeded enable unifont, so, I guess it will be better in chinese (and other non-english)language support.

I tried several mini Linux Live CD, CDlinux, puppy, konippox, etc.. all of them work well with chinese language (some of them have been translated into chinese). But they can't work on a 486. Damn Small Linux can works well on a 486 too, I want say, it is a good mini linux too. But, it also has very few chinese language support. DeLi linux has very few non-english language support too, but, DeLi linux has a good goal: make OS for that old machine, waste these machine is shameful, and these machine can be used by those people who can't afford new machine. Really a good goal.

Language is indeed a very big issue, especially for DeLi's goal: " Especially in the so-called third world, new hardware is not affordable. "

Maybe, you can add an entry called "Language Support " in WiKi?
Maybe, you can add a donation link on DeLi's website, this give a way to that people who want express their gratitude?

Hehe, I have a wish, only a wish, DeLi will has the very well non-english languages support capability like Ubuntu, but it can work well even on a 486 machine :)
My english isn't very well, if there are some improper words in my post , don't mind and point it out for me. thanks.

Wish you happy very day :)

DeLi Linux 中文翻译反馈 (Feedback for DeLi Linux's translation for chinese)

我们已经把 DeLi Linux 的主页翻译成了中文,我们将陆续翻译它的 WiKi 文档和其它东西。 如果你发现了任何关于中文翻译的问题或者有任何建议的话,请在这里回复或者发送邮件到 mdx-xx#tom.com (把#换成@)。谢谢。

DeLi Linux 英文主页      DeLi Linux 中文主页

DeLi Linux 英文WiKi     DeLi Linux 中文WiKi 

We have tranlated DeLi Linux's homepage into chinese, and, we will translate its WiKi documents and some other things. If you find any problem or any advice for its chinese translation, please comment here or contact us with email: mdx-xx#tom.com (change # with @). Thanks a lot.

DeLi Linux english homepage      DeLi Linux chinese homepage

DeLi Linux english WiKi     DeLi Linux chinese WiKi 

试用一个轻量级的Linux发行版:DeLi Linux 0.7.2

我的486装一个可用的linux with X Windows过程中,我还试用了一种轻量级的Linux 发行版:DeLi Linux 的0.7.2版。 下面将我的一些试用心得作一小结。

首先,这个发行版的定位很明确,就是为那些老旧电脑提供操作系统。而且,安装过程也像一个正规的发行版那样,而不是一个live cd。确实,这个发行版的确适合老旧电脑。它的作者在486 +16M的老笔记本上测试上面的每一个软件保证其顺畅运行。我把它安装在一台 486DX100 + 24M的台式机上确实能顺畅运行原版的DeLi Linux的程序(测试了大多数桌面上的软件)。

下面我以现在的最新版本DeLi Linux 0.7.2 为准,对它的安装、配置、Ports 系统、中文支持几个方面作一个小结。当然,它的DeLi Linux Wiki的文档说得很详细,你应该先看看。

一、安装(详见WiKi中的Installation and configuration):

首推的安装方式是把从主页下方下载地址处下载下来的 deli-0.7.2.iso 刻到光盘上,再从光盘上安装。

我使用的是把下载下来的这个iso文件解开,放在一个硬盘分区的根目录下(我是放在一个FAT32分区中的)。然后,下载安装软盘,分别是 deliboot.dskdeliroot.img,依次用deliboot.dsk和deliroot.img引导系统,按提示选择你的安装文件的来源设备,如/dev/hda5。还有就是什么键盘类型、语言等等跟一般发行版差不多的问题。按提示回答就是了。

据说,用安装软盘还可以在局域网中连到另的电脑上安装。我没试过就不说了。

二、配置(详见WiKi中的Installation and configuration):

安装完成后重启进入系统,在root下可以输入delisetup命令进行配置。一般的配置都很容易,只是选择X Server时要注意一下,如果你选择了tiny X Server,进入系统后的鼠标如果不动,可能需要另外设置一下。我的串口鼠标就是不动了,在 /dev下手工连接了一个到串口的符号连接 ln -sf /dev/ttyS0 /dev/mouse ,这样 X下就有鼠标了。不过一重启就没了,所以,我在一个系统启动文件好像是/etc/rc.local中添加一句 ln -sf /dev/ttyS0 /dev/mouse就解决问题了。我的串口鼠标在控制台下的gpm也不工作,同样在 /etc/rc.local中添加 gpm -m /dev/ttyS0 & 就行了。

如果deli没有认出你的设备,如我的网卡,那么还得手工加载,如我就在 /etc/rc.modules 中手工加载我的8139网卡: /sbin/modprobe 8139too

如果你是ADSL拨号上网,那么,在root 用户下执行 pppoe-setup命令,依照提示回答保存就是了。不过,好像它没有开机就连线的选项,如果你要开机联网,可以像我这样,在/etc/rc.local 后面加上一句 pppoe-start & 。

三、Ports 系统(见WiKi中的The ports system):

除了发行版中的二进制包,DeLi Linux还有一种软件安装和升级的方法:BSD Unix 世界的 ports系统,直接应用ports系统从网上下载源码,自动编译安装或升级。它使用的是Crux的ports系统。

四、中文支持:

我试了一下中文软件的使用,效果很不理想(也许是我的方法不对,汉化的方法不对),详见我在网摘:关于Puppy、Deli、Knoppix类、CDlinux等mini型Linux(支持中文为主)的网摘(links for 2007-11-09)
下针对DeLi Linux的评论。在拷贝了redhat linux 9.0下的中文字体到相应目录下,能够完全成功使用的两个软件是fcitx3.1(中文输入法)和 Dillo 浏览器,firefox可以显示和输入中文,不过不能使用我加入的RedHat Linux 9.0下的ZYSong18030中文字体。像字处理软件、电子表格软件、konqe浏览器等等,基本上不能使用中文。可能,在修改ports系统中 Pkgfile相应的编译选项重新编译后,DeLi Linux的中文支持会有改观(详见:Konqueror/Embeded enable unifont)。如:编译时加入xft字体的支持。

而且,就是这少得可怜的中文支持,还必须修改一个配置文件,即把/etc/profile中的export LANG='zh_CN' 改成 export LANG='zh_CN.UTF-8' ,而且,只能是UTF-8编码,因为好像DeLi使用的uclibc现在只支持UTF-8(详见:Konqueror/Embeded enable unifont

所以,作为像我这样的普通的用户来说,要容易的在DeLi Linux下使用中文,还真不容易。

也许,我会继续对DeLi Linux的中文支持作一些摸索,也许,甚至还会改变DeLi Linux 中文支持差的印象,也许。。。

CDlinux-0.5.9的安装和使用简介

上周,为了找到一个能在486上运行的带X的linux发行版,我又试了一些发行版,其中有一个据说是华裔博士做的CDlinux的最新版CDlinux-0.5.9。

从CDlinux的上述主页上可知,这个发行版定位于系统维护,并且全面支持简体中文。

下面简单说一下我是怎么把CDlinux怎样装到硬盘和U盘上和配置 ADSL、怎样制作包(package)和模块(module)的。

不知是怎么一回事,我简单按照主页上的方法不能成功把CDlinux装到硬盘或U盘上(我初步怀疑是作者更新了软件却没有更新相应的文档),文档支持的缺乏是CDlinux被网友提及较突出的问题。

1、把CDlinux-0.5.9装到硬盘上:

我试了一下,fat32和ext2都行,ntfs不行,其它的没试。把下载下来的CDlinux-0.5.9解开,linux可以直接用mount -o loop CDlinux-0.5.9.iso /mnt/isofile打开里面的文件,把里面的整个boot目录拷贝到某个硬盘分区的根目录下。主页上介绍的是用loadlin程序在纯DOS下引导,因为我的机器上有现成的linux的grub引导程序,就直接用grub来引导了。直接在/boot/grub/menu.lst中添加下面一项:

title CDlinux: LANG=zh_CN.UTF8

root (hd0,8)
kernel /boot/CDlinux/autoboot/bzImage vga=791 CDL_LANG=zh_CN.UTF8
initrd /boot/CDlinux/autoboot/CDlinux
boot

关于“ root (hd0,8)”是我的机器上的配置,指的是第一个硬盘的hda9。你需要根据自己的情况修改。关于硬盘分区在linux下的表示,请搜索有关网页。

或者你可以在linux下用root用户执行命令fdisk -l,找到你安装cdlinux的分区,如是第一个硬盘的hdaN,那么就是root (hd0,N-1),如果是第二个硬盘的hdbN,那么就是 root (hd1,N-1)。

2、安装在U盘里:

我的U盘是一个分区,fat32 格式。按照主页的说明,在SYSlinux上下载了能在各种操作系统下制作可启动U盘的程序,最新版的是syslinux-3.52.zip。解开这个文件,选择相应操作系统的syslinux命令来制作可启动U盘。如Linux下用unix目录下的:syslinux /dev/sda1,Windows下用win32目录下的:syslinux.exe D: (根据你的分区情况作相应修改)。

然后,把整个boot目录拷贝到U盘分区的根目录下。再在CDlinux主页上下载syslinux 的配置文件并把里面的文件展开到根目录下,然后根据你的情况修改里面的syslinux.cfg文件,我把里面的“kernel bzImage”全部替换成"kernel /boot/CDlinux/autoboot/bzImage",把"initrd=CDlinux.gz"全部替换成“initrd=/boot/CDlinux/autoboot/CDlinux”,实际就是现在U盘里的相应文件。

于是,当你把电脑设为从U盘启动,就可以使用了。

3、注意,CDlinux启动时好像会把扩展的包什么的(如firefox,中文locale,中文字体等等)加到内存里,如果你的内存小,可能要删除一些这样的包才行(我没试过)。如,我把CDlinux-0.5.9装在一台486DX100 + 24M,根本就启动不了,好像提示不能把映像加载到内存中。当然,CDlinux的定位本来就不是说用于低配置电脑运行,而是系统维护。

4、配置ADSL连接。

CDlinux自动启动DHCP客户端,在使用DHCP的局域网中可以不用配置。如果用ADSL上网,用pppoe-setup就可以配置了(好像要sudo),程序会问你一些参数,如ADSL用户名,密码,DNS(一般是自动从ISP获取的就填server)。配置好后,pppoe-start就启动连接了,关闭用pppoe-stop。

5、制作包(package):

先看作者主页的how-to内容。这里以替换CDlinux-0.5.9原有的fcitx输入法为例,原有的是没有五笔输入法的,现在要换上有五笔的。我原来在redhat linux 9.0下编译安装了一个fcitx3.1,先把系统中有关fcitx的文件找到,我用的是find命令,你也可手工找。

find /usr -iname “*fcitx*” -exec tar rfv “fcitx.tar” {} \;

然后把fcitx.tar在一个文件夹A中解开,得到fcitx的文件;再把CDlinux原有的boot/CDlinux/lang/zh_CN.UTF8/fcitx-3.3.1-cdl.tgz 在一个文件夹B中解开。然后,对照B中的文件内容,把A中的文件拷过来替换掉对应的文件。我这样做的目的是尽量减小体积。实际上,就用A中的全部文件打成一个包应该没有问题。这样,我去掉了A中的二笔等等输入法和帮助文件。B中应有目录etc,home,usr/local/bin,usr/local/share...。然后在B中用命令“ tar cfvz fcitx-wb-3.1-cdl.tgz ./* ”把其中的文件压缩成一个tgz包放回/boot/CDlinux/lang/zh_CN.UTF8中就行了。
6、制作模块(module)

先看作者主页的how-to内容。现在为CDlinux-0.5.9制作模块的关键是要知道现在的主页上介绍的用 mkfs.cramfs制作模块文件的方法是过时的,CDlinux-0.5.9现在新用了一个squashfs的文件格式(用file filename可以得到原文件格式等信息),需要用mksquashfs命令制作,如果你的系统中没有这个命令,到squashfs的主页下载一个。

还有一个要点是要知道在CDlinux-0.5.9中:/usr, /lib 等等系统目录不可写的,/usr/local可写,/etc也可写,其它的没试。

这里以我从DSL上下的opera852的模块制作为例,简述模块的制作。

用“ tar xfvz opera852.dsl ”命令解开opera852的文件到目录temp下,去掉DSL包专有的home和tmp目录,把 opt/opera852下面的bin, lib, share目录移到temp中,去掉opt目录。这时temp目录下有etc , bin, lib, share, usr目录。

把文件作一些需要的修改,我把etc下的opera6rc 作了一下修改如下(指定locale目录和启用xft字体):

; Put any default settings here that are overridable by users

[User Prefs]
Language Files Directory=/opt/opera852/share/opera/locale/
Force DPI=96

Enable Xft Fonts=1

用“ mount -t squashfs -o loop firefox-2.0.0.6-cdl.md /mnt/squash ”命令把CDlinux原有firefox模块挂载到/mnt/squash目录,把里面的3个隐藏文件.autoreg, .mount_point, .init,拷贝到temp目录下,并仿照着改写成需要的样子。

.autoreg不知是做什么的,空文件,没动;

.mount_point中的内容:

# .mount_point: indicates where to mount this image

/opt/opera852

.init文件的内容:

#!/bin/sh
#
# .init: init script for this module (optional)

MyDir=`dirname $0`
LnkDir=/usr/local

[ -d $LnkDir/bin ] || mkdir -p $LnkDir/bin
[ -d $LnkDir/lib ] || mkdir -p $LnkDir/lib
[ -d $LnkDir/etc ] || mkdir -p $LnkDir/etc

ln -sf $MyDir/bin/opera $LnkDir/bin/opera
ln -sf $MyDir/etc/opera6rc $LnkDir/etc/opera6rc

cd $MyDir/usr/lib
for i in libXm.so.*; do
ln -sf $MyDir/usr/lib/$i $LnkDir/lib/`basename $i`
done

然后,到temp目录的上级目录下,执行命令:“ mksquashfs temp opera-8.52-cdl.md ”就做了一个opera的模块文件opera-8.52-cdl.md。把这个模块文件放在/boot/CDlinux/extra目录下就行了。

7、CDlinux可以做什么

据主页上说,主要是用于系统维护,而且,CDlinux的扩展性很好,你把按你的需要对其进行改造。

8、CDlinux的缺点

一个比较突出的问题是文档少。关于扩展包制作没有详细的示例,而CDlinux本身的技术实现几乎没有提及。作为我见过的唯一的华人的成气候的mini型linux发行版,文档的丰富很关键。像DSL,deli等等发行版都有专门维护的文档和交流论坛。而我好像还没有发现CDlinux有交流论坛。关于cdlinux的文章基本上都分散在各个linux论坛或个人博客中。不信,你google一下“cdlinux”。

9、疑问:

1)、有没有办法避免系统启动加载太多的东西,并且改造成中文版的486可用的带X的linux发行版,像DSL, deli等等?

如有错漏还请指点一二,谢谢。

关于Puppy、Deli、Knoppix类、CDlinux等mini型Linux(支持中文为主)的网摘(links for 2007-11-09)

局域网内Linux网络设置小结

在实现为我的486装一个可用的linux with X Windows的目标的过程中,我试过Redhat Linux 9.0Minix3Damn Small Linux 3.4.4(简称DSL-3.4.4)Slackware Linux 10.2。除了Minix3的网络设置没有完成外,这里针对上面另3种linux发行版在我的486机器所在局域网环境中的网络设置作一个比较和小结。主要涉及:升级内核更新驱动程序,手动加载网卡,网络配置,用iptables实现简单NAT服务提供共享上网。

1、我的网络环境
在一个小的局域网中,机器不超过10台,网关路由器IP:192.168.1.1,路由器通过ADSL接入因特网。客户机可用dhcp上网(在网上听说这样的网络任意一台机子都不能设置为静态IP,否则会出问题,不过,我的机子恰恰就是设置的静态IP,至今有大半年了吧,也没有问题,可能是机子少的原因吧?)。

2、我的486机器的网络环境
操作系统:如上述3种;两块10M的ISA网卡(大概是如此,准确名称或有出入),一块是DLINK-220的,一块是INTEL Eexpress 16的;因为路由器插口数目不够,另一台机子和我共用一条网线,所以在机器上用iptables实现简单的NAT服务提供共享上网。

3、关于与此文网络设置相关的内核编译
因为原来使用redhat linux 9.0的自带内核版本是2.4.20-8,我的Eexpress网卡在上面竟然不能正常工作(能识别,但不能上网),于是,新下了一个2.4.35.3的内核,把Eexpress 16的驱动编译成模块;另外,如果要使用iptables,内核中相关编译选项也要选上。关于这两个问题的内核编译,详见日记:为486上的Linux编译一个2.4.35.3的内核
Slackware-10.2中自带的几个内核2.4.26和DSL-3.4.4自带的2.4.26都能正确的驱动Express 16网卡。

4、手动加载网卡
如果你的网卡由于某种原因不能被系统自动识别,你可以手动加载网卡。

5、设置网络
上面三个版本的linux都有自动设置网络的命令,redhat linux 9.0 和 slackware-10.2是netconfig,如设置第2块网卡在redhat linux 9.0中为 netconfig --device=eth1,slackware的netconfig命令好像不大相同,后面会讲。DSL-3.4.4在管理菜单中也有网络设置选项。你也可以手动修改配置文件。

6、各个操作系统的相应配置文件:
1)Redhat Linux 9.0

网卡加载:/etc/modules.conf
内容:

alias eth0 ne
options ne io=0x240

alias eth1 eexpress
options eexpress io=0x300 irq=3

或者写在/etc/rc或其它什么系统启动脚本中,如:

/sbin/modprobe eexpress io=0x300 irq=3

IP设置:
文件1(对eth0的设置,这里是DLINK-220那块网块):/etc/sysconfig/network-scripts/ifcfg-eth0
内容:

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.106
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

文件2(对eth1的设置,这里是INTEL Eexpress 16那块网块):/etc/sysconfig/network-scripts/ifcfg-eth1
内容:

DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.1
NETMASK=255.255.255.0

注意:eth1网卡没有设置网关,它用来在两台电脑之间为另一台电脑提供共享上网作网关用。后同。

与我这台机器相连的另一台电脑需要把他的网卡和我的这块eth1网卡相连,通过后面介绍的设置,他的电脑就可以通过我的电脑共享上网。

域名解析设置:/etc/resolv.conf
我的机器上的内容:

nameserver 192.168.1.1
search mdx

关于与我的电脑相连的另一台机子的网络设置和在我的机子上启用iptables提供nat服务是几个操作系统都相同的,放在最后说。

2)、Slackware-10.2
网卡加载:在文件/etc/rc.d/rc.modules中手工添加在后面(至于slackware怎样自动检测网卡,我不知道);
内容:

/sbin/modprobe ne io=0x240
/sbin/modprobe eexpress io=0x300

尽管我没有指定上面网卡的名称,系统还是自动的把ne的网卡(DLINK-220)认作eth0,eexpress的网卡认作eth1,或许跟写命令的顺序有关?我没有验证。

IP设置:在文件/etc/rc.d/rc.inet1.conf中设置(可以用netconfig命令设置,也可手工添加,slackware中的我试了一下netconfig命令,暂时还没找到单独为第二块网块设置的参数,所以在slackware中的第二块网卡的设置是手工加的);
相关的内容(非全部):

# Config information for eth0:
IPADDR[0]="192.168.1.106"
NETMASK[0]="255.255.255.0"
USE_DHCP[0]=""
DHCP_HOSTNAME[0]=""

# Config information for eth1:
IPADDR[1]="192.168.0.1"
NETMASK[1]="255.255.255.0"
USE_DHCP[1]=""
DHCP_HOSTNAME[1]=""

# Default gateway IP address:
GATEWAY="192.168.1.1"

域名解析设置,与上一样,同样在文件/etc/resolv.conf中设置;
我的机器上的内容:

search localdomain
nameserver 192.168.1.1

3)、DSL-3.4.4

Damn Small Linux 的网络设置有点特别,不管你是在网络设置菜单设置或手工添加都写在下面几个脚本里的:/opt/bootlocal.sh,/opt/eth0.sh,/opt/eth1.sh。
对照上面两个系统的设置,我就不详细说了,把几个文件贴出来:
/opt/bootlocal.sh内容(里面不只是网络设置):

#!/bin/bash
# put other system startup command here
/sbin/syslogd
/sbin/modprobe ne io=0x240 irq=5
/sbin/modprobe eexpress io=0x300 irq=3
/sbin/modprobe sb io=0x220
/opt/nat.sh &
/opt/eth0.sh &
/opt/eth1.sh &
loadkeys us

/opt/eth0.sh内容:

#!/bin/bash
pkill pump
ifconfig eth0 192.168.1.106 netmask 255.255.255.0 broadcast 192.168.1.255 up
route add default gw 192.168.1.1

/opt/eth1.sh内容:

#!/bin/bash
pkill pump
ifconfig eth1 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 up

注意,在上面的/opt/bootlocal.sh文件中执行了一个文件/opt/nat.sh,这个文件就是启动iptables的nat服务的,我把它手工添加进了上面的那个自动启动脚本里。也可以不添加,需要时手动执行一下就是了。

这里是/opt/nat.sh的内容:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j SNAT --to 192.168.1.106

4)、手动使用iptables的nat服务的脚本,像上面Redhat Linux 9.0 和 Slackware-10.2中我就使用下面的脚本nat来开启和关闭nat服务(slackware-10.2的iptables命令默认是装在/usr/sbin/下面的,所以下面的“/sbin/iptables”要改成“/usr/sbin/iptables”):

#!/bin/sh
# Name: nat
# Author: littlebat
# Date: 2007/10/30

echo "You use the iptables firewall.";
ETH="eth0" #有外网IP的网卡
src="192.168.0.0/24" # 内网地址段
TARGET="192.168.1.106" # 网关地址

case $1 in
start)
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -A POSTROUTING -t nat -s $SRC -j SNAT --to $TARGET
echo "Nat starting ...... [ OK ]"
;;
stop)
echo 0 > /proc/sys/net/ipv4/ip_forward
echo "Nat closing ...... [ OK ]"
;;
*)
echo $"Usage: $0 {start|stop}";
esac

要开启nat时输入:nat start,关闭时输入:nat stop
当然,我只是简单的为另一台机器提供共享上网。实际上,用iptables可以设置非常复杂的防火墙。我暂时用不着,也就不研究它了。

5)、需要借助我的机子共享上网的那台机子的网络设置:
另一台机子需要设置成静态IP,参数如下:
IP:192.168.0.2
netmask:255.255.255.0
网关:192.168.0.1
域名解析:192.168.1.1

因为我的机子性能太差,所以既没有使用DHCP客户端程序获取静态IP,也没有使用DHCP服务器程序为另一台机器提供DHCP上网服务,都是静态的。

上面几种网络设置的形式,我最喜欢DSL中用脚本设置,我觉得这样的通用性和灵活性是最好的。
6)、疑问:
(1)、在DHCP的局域网中使用静态IP有什么问题?
(2)、Slackware中的netconfig命令怎样配置多块网卡?
(3)、Slackware中/etc/rc.d/rc.inet1.conf中,配置的网关在这个文件中是不是多块网卡共享的?为什么不像redhat linux 9.0和DSL那样每块网卡在分别的文件中配置?配置的这个网关对我配置的第二块网卡有什么影响没有?

至此,我的机子中3个Linux操作系统的网络设置作了一个小结,供备忘和有需要的朋友参考。水平实在有限,错漏之处和针对我的疑问还望提示一二。谢谢。

在486上初试Slackware Linux

在实现为我的486装一个可用的linux with X Windows的目标的过程中,我也试过Slackware Linux(以下简称slackware)。因为我在网上读到slackware对硬件的要求比较低,而且定制性比较好。初步试了一下,感觉确实是名符其实。我用的slackware的版本是10.2。为什么不用最新的12.0呢,后面我会说的。

在我的486DX100+24M的老机器上,slackware的启动时间是最短的,完成基本a系列软件的安装后,添加了控制台的中文环境zhcon + w3m,而且安上一个X和添加X的中文支持后,硬盘占用也不过400M左右。不过,如果你要用locale -a命令查看机器里所有的locale列表,你还需要安装glibc-2.3.5-i486-5.tgz。而原来安装Redhat linux 9.0,仅选择字符界面的基本系统安装就大概1G左右(我曾设法只安装必须的,不过好像redhat linux 9.0安装时的定制性不太高)。对于系统的定制需要和方便省事上来说,我感觉slackware在这个平衡上是做得比较好的。像Ubuntu linux和Redhat linux等,使用比较方便,但是定制性不好;LFS等从源码构建整个系统,我想定制性是一流的,可是复杂的操作步骤和漫长的编译时间让我望而生畏,况且我的机器老掉牙,可能编译时间更长。我也一直没有尝试这类系统。而slackware,我觉得达到了比较好的平衡。

安装slackware比较容易,我因为用不着完全安装,就没有刻成光盘,而是从网上下载单独的分组的软件包,再按照slackware网上的安装帮助制作bare.i的启动软盘,install.1,install.2的root软盘。从软盘引导安装了a系统基本系统和一些X Windows支持包和网络配置包。不过,我发现最新版的slackware-12.0没有上面提到的3个软盘映像文件,用slackware-11.0的3个软盘映像文件来安装slackware-12.0的系统会失败,安装glibc-solibs这个包时报告“FATAL: you need to be running a 2.6.x Kernel in order to upgrade to this version of glibc.”,别人也碰到类似的情况,见:LinuxPackages :: View topic - Slackware12-CD not bootable - problems to create bootdisk。于是,我就找了一个速度快的老版本Slackware-10.2的镜像:ftp://ftp.cs.cuhk.hk,而且这里好像只有10.*的版本,我下载了一些包,速度基本上上、下午都能稳定在130~150kb。我的是四川电信。

Slackware安装、维护软件包的命令也比较好记:installpkg安装,upgradepkg升级,removepkg卸载,makepkg制作软件包,explodepkg在当前目录解压软件包而不执行安装脚本。具体参数用“命令 --help”方式查看。

另外,安装时a系列里的kernel-ide的内核包应该是至少要安一个,我把kernel-ide-2.4.26-i486-4.tgz、kernel-ide-2.4.29-i486-4.tgz、kernel-ide-2.4.31-i486-4.tgz全安装上了。

安装了基本系统的slackware-10.2是没有网络配置工具的(如ifconfig, ping等命令),需要下载tcpip包,slackware-10.2里新点的版本是tcpip-0.17-i486-35.tgz。安装了它后,一些网络相关文件(如/etc/rc.d/rc.inet1,/etc/rc.d/rc.inet1.conf)才会出现。你才能用/sbin/netconfig命令配置网络。在我机器上,用netconfig命令完成的slackware-10.2的网络配置是保存在/etc/rc.d/rc.inet1.conf中的,然后/etc/rc.d/rc.inet1会调用这个文件完成网络配置。dns设置是保存在通用的/etc/resolv.conf文件中的。

在slackware-10.2上安装支持中文的X Windows,我安装的包有:x11-6.8.2-i486-3.tgz(X服务器),x11-fonts-misc-6.8.2-noarch-3.tgz(说是运行X最基本的字体),blackbox-0.70.0-i486-1.tgz(窗口管理器,blackbox-0.65.0-i386-1.tgz的中文支持好像有问题),glibc-i18n-2.3.5-noarch-5.tgz(locales,里面有各种locale),从Redhat linux 9.0下直接拷贝过来的中文字体(把目录/usr/share/fonts/zh_CN复制过来,里面有zysong.ttf)。中文输入法我没装。

Slackware-10.2的locale在/etc/profile.d/lang.sh中设置,我设置的是:

export LANG=zh_CN.gbk
export LC_ALL=zh_CN.gbk

还有一个比较有意思的是,我并没有在/etc/X11/xorg.conf中设置上述的中文字体路径,可slackware能自动找到,并在blackbox的窗口信息中正确的使用我在blackbox的style中(/usr/X11/share/blackbox/styles/下面的style文件中)设置的zysong字体:

*font: ZYSong18030-12
...
menu.title.font: ZYSong18030-12:style=Bold
...
window.font: ZYSong18030-12:style=Bold

。我看系统启动时启动了一个在/etc/rc.d/rc.M中定义的字体相关脚本:

# Update the X font indexes:
if [ -x /usr/X11R6/bin/fc-cache ]; then
echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
/usr/X11R6/bin/fc-cache
fi

也许是这个脚本的作用?需要时再继续学习。

在没安X之前,启动系统用top命令查看内存占用16M左右;也许是安X后,启动系统用top看内存占用达到了20M(并没有启动X)。也不知是那个服务的作用?

总的来说,感觉slackware不错。

在486上初试Damn Small Linux ( DSL )

在实现为我的486装一个可用的linux with X Windows的目标的过程中,我也试过Damn Small Linux(以下简称DSL),用大概一周时间作了一个初步的安装试用。下面我把自己安装和使用DSL的心得记下来,我用的DSL版本是3.4.4,它的内核版本是2.4.26。好记性不如烂键盘,供备忘和有需要的朋友参考。

如果你在Google中搜索“最小的linux”、“486 linux”之类的关键词,多半会发现这个著名的迷你型linux发行版(如果可以称之为发行版的话)。确实,DSL很小,可以装在U盘和刻在那种小尺寸的光盘上运行,只有50M大小。也可以装在硬盘里,装在硬盘里也不过100M左右。而且,真的对机器要求非常低,记得网上好像有人在386上成功运行它。而我在486DX100+24M内存的机器上运行它,用dillo上网的速度还不错。它这么小,只有字符界面吧?错,它有一个完整的桌面系统,使用fluxbox和xdesktop(好像是叫这个吧)。有一套完整的在X Windows下运行的程序:办公、娱乐、上网、图片处理等等,一个也不少,完全可以胜任一般的日常应用!

那么,DSL就非常完美了吗?非也,一个最大的问题是:DSL国际化支持几乎为零(好像也正式支持了德语什么的),一般的非英语用户想升级它为自己语言的环境也非常难。事实上,除了它自带的几种扩展包,你要想对系统用apt命令对它作大的改动是比较困难的。比如语言支持。我曾按照网上一篇老文章DSL + xfont-intl-chinese + FCITX 定制成功!(已加入文泉驿字体)在我安装到硬盘上的DSL-3.4.4添加它的中文支持,可是当用“apt-get -o APT::ForceLoopBreak=yes install locales ”终于把locales安装到Damn Small Linux 3.4.4上了,我却不能为它安装中文字体了(或者是其它什么步骤,因为没有及时记录,忘了)。于是就停止了。最后,把同台机器另一个操作系统里的gpm、zhcon有关的文件拷贝到系统里添加控制台的中文支持。我想如果把w3m相关文件拷到系统里,作一些修改(像我把redhat linux 9.0的这些文件移植到slackware linux 10.2一样,后面的日记也许会记录这个过程),应该可以在控制台里完成大部份中文打字和上网操作的。至于X Windows的汉化,我尝试了一下,没有成功就算了。上面汉化成功DSL的版本是1.2.1。关于DSL作者对DSL语言支持和升级支持的“官方”说法,可以参考这两篇文章:Language Support - DSL WikiEnabling Apt - DSL Wiki。以我的理解,从中得出下列信息:
DSL由于极度裁剪,使得扩展非常困难;使用apt命令升级单独的包,但除非是专家,不要对主要系统进行升级;由于DSL不是从Debian单一继承而来,使用apt命令安装了“错误”的程序也许会对系统造成破坏。
因为我不是专家,所以放弃了DSL的全面汉化。如果有谁知道哪儿有汉化成功新版本DSL的信息,请提示一下。谢谢。

(后注:在DSL支持中文显示看到有人在U盘基本成功的汉化了DSL-3.3,我在硬盘上安装的DSL-3.4.4却没有成功,不知哪步弄错了,或者上文DSL + xfont-intl-chinese + FCITX 定制成功!(已加入文泉驿字体)的方法不适合硬盘安装?)

DSL的安装比较容易,可以参考一下我的网摘:安装Damn Small Linux相关问题、linux网站收藏及mlterm配置(links for 2007-10-21)。我的安装经历如下,由于没有及时记录,具体细节忘了:
先刻录成750M的那种普通光盘,启动失败,可能是刻录时的问题;
然后,把DSL安装到U盘上,我用的方法好像是Installing to a USB Flash Drive - DSL Wiki的这个方法:Convert .iso to USB installation,即直接把下载下来的.iso镜像文件转换到U盘里。其间还参考了文中提到的另一篇制作U盘版的linux的文章:Scientific Linux Live CD and DVD - Diskless Client - SL/RHEL
由于我的另一台机器也比较老(赛扬1G),不能支持从U盘直接启动,于是,按照Boot Floppies - DSL Wiki的方法,用bootfloppy-usb.img文件做了一个从USB启动的软盘引导盘,用这个软盘引导U盘启动就OK了。同样,如果你的系统不能从光盘直接启动,也可以制作相应的引导软盘来从光盘启动。我把制作的U盘版DSL在其它支持从U盘直接启动的机器上试了一下没有问题。

把DSL安装到硬盘上,可以参考这篇文章:Installing to the Hard Disk - DSL Wiki,我的大概步骤是:

1)、事先用fdisk为DSL准备了一个64M的swap(/swap)分区和一个236M的根(/)分区(上面DSL Wiki上说至少要128M的swap空间,可我发现自己的486DX100+24M内存的机器从来没有使用过超过64M的swap分区,就只分了64M给swap分区) ;

2)、启动在U盘里的DSL;

3)、使用swap分区:

mkswap /dev/hda1
swapon /dev/hda1

4)、执行硬盘安装命令

dsl-hdinstall

以上操作需要root权限,在默认就有的dsl用户下sudo就可以了。系统菜单里也有安装到硬盘的选项,我没试过。还有,安装到硬盘的步骤是把486上的硬盘拆下来装在另一台机器上进行的。

另外,我估计由于DSL是便携型Linux的原因,它的保存系统个人设置的方式有点特别,详情参见:Saving Your SettingsSaving your configuration。我只是在保存网络设置时用到了这方面的知识,还参考了这篇帖子:iB::Topic::Not-DHCP booting。大概就是在opt/bootlocal.sh添加你自己的启动脚本,如:不能自动识别的网卡的modprobe,网卡设置(用系统菜单中的网卡设置程序也是在/opt目录下的eth0.sh和bootlocal.sh之类的文件中操作的),iptables加载等等。我可能会在后续的有关linux网络设置的日记中详细介绍。

所以,总的说来,我感觉DSL可以用于其它系统的维护(但我用U盘里的DSL启动SATA硬盘的系统,不能识别SATA硬盘,可能启动时需要输入额外的参数,没有进一步证实),在控制台下作一下处理(把其它系统用的gpm, zhcon, w3m相关文件移植到系统中,或者用其它什么的方式安装)也可以作中文的应用(我基本上就是在控制台下用这台486电脑的,比如,我博客上的许多日记都是在这台486上的linux的控制台中文环境下写的)。

当然,我对DSL只是大概一周时间的浅尝则止,以上文字出现错误也很有可能,希望见者知者能提示一二,我会随时修正补充。谢谢。

为486上的Linux编译一个2.4.35.3的内核

在实现为我的486装一个可用的linux with X Windows的目标中,为了让486机器运行得更快一点,加之Redhat linux 9.0原来自带的2.4.20-8的内核竟然不能驱动我的另一块ISA Express 16位网卡。所以决定为它定制一个内核。

因为我原来曾试过在redhat linux9.0上升级到2.6的内核,没有成功,而且看到网上的文章Linux 2.4->2.6内核升级指南(转帖),觉得太麻烦,以够用就行的原则,就没继续尝试。这次使用了定制的内核后,使启动后内存占用少了近2M,系统速度有明显的加快。下面是一些相关的心得。

1、为了让系统支持Framebuffer,把“Code maturity level options”中的“prompt for development and/or incomplete code/drivers”编译进核心(选择Y),否则后面“Framebuffer”支持的选项是灰化的。即在内核编译配置文件.config中这一项是这样的:

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y

2、Processor type and features,选的是486,即在内核编译配置文件.config的选项是这样的:

# Processor type and features
#
# CONFIG_M386 is not set
CONFIG_M486=y

3、由于486处理器没有TSC计数器,所以有关TSC的选项一定要选为禁止。具体作法就是:[*] Unsynced TSC support(选为Y)。否则机器会无法启动,报告”这是为Pentium+编译的内核”之类的错误信息: "Kernel panic: Kernel compiled for Pentium+, requires TSC feature!"。即在内核编译配置文件.config中有关项是这样的:

# CONFIG_M586TSC is not set
...
# CONFIG_X86_TSC is not set
...
CONFIG_X86_TSC_DISABLE=y

这个问题还让我耽误了不短的时间,从Erik Mouw: "2.4.26 doesn't boot on a 386 without "Unsynced TSC support""处得到提示,从而解决这个问题。

4、把Character Devices中的Enhanced RealTime Clock选为Y(大概是这样的,好像选成M也行),否则会出现“could not locate char-major-10-135”的问题。

5、把486主板没有的PCI, AGP, SCSI, USB之类的东西统统去掉;

6、选项486的sound blaster兼容ISA声卡,要先把OSS SOUND的选项打开才能看见。即:

#
# Sound
#
CONFIG_SOUND=y
...
CONFIG_SOUND_OSS=m
...
CONFIG_SOUND_SB=m

7、选择10M的ISA网卡,首先在前要开启网络设置的选项,然后要先选择ISA网卡的选项,才能选择下面的具体ISA网卡型号,如下的配置文件内容:

CONFIG_NET=y
...
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
...
CONFIG_NET_ISA=y
...
CONFIG_EEXPRESS=m
...
CONFIG_NE2000=m

8、为了能为另一台机器提供nat共享上网,查了一下资料, 使Networking options中的相应选项“CONFIG_PACKET=y”和“CONFIG_NETFILTER=y”等。
我的具体作法大概是(也许记错了一些项目):
[*] Network packet filtering (replaces ipchains)
[*] Network packet filtering debugging (NEW)
即上面两项选为Y。
然后后面的“IP: Netfilter Configuration ---> ”下面除了最后面老版本内核里使用的两个项目不选,其它选项包括选项里面任一层次的子项全部编译为模块(即选为M)。最后面老版本内核里使用的两个项目如下:
ipchains (2.2-style) support (NEW)
ipfwadm (2.0-style) support (NEW)
,这两项不选。
关于Networking options内核编译中原来默认了的其它那些选项我没动。

9、一个小失误,造成挂载windows分区无法指定字符集(即mount /dev/hdb1 -o iocharset=gb2312,codepage=936之类的选项会出错),我想应该是内核编译时“Native Language Support”(本地语言支持)的选项没选上相应的语言,在.config配置文件的内容大概如下:

#
# Native Language Support
#
CONFIG_NLS_DEFAULT="iso8859-1"
...
# CONFIG_NLS_CODEPAGE_936 is not set

我想,如果配置了内核中的本地语言的“codepage 936”的支持,即上面的“CONFIG_NLS_CODEPAGE_936=Y(或M)”,上面的错误就不会出现了。

还有,也许正是没有在内核编译时配置这个NLS,启动系统后用/sbin/lsmod查看,原来的系统(自带的2.4.20-8内核)中自动加载了nls_iso8859-1和nsl_cp437两个模块,而我编译后的系统(2.4.35.3内核)却没有加载这两个模块。

有关这个codepage相关的知识见:CodePage简介(转)

另外,控制台下的zhcon原来可以正常使用,而在新内核下的系统中,只有root用户可以正常使用,一般的用户可以输入汉字,但不能用CTRL+SPACE切换输入法,也不能用CTRL+ALT+H调出帮助菜单,一般 的用户必须先用root用户登录开启zhcon后再切换到一般用户才能完全正常使用。但还没有证实zhcon出现的异常是否跟NLS的内核编译有关。或许是其它什么相关的内核编译选项弄错了。而且, 这个问题我以前在ubuntu6.0.6+AMDK6-2的机器上碰到过, 到现在也没有找到原因。在ubuntu上并没有重新编译内核。详见: [问题]非root用户不能切换zhcon的输入法,也不能用ctrl+alt+h

总之,由于机器太老,内存太少,这次的内核编译是能去掉就去掉,能编译成模块的就不编译进核心。最后的内核是814338字节。

但是,按照一些网友的意见,内核没必要时最好不好自己编译,就用发行版自带的。我也感觉应该是这样的,因为发行版的内核是专家精心编译的,它的性能和适用性应该是比较好的。对内核的选项,我想不少选项对不少人都是一知半解的(我就是),如果这样的状态编译出来的内核作为正式的作业系统肯定是不保险的。正如一位网友的看法:自己编译内核,玩玩还可以。所以,上面的文字仅供参考! 如果上面的文字有任何错漏之处还望指点一二,谢谢。