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上的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字节。

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