DeLi Linux 0.8 中文环境配置

这是DeLi Linux 系列日记的第5篇,上一篇是:DeLi Linux 0.8 软件安装。这也是这个系列日记的最后一篇。

在这篇日记里,主要介绍怎么样在 DeLi Linux 0.8 上配置一个好用的中文使用环境,包括控制台和X Window 中文使用环境。控制台环境主要介绍:Zhcon中文控制台环境(输入法)Screen(全屏窗口管理器), W3m浏览器, Vim文本编辑器的安装及使用;X Window 环境主要介绍: Fcitx输入法, Firefox1.5浏览器, Dillo2浏览器及中文字体(如文泉驿)的安装及使用。

因为需要从源码编译安装,所以先安装开发包,用: pacman -S devel 命令安装全套开发包。如果你的硬盘空间比较紧张,好像只安装一个binutils也行,你可以试试: pacman -S binutils 。

如果你使用中文,并且需要让一台非常古老的机器(如486)重新恢复活力,控制台环境是一个理想的选择。你用486 + Linux 机器可以做些什么呢?请参见我的一篇日记:呵呵,微软也开始打windows广告了,百度广告;我和linux。先介绍控制台环境。

1、Zhcon 中文控制台环境(有五笔和拼音等多种输入法)
DeLi Linux 0.8 已经默认包含了 Zhcon,登录控制台后,输入“ zhcon ”命令即能启动。不过,我曾经在一台486机器上执行zhcon失败,手工编译后能够成功执行。你如果遇到这种情况,请在这里下载并重新编译zhcon。一点需要注意的地方是,在执行“ ./configure ”之前,先执行“ export CXXFLAGS="$CXXFLAGS -liconv -lintl" ”,否则你将通不过编译。参见:Need help, I can't get a chinese console under DeLi Linux 0.7.90。关于zhcon的使用,请用“ CTRL+ALT+H ”调出它的帮助菜单。
这里要注意的是,在DeLi Linux 0.8里安装的zhcon必须使用root帐号登录才能启动,然后你可以执行“ screen ”在一个控制台开启多个虚拟的终端(这样你用不着再登录一个控制台以执行多个程序),然后从root帐号执行“ su 你的普通用户名 ”来执行普通用户操作。另外, DeLi Linux 0.8 的zhcon下面的鼠标不能工作,我到现在也不知道原因。

2、 Vim 文本编辑器
DeLi Linux 0.8 自带的vi 是e3vi,对中文的支持可能不太好。它自带的nano编译器在zhcon的utf8环境下也可以很好输入中文(用 zhcon --utf 命令启动zhcon),但是w3m浏览器在zhcon的utf8环境下工作有点问题,不知道是zhcon的问题还是w3m的问题。我在控制台下面是把在 DeLi Linux 0.7.2 里带的vim-7.1用日记“用DeLi Linux 0.8 软件安装”里使用的方法移植到DeLi Linux 0.8里,下载地址: http://www.delilinux.de/packages/deli/ap/vim-7.1-i386-1.tgz 。然后,在你的家目录(如你的用户名是 delier,那么就是/home/delier 下面)下面建一个 .vimrc文件,这里是一个我在网上抄的支持中文的.vimrc文件,你可以试一下:

set encoding=gb2312
syn on
set guifont=Luxi\ Mono\ 11
set tabstop=4
set shiftwidth=2
set autoindent
set backspace=2
set smartindent
set ai!
set nu!
set showmatch
set ruler
set incsearch
set vb t_vb=

2、W3m 浏览器
在DeLi Linux 里没有自带 W3m 浏览器,所以需要自己从源码编译安装。使用w3m需要先编译安装gc,我试了一下,好像是新版的(如:6.8)在DeLi Linux上不能使用,gc6.2的可以使用。在 http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/ 处下载gc6.2并用默认的选项编译安装。
然后在 http://prdownloads.sourceforge.net/w3m/ 处下载w3m-0.5.2。在编译 w3m 之前,先设置环境变量:
export LD_LIBRARY_PATH="/usr/lib:/usr/local/lib"
否则你可能不能编译成功。
用默认选项编译安装w3m后,在/lib中加了一个libgc.so.1到/usr/local/lib/libgc.so.1.0.2的符号链接:
ln -s /usr/local/lib/libgc.so.1.0.2 /lib/libgc.so.1
这样w3m浏览器就安装成功了。
下面简单介绍一下在deli linux 0.8控制台下使用w3m的几个注意点。
先在/usr/bin下面建立一个w3m的软链接: ln -s /usr/local/bin/w3m /usr/bin/w3m ,否则你在root帐户下面用“ su ”命令切换到普通用户下面执行w3m就会找不到命令。
用“ w3m http://www.yoururl.com ”打开网址,U 键输入你要到的网址。 H 键调出帮助菜单。
O 键调出设置菜单,然后进行一下必要的设置。注意,每一节设置完成后都需按下面的“OK”确定。“Display Settings”的“Render frames automatically”请选“YES”,以支持框架网页;“External Program Settings”的“Editor”请改为“/usr/bin/vim”,以使用我们前面移植安装的vim作为编辑器;“Cookie Settings”里的“Enable cookie processing”和“Accept cookies”选择“YES”,以默认接受所有网站的cookie,否则你可能不能登录一些网站,如果不接受特点网站的cookie请在“Domains to reject cookies from”添加相应域名,W3m的Cookie设置我也不是非常明白,所以仅供参考;然后比较重要的是“Charset Settings”一节的设置(我也是摸索出来的,仅供参考),先将“System charset follows locale(LC_CTYPE)”设为“NO”,查看简体中文网站把“Display charset”设为“Chinese (EUC-CN, GB2312) ”,查看繁体中文将“Display charset”设为“Chinese Taiwan (Big5, CP950) ”并在设置完成后按“CTRL+F3”将zhcon的环境切换为繁体中文;如果在 X Window 的xterm中使用w3m,需要把“Display charset”设为“Unicode (UTF-8) ”。

另外,在控制台环境下可以用mutt + esmtp + fetchmail + procmail 的组合进行电子邮件的收发,详细设置参见:用 MUTT 收发电子邮件(更正版);用mp3blaster听mp3等等(mutt和mp3blaster我没有在DeLi Linux 0.8上试过)。

下面介绍一下DeLi Linux 0.8 X Window 中文使用环境的配置
(部分内容摘自DeLi Linux 的wiki 页: 国际化和本地语言支持

1、语言环境设置:
当用 ”delisetup” 设置的时候选择 “zh_CN.UTF-8”,在文件”/etc/profile”的后面应该有像下面这样的两行:

export LANG='zh_CN.UTF-8'
unicode_start

如果你喜欢英文的程序菜单和桌面,也可以把“ zh_CN.UTF-8 ”改为“ en_US.UTF-8 ”,后面介绍的fcitx同样可以在英文环境下使用,但是必须要有中文字体。

2、添加一个好看的中文字体

拷贝一个 *.ttf 中文字体到一个字体目录,例如:一个文泉驿字体: ”/usr/share/fonts/wenquanyi/wqy-zenhei/wqy-zenhei.ttf”。然后以 root 用户和非 root 用户和身份执行 ” fc-cache -fv ”。
同样的方法拷贝一个中文点阵字体到上面的字体目录(因为我后面介绍的从DeLi Linux 0.7.2移植来的firefox1.5 因没有编译xft字体支持需要点阵字体才能很好的显示中文字体),我这里选择文泉驿的文泉驿点阵宋体,是把Ubuntu下安装的这个点阵字体目录wqy-bitmapfont拷贝到“ /usr/share/fonts/wenquanyi/ ”下面。为了让firefox1.5能够使用这个点阵字体,需要在/etc/X11/xorg.conf中添加如下内容:

Section "Files"
FontPath "/usr/share/fonts/wenquanyi/wqy-bitmapfont"
EndSection

3、安装一个中文输入法

例如,一个小巧快速的中文输入法软件”fcitx“,你自己编译它,或者直接用下面的命令安装一个现成的二进制包:

pacman -U http://39file.googlepages.com/fcitx-3.1-1.pkg.tar.gz

或者,你可以用命令”makepkg -c“编译一个fcitx的pacman包,我从archlinux那里借用了一下”PKGBUILD”脚本: http://repos.archlinux.org/viewvc.cgi/fcitx/repos/extra-i686/PKGBUILD?revision=356&view=markup 。 我注释掉了这行:”arch=(”i686” “x86_64”)”和这行”depends=(’libxft’ ‘libxpm’)”。

然后,在 ”~/.xinitrc” 的最后一行之前添加几行,这个文件的最后部分正像这样:

# start some nice programs

export XMODIFIERS="@im=fcitx"
export XIM=fcitx
export XIM_PROGRAM=fcitx
fcitx&
exec icewm-session

用这种方法,当执行”startx”时,”fcitx”中文输入法将自动启动。
另外,如果你使用的是语言环境是前面设置的“ export LANG='en_US.UTF-8' ”,那么,需要在 ~/.xinitrc 里面启动fcitx之前添加一行(如在export XMODIFIERS="@im=fcitx" 前面): export LC_CTYPE="zh_CN.UTF-8"

另外,我发现,尽管是用fcitx中文输入法,在我的赛扬400的机器上在 X Window 下面输入中文仍不是非常流畅(如刚用CTRL+Space切换输入法开始输入汉字时就有明显的延迟)。我曾经尝试在 DeLi Linux 0.8 上安装Xcin + Crxvt,Chinput 等输入法(输入环境),但是没有成功。所以,如果你没有解决 X Window 下面输入法的问题,你的电脑特别古老,但是你需要大量的输入文字,那么,建议你把控制台下面的中文输入环境配置好,你一定可以体会到运指如飞的感觉(我原来在486机器上写博客就是这样的。不过,我的486机器现在暂时退居二线了 🙂 )。实际上,前面介绍的zhcon中文控制台环境你简单学习一下就应该可以用了。

4、改变 GTK 程序的字体大小

在 GTK 程序里字体有点小(如菜单的)。创建一个文件”~/.gtkrc-2.0”,这里是一个示例文件,它使用12号大的“文泉驿正黑体”作为这些 GTK 程序的默认字体:

style "gtk-default-zh-cn" {
font_name = "wenquanyi zen hei 12"
}
class "GtkWidget" style "gtk-default-zh-cn"

5、改变 icewm 的字体大小

“icewm” 的字体也有一点小。把”/usr/share/icewm/preferences”拷贝到”~/.icewm/”里面,取消字体设置行的注释,例如,取消”# MenuFontNameXft=”sans-serif:size=10:bold” ”这行的注释,并把大小改成“12”,像这样” MenuFontNameXft=”sans-serif:size=12:bold” ”,这将使icewm菜单的字体大一点。

6、安装中文支持好的网页浏览器

DeLi 0.8 带的网页浏览器 netsurf 可以显示简单的网页(包括中文网页),但是,不能用“fcitx”中文输入法在它的输入框中输入中文。Skipstone几乎是一个全功能的网页浏览器并有好的中文支持。首先,执行 “su” 变成root用户,然后执行 “pacman -S skipstone” 安装 skipstone 网页浏览器。
不过,对于老旧电脑来说,skipstone浏览器仍然显得太笨重了。我简单测试了一下几个浏览器的内存占用情况,用命令 " pmap `pidof program name`|tail -1 " 得到的数据如下:

打开 http://www.google.com/
dillo-i18n-0.8.6 27516K
dillo2 26616K
firefox-1.5 29656K

打开 http://www.learndiary.com/
dillo-i18n-0.8.6 31516K
dillo2 28240K
firefox-1.5 36388K
skipstone1.0.0 51768K

所以,我下面介绍一下如何把 DeLi Linux 0.7.2下面的firefox1.5移植到DeLi Linux 0.8里,用的方法请参见:DeLi Linux 0.8 软件安装里有关“移植 deli0.7.2 中的 firefox 1.5 的一些注意事项”。因为DeLi Linux 0.7.2 里面的firefox1.5没有编译加入xft字体支持,所以浏览中文网页字体不太好看,甚至个别字显示不出来。我解决这个问题是使用中文点阵字体(如:wenquanyi bitmap 字体)。前面介绍字体安装时已经安装了文泉驿的点阵宋体字。你在firefox的“Edit”->“Preferences”->“Content”把中文字体和“Other Languages”都设置为“wenquanyi-wenquanyi bitmap song-iso10646-1”。然后你就可以使用漂亮的文泉驿点阵宋体字了 🙂 。
我发现在 DeLi Linux 0.7.2现在的软件仓库里的firefox1.5我不能使用,要在DeLi Linux 0.7.2 的 Big ISO 文件里的才行。如果你遇到类似的情况而又不能得到老的 DeLi Linux 0.7.2 光盘ISO,可以在这里下载我传到google论坛的firefox-1.5.0.12-i386-1.tgz(来自DeLi Linux 0.7.2的Big ISO 文件)。

如果你只是浏览一下图片和文字,快速的Dillo浏览器绝对让你使用老旧电脑上网也有飞一般的感觉。Dillo2在2008年10月释出,采用FLTK图形库,应该比原来的Dillo0.8.x 更快,资源更省。你可以在它的主页下载最新的dillo2.0源码和在这里下载它需要的FLTK v2.0.x-r6483(dillo2.0推荐的版本)图形库。按照说明,分别以默认方式编译安装。在终端输入dillo就可以浏览网页。把/usr/local/etc/dillorc拷贝到 ~/.dillo 目录下,修改其中的vw_fontname和fw_fontname为中文字体就可以显示中文了。在这里得到 Dillo2 的使用帮助。

7、一些技巧

使 xterm 能够显示中文

Xterm 的默认字体不能完全显示中文。按住“CTRL”键,不要松开,用鼠标在xterm窗口上单击右键,它将显示一个弹出菜单,也不要松开鼠标右键,向下移动鼠标的箭头选择“Large”,松开 “CTRL”键和鼠标右键。现在它可以完全显示中文了。 另外,在 xterm 后面加一个 “ -fa xx ”也可以完美的显示输入中文(如执行: xterm -fa w ),那个 -fa 后面应该是字体的名字,不过,我在 DeLi Linux 0.8 试了一下不管输入什么都可以起作用,但是却不能指定特定的中文字体,我也不知道原因 🙁 。

Abiword 显示和输入中文

默认情况下,Abiword 不能显示中文,在你打开一个中文文本文件后,按 CTRL+A 全选所有文字,然后选择一个中文字体,中文文本将被正确显示。

在你输入中文之前,先选择一个中文字体。

在 Gnumeric 上激活中文输入法

左键单击公式输入框,按 CTRL+SPACE,可以激活fcitx的中文输入法。

一些 X 程序启动慢
如 xterm, xcalc, xfontsel 等程序,启动时特别慢,同时cpu占用几乎100%,受在Ubuntu上安装wine的启发得到解决方法,执行: sudo sed -i -e '/GBK/,/^}/d' /usr/share/X11/locale/zh_CN.UTF-8/XLC_LOCALE 就行了。实际上就是删除了其中的GBK字体内容。不过,如果你按前面的方法安装了文泉驿点阵宋体后,不执行这一步也不会出现X程序启动慢的问题,原因应该就是文泉驿点阵字体包括了GBK字体。

好了,DeLi Linux 中文环境的设置就介绍到这里,以后如果有什么心得或教训我会补充的。DeLi 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字节。

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

为我的486装一个可用的linux with X Windows之总结

从我在饭否上发一则我的近期目标:为我的486装一个可用的linux with X Windows的前几天Minix3 FAQ 和中英文安装手册(links for 2007-10-11),到现在大概3周时间了。以满足应用为主、学习知识为辅,已经基本上达成了这个目标,这个事情也基本上应该结束了,在这里记一下这3周时间的心得和总结。供自己备忘和朋友参考。

原来这台486DX100+24M内存+4G硬盘的古董机器装了redhat linux9.0 without X和盗版windows97双系统,后者主要是来看html格式的电子书,其它没有什么用(也根本用不了,如上网,在windows97上用这台机器上网会把没有耐性的人急病的)。详细情况见我的日记:Windows操作系统减肥;难舍我的linux操作系统呵呵,微软也开始打windows广告了,百度广告;我和linux,里面详细讲了这台老机器因为有了linux操作系统而成为我用机器时间最多的机器。

因为我要看html的电子书,而没有X的redhat linux9.0不能完全满足这个要求,所以另外单独装了一个盗版windows97来用。为了能尽量多用正版,也因为切换操作系统的麻烦,我决定 为我的486装一个可用的linux with X Windows。现在,这个事情基本完成了,我把盗版windows97请出了这台老机器,在原来的redhat linux9.0上装了X和opera浏览器,看html的电子书就没有问题了。我还为486上的Linux编译一个2.4.35.3的内核(原来是2.4.20-8,现在是2.4.35.3,因为我原来曾试过在redhat linux9.0上升级到2.6的内核,没有成功,而且看到网上的文章Linux 2.4->2.6内核升级指南(转帖),觉得太麻烦,以够用就行的原则,就没继续尝试),使启动后内存占用少了近2M,系统速度有明显的加快,并且原来不能用的另一块eexpress 16位的ISA网卡能用了,还能和双网卡做一个简单的网关,用linux的iptables做nat,为另一台电脑提供共享上网。

我会在后续日记中详细总结为redhat linux9.0添加X的过程。

为了找到速度快,又满足要求的操作系统,我还试过Minix3,但没有成功,详见初试Minix3操作系统

还试过Damn Small Linux(简称DSL),详情参见我的日记:在486上初试Damn Small Linux ( DSL )。我估计因为这个操作系统已经定制、压缩到了极点(放在U盘上50M,安到硬盘上大概100M),而且还有一套完整的X应用程序!如果仅是作为英文操作系统使用的话,这个操作系统算是我这个机器上的首选了。但是,我试着升级它的中文支持,也参考了一些网上的文章 ,见网摘DSL、Slackware linux相关网摘(links for 2007-10-14),网摘中的DSL版本是1.2.1,那篇文章DSL + xfont-intl-chinese + FCITX 定制成功!(已加入文泉驿字体)至近写于2006年3月;而我用的是3.4.4版,时隔近两年,各方面的情况发生变化,应该是这个原因导致终于没能成功添加它的中文支持。不过,道是增加了控制台的中文支持(用zhcon)。当然,如果我花时间去研究复原文章中的各种操作环境(各dsl的版本,apt源的版本等等),应该是可以的。但我在这个操作系统上花了一周时间了,就没有去尝试了。况且,我有另外的选择,那就是当时已经搞定的Redhat Linux 9.0 with X和传说中的Slackware Linux

初步试了一下slackware(先用的是最新slackware-12.0,下载下来的a系列基本系统用软盘引导没有安装成功,另外下载了slackware-10.2的a系列基本系统用软盘引导安装成功),感觉它的定制比较容易,定制安装后的系统比较干净,启动速度比我机器里的其它几个Linux都快,占用磁盘空间少。

所以,在我的机器上,现在装了3个发行版,如果不删除windows97的话,就4个操作系统。两块硬盘,主盘1.6G,后面有坏道,隐藏不用,实际使用1个G,64M公用Swap分区,234M安装DSL-3.4.4,700M安装Slackware-10.2;从盘大概4个G,700M的Windows FAT分区存放下载下来的slackware安装文件和Linux Grub for Dos引导文件和几个linux的内核文件,1个G的ext2分区备份文件,2.3G安装的是庞然大物Redhat Linux 9.0。

在我的后续日记中,我可能会对上面的3个linux的安装设置分别作一下总结,然后对一些有共性的应用(如网络相关设置,nat网关,构建X的基本步骤)作一下总结,目的是自己备忘和供有类似需要的朋友的参考。

初试Minix3操作系统

前段时间,在显示在自己的博客的google adsense 广告上,看到了Minix3操作系统打的广告,碰巧自己的486电脑需要安装一个支持X Windows的类unix操作系统,于是,就尝试了一下Minix3。

The MINIX 3 Operating System的网站下载了cdrom的iso的压缩文件:IDE-3.1.2a.bz2(296 MB) ,解压后把其中的iso光盘镜像文件刻录到光盘上。打印了一份Minix3中文的安装文档,照着一步一步的把Minix3安装到了硬盘上。

安装后,运行了一下,Minix3除了在系统设计理念上与linux不同(微内核和巨内核),单从使用方面感到有下面几点明显的不同。

1、Minix使用一种boot monitor的启动程序,启动完成后可以输入 boot c0d0p0或 boot c0d1p1这样的形式来进入Minux或启动到其它操作系统。前者表示启动控制器0,驱动器0,分区0的操作系统。一般情况下,这个参数跟系统BIOS的参数是一致的。然后,进入Minix后,输入shutdown命令,会返回到boot monitor界面,而不是像linux那样直接关机。

2、Minix3现在没有磁盘虚拟内存功能,如果您的内存不能满足某个程序的要求,可能就不能正常运行。如,我的486机器24M内存和1M的集成显存,在linux下借助它的swap磁盘虚拟内存技术,可以在X Windows下把opera9运行起来,虽然极慢,但可以用来看电子书。但在Minix3下面,启动X服务都报告“No enough core”之类的信息。我按照Minix 3.1.2 and X - comp.os.minix | Google Groups上的方法用“chmem +100000000 /usr/X11R6/bin/Xorg”之类的命令来调整X使用的内存,但终于没能成功。而且在另一台256M内存、16M显卡的机器上也没能把X启动起来。这导致我实验几天后放弃了在486上用Minix3搭一个可以在X Windows上使用的环境。

3、Minix由于一直是作为教学系统使用的,这导致它的硬件支持极其有限,如网卡就支持8139,ne等少数几种。我在486上的D-Link的ISA网卡在linux下认成ne可以使用。Minix3下好像也认出来了,但是它的网络设置我没有搞懂,虽然按照Minix Tips上这篇文章的说法可以在dhcp不工作的时候用静态IP来解决(Minix with a static IP address)http://www.minixtips.com/2006_06_01_archive.html ,但是我按照上面的方法配置好后,运行时却报告一个大概叫着“daemonize”的命令找不到。这时,我对我用Minix3搭一个可用的X Windows系统已经有点疲倦了,就没有继续尝试了。而Linux经过这么多年的大力发展,可以说对硬件的支持已经相当完善了。设置也比较容易了,资料也多。

所以,最后我放弃了在486下用Minix3下搭一个可用的X Windows的环境的努力。感觉,Minix仍然不是一个实用的系统,虽然,它在从教学系统的基础上开始向实用起步(可以从它的网站的应用领域上知道),但是要能普遍实用,还有太长的路要走。

对了,它的网站说的Minix3的应用领域为:

  • Applications where very high reliability is required
  • Single-chip, small-RAM, low-power, $100 laptops for Third-World children
  • Embedded systems (e.g., cameras, DVD recorders, cell phones)
  • Applications where the GPL is too restrictive (MINIX 3 uses a BSD-type license)
  • Education (e.g., operating systems courses at universities)

虽然,我这个半壶水最终没有能用上Minix3,但还是有人用Minix3用得很欢,如Minix3网站的使用截图,文字编辑、网页浏览、图片等等,还有Minix Tips上的那个家伙,他曾在自己的机器上的虚拟机里安装的Minix3来运行他的网站,上面还有各种在Minix上的使用技巧。有志于在操作系统设计或在Minix下钻研的朋友可以参考一下。