用镜头记录,用心灵体验 | 订阅本站 | 所有笔记 | 亲和力设计 | 流量

DB2 学习笔记

博客话题:DB2,Linux,Web,业余无线电,户外,摄影,截拳道,Thankpad,其他

January 2008

Gentoo Linux on T43 (12) Java 环境

安装IBM JDK 对于jdk有很多种选择,可以通过emerge -s jdk列出,我的环境以IBM产品为主,因此选择安装ibm jdk,其已经包含在Gentoo官方ebuild中,可以直接emerge,但jdk安装文件因为license 问题没有放入Gentoo mirror,需要自己下载,手工放入Portage,再继续emerge。 ibm jdk 目前最新版本是1.5(也称为 5.0),下面会安装此版本,为了兼容性,jdk 1.4.2 也一并安装,如果愿意,再安装1.3.1 也不是问题,Gentoo 的java...

安装IBM JDK

对于jdk有很多种选择,可以通过emerge -s jdk列出,我的环境以IBM产品为主,因此选择安装ibm jdk,其已经包含在Gentoo官方ebuild中,可以直接emerge,但jdk安装文件因为license 问题没有放入Gentoo mirror,需要自己下载,手工放入Portage,再继续emerge。

ibm jdk 目前最新版本是1.5(也称为 5.0),下面会安装此版本,为了兼容性,jdk 1.4.2 也一并安装,如果愿意,再安装1.3.1 也不是问题,Gentoo 的java 环境控制非常方便。

以上jdk 在IBM Java download 可以找到,页面中包含各个版本,选择32-bit xSeries (Intel compatible)平台,tar/tgz 格式的文件下载。下载时需要登录ibm.com,如果还没有帐户可以免费注册(前段时间IBM 已经将各语言版本的ibm.com 帐户统一)。 

USE flag

USE flag 中加入java 与nsplugin ,没有nsplugin支持,基于浏览器的java applet 无法使用。

jdk 1.5 

直接emerge 会出错:

# emerge -av =ibm-jdk-bin-1.5.0.5a

或者 

# emerge -av ibm-jdk-bin
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild   RF  ] dev-java/ibm-jdk-bin-1.5.0.5a  USE="X alsa nsplugin -doc -examples -javacomm" 61,611 kB 
Total: 1 package (1 reinstall), Size of downloads: 61,611 kB
Fetch Restriction: 1 package (1 unsatisfied)
Would you like to merge these packages? [Yes/No] 
>>> Verifying ebuild Manifests...
>>> Emerging (1 of 1) dev-java/ibm-jdk-bin-1.5.0.5a to /
!!! dev-java/ibm-jdk-bin-1.5.0.5a has fetch restriction turned on.
!!! This probably means that this ebuild's files must be downloaded
!!! manually.  See the comments in the ebuild for more information.
* Due to license restrictions, we cannot redistribute or fetch the distfiles
 * Please visit: http://www.ibm.com/developerworks/java/jdk/linux/download.html
* Under J2SE 5.0, download SR5 for your arch:
* (note that we switched to tgz format because it's now versioned)
 * ibm-java2-sdk-5.0-5.1-linux-i386.tgz
* You can use direct link to your arch download page:
* https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=sdk5&S_PKG=intel5sr5a&S_TACT=105AGX05&S_CMP=JDK
* Place the file(s) in: /usr/portage/distfiles
* Then restart emerge: 'emerge --resume'
* Note: if SR5 is not available at http://www.ibm.com/developerworks/java/jdk/linux/download.html
* it may have been moved to http://www.ibm.com/developerworks/java/jdk/linux/older_download.html. Lately that page
* isn't updated, but the files should still available through the
* direct link to arch download page. If it doesn't work, file a bug.
* Fetch failed for 'dev-java/ibm-jdk-bin-1.5.0.5a'
* Messages for package dev-java/ibm-jdk-bin-1.5.0.5a:
* Fetch failed for 'dev-java/ibm-jdk-bin-1.5.0.5a' 

自己从ibm.com下载,保存为 /usr/portage/distfiles/ibm-java2-sdk-5.0-5.1-linux-i386.tgz,再次执行emerge ,安装成功。

jdk 1.4.2

与jdk 1.5 相同,同样需要自己下载,保存为 /usr/portage/distfiles/IBMJava2-SDK-1.4.2-9.0.tgz,指定版本执行emerge。

# emerge -av =ibm-jdk-bin-1.4.2.9 

java 环境切换

Gentoo Linux 允许不同版本的Java 环境共存,支持对系统和用户级别java 环境的独立控制,提供方便的机制对其进行管理,实现即时切换。有以下2种工具可以利用:

  • java环境配置工具java-config
  • 系统命令eselsect

通过以下命令,可以实现java环境动态切换,任何已存在的session 无需重新登录或者重新执行profile,新的环境设定会即刻生效。

注意:带# 提示符的命令需要在root 权限下执行。

java-config
$ java-config -L
The following VMs are available for generation-2:
1)      IBM JDK 1.4.2.9 [ibm-jdk-bin-1.4]
*)      IBM JDK 1.5.0.5a [ibm-jdk-bin-1.5]
$ java-config -s 1
Now using ibm-jdk-bin-1.4 as your user JVM 
# java-config -S 1
Now using ibm-jdk-bin-1.4 as your generation-2 system JVM 
eselect

eselect 命令也可以做以上工作。

$ eselect java-vm list
Available Java Virtual Machines:
  [1]   ibm-jdk-bin-1.4
  [2]   ibm-jdk-bin-1.5  system-vm user-vm
$ eselect java-vm set user 1 
# eselect java-vm set system 1

延展阅读

(未完)

Posted by Alex at 1:11 AM | Comments (0) | Edit | Taged: gentoo (21), java (1), jdk (1), linux (38)

Gentoo Linux on T43 (11) CPU 频率自动控制

TODO...
TODO

Posted by Alex at 6:12 PM | Comments (0) | Edit

Gentoo Linux on T43 (10) Fingerprint Reader 指纹认证

Thinkpad Integrated Fingerprint Reader 可以使用指纹认证代替用户登录过程中的密码认证,减少用户手工输入密码的机会,在Windows 下使用CSS 软件,配合内置加密芯片,更可以实现指纹认证的文件加解密。 在Gentoo Linux 下整个配置过程比较容易,How to enable the fingerprint reader...

Thinkpad Integrated Fingerprint Reader 可以使用指纹认证代替用户登录过程中的密码认证,减少用户手工输入密码的机会,在Windows 下使用CSS 软件,配合内置加密芯片,更可以实现指纹认证的文件加解密。

在Gentoo Linux 下整个配置过程比较容易,How to enable the fingerprint reader with ThinkFinger - ThinkWiki 提供了非常清晰的描述,请参考文中的Gentoo 部分以及后续步骤。下面仅列出几点Gentoo 用户需要注意的地方。

  • 文件/etc/pam.d/common-auth 在Gentoo Linux 下无法找到,应该使用 /etc/pam.d/system-auth,以下是我修改后的内容。

/etc/pam.d/system-auth

#%PAM-1.0
auth       required     pam_env.so
# Added by alex
auth       sufficient   pam_thinkfinger.so
auth       sufficient   pam_unix.so try_first_pass likeauth nullok
auth       required     pam_deny.so
account    required     pam_unix.so
# This can be used only if you enabled the cracklib USE flag
password   required     pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 try_first_pass retry=3
# This can be used only if you enabled the cracklib USE flag
password   sufficient   pam_unix.so try_first_pass use_authtok nullok md5 shadow
# This can be used only if you enabled the !cracklib USE flag
# password   sufficient pam_unix.so try_first_pass nullok md5 shadow
password   required     pam_deny.so
session    required     pam_limits.so
session    required     pam_unix.so
  • 将uinput 加入/etc/modules.autoload.d/kernel-2.6
# Modules for fingerprint
uinput
  • 将文中的环境变量$USERNAME 替换为$USER 再使用,例如:
# gpasswd -a $USERNAME fingerprint 
  • 若使指纹认证在xscreensaver/gnome-screensaver 中工作,必须按照上文4 xscreensaver/gnome-screensaver 一节进行额外配置。我在以下环境测试成功。
    • gnome-screensaver-2.20.0
    • pam-0.99.9.0

      但需要指出的是,文件/etc/pam.d/gnome-screensaver 并不需要修改,因为其已经通过include 关键字包含文件system-auth。
  • 关于gksu/gksudo 的workaround ,我未进行测试。

延展阅读

Posted by Alex at 5:34 PM | Comments (0) | Edit | Taged: fingerprint reader (1), gentoo (21), linux (38), T43 (14), Thinkpad (21), 指纹 (1)

Gentoo Linux on T43 (9) HDAPS 硬盘动态保护系统

本文参考How to protect the harddisk through APS ,以下内容可直接应用于Gentoo Linux。 Thinkpad HDAPS 依靠笔记本内部的2D 加速度传感器检测笔记本位移, 将数据写入sysfs,系统中有一个demon (守护进程)负责监视这个sysfs...

本文参考How to protect the harddisk through APS ,以下内容可直接应用于Gentoo Linux。

Thinkpad HDAPS 依靠笔记本内部的2D 加速度传感器检测笔记本位移, 将数据写入sysfs,系统中有一个demon (守护进程)负责监视这个sysfs interface,必要时执行硬盘磁头parking 动作。此外,有一个applet,可以在任务托盘实时反映当前的保护状态,这个不是必须的。

在Linux 上完整的HDAPS 包括以下几个部分:

  • hdaps 驱动程序,从硬件传感器读取数据(内核内置此驱动,但不要使用,推荐使用tp_smapi 提供的驱动)。
  • 内核 patch,负责向sysfs 写入数据,需要重新编译内核。
  • hdapsd,demon 程序
  • applet,有多种选择:gnome-hdaps-applet, khdapsmonitor 等,可以不安装,并不影响HDAPS 作用。

下面就以上4个部分分别讨论。

内核Patch 

这一步需要提前来做。

根据自己的内核版本,找到相应的patch 下载另外一个下载地址),我的内核版本是2.6.23:

$ eselect kernel list
Available kernel symlink targets:
  [1]   linux-2.6.20-gentoo-r8
  [2]   linux-2.6.23-gentoo *
  [3]   linux-2.6.23-gentoo-r1

网络上没有找到版本完全符合的patch,但在2.6.23-kamikaze4 中找到了thinkpad-2.6.23-1.patch ,它里面包含了我们需要的protection patch,我将其提取出来,做成 hdaps-protect-2.6.23.patch ,可以单独使用。

用以下命令应用patch,并重新编译内核安装modules 。

# cd /usr/src/linux
# patch -p1 <  ~/hdaps-protect-2.6.23.patch 
# make && make modules_install

重新启动系统之后,会在sysfs 生成文件 /sys/block/xxx/queue/protect,表明patch 成功。

hdaps 驱动程序 

首先要禁止内核中的驱动程序,确保以下内核选项没有被设置,否则,将在不同的路径生成两个同名的module hdaps,load 过程会出错。

$ zcat /proc/config.gz |grep -i hdaps
# CONFIG_SENSORS_HDAPS is not set 

接下来在/etc/make.conf 的USE flag 中加入hdaps 支持,将会被tp_smapi 用到。

/etc/make.conf

USE="hdaps"

tp_smapi 已经被加入Gentoo package list,可以直接emerge,我目前使用0.31 版本。

# emerge -av app-laptop/tp_smapi

载入hdaps 与tp_smapi

# modprobe tp_smapi hdaps 

并将其加入到/etc/modules.autoload.d/kernel-2.6

# Modules for Thinkpad HDAPS
tp_smapi
hdaps

hdapsd

安装demon,直接emerge 即可,我的版本是20060409-r1 。

# emerge -av  app-laptop/hdapsd

编辑hdapsd 配置文件,在DISK 中指定需要保护的硬盘设备名称,作为可选,也可以调整保护动作阈值THRESHOLD ,值越小,保护动作越早,但也会更频繁。

/etc/conf.d/hdapsd

# The name of the disk device that hdapsd should monitor.
# Usually this is 'hda' or 'sda' the primary master.
DISK="sda"
# hdapsd sensitivity 
# The lower the threshold is the earlier 
# the heads are parked when the laptop is shaked
THRESHOLD="15"
# Set any extra options here, like -a for Adaptive mode
OPTIONS="-a"

启动hdaspd 服务

# /etc/init.d/hdapsd start

将hdapsd 设置为跟随系统自动启动 

# rc-update add hdapsd boot 

applet

如果希望监视硬盘保护状态,则需要安装applet 。我使用gnome 环境,因此选择了gnome-hdaps-applet ,但其还未被加入Gentoo 官方package list,需要下载回来自己编译安装。以下是步骤。

下载:

$ cd
$ wget http://www.zen24593.zen.co.uk/hdaps/gnome-hdaps-applet-20060120.tar.gz
$ mkdir gnome-hdaps-applet
$ tar -zxvf gnome-hdaps-applet-20060120.tar.gz -C gnome-hdaps-applet
$ cd gnome-hdaps-applet

编译:

$ gcc $(pkg-config --cflags --libs libpanelapplet-2.0) -o gnome-hdaps-applet gnome-hdaps-applet.c

安装:

# cp gnome-hdaps-applet /usr/bin
# mkdir /usr/share/pixmaps/gnome-hdaps-applet/
# cp *.png /usr/share/pixmaps/gnome-hdaps-applet/
# cp GNOME_HDAPS_StatusApplet.server /usr/lib/bonobo/servers

重启Xwindow,在applet 列表中可以找到新的项目,加入到panel 即可。

Tips

  • 我在hdapsd 中设置的设备名为sda,但我的第二块硬盘sdb(在硬盘托架内)并没有受到保护,我尝试更改配置文件为sdb,保护动作正常,但无法对2个设备同时进行保护,hdaps project 邮件列表有一条关于此的讨论,希望未来会支持多个设备
  • 如果没有安装applet,在那里查看硬盘的保护状态呢?可以用以下命令查看历史状态,也可以使用ctrl + alt + F12 查看实时状态。
$ dmesg |tail
...
scsi_protect_queue(): head parked..
... 
  • 我曾经在kernel-2.6.20-r8 下设置hdaps,但始终无法成功patch 内核,没有sysfs 数据写入,因此,hdapsd服务也无法启动成功。若有相似问题的用户可以尝试升级内核。

下载

延展阅读

(未完)

Posted by Alex at 3:45 PM | Comments (0) | Edit | Taged: gentoo (21), hdaps (1), linux (38), T43 (14), Thinkpad (21)

Gentoo Linux on T43 (8) X300 显卡的驱动以及3D 加速

T43 包括两种显卡方案,一种是915GM 主板集成Intel 显卡 ,另一种是ATI X300 独立显卡 ,我的显卡是X300 ,这里所有的讨论都是与X300 相关。 ATI X300 有2种驱动方案,一种是开源驱动radeon,通过开源R300 项目已经可以支持X300 显卡的3D...

T43 包括两种显卡方案,一种是915GM 主板集成Intel 显卡 ,另一种是ATI X300 独立显卡 ,我的显卡是X300 ,这里所有的讨论都是与X300 相关。

ATI X300 有2种驱动方案,一种是开源驱动radeon,通过开源R300 项目已经可以支持X300 显卡的3D 加速;另一种是ATI 官方的闭源驱动fglrx 。

下面针对这2种方案,分别给出我的配置,涉及到:内核配置、make.conf 、安装软件包、X11 配置、装载module以及OpenGL 设置。

内核配置

请参照 Gentoo Linux on T43 (5) 配置内核(kernel) 显卡一节。

make.conf

在开时编译一些软件包之前,需要在/etc/make.conf  中设置变量:USE 与VIDEO_CARDS 。

开源驱动与官方驱动都需要设定如下USE flag,将其添加到原有USE flag 列表

USE="dri opengl" 

VIDEO_CARDS 中的设定值会被软件包x11-server、x11-drm 等软件包使用,对于开源驱动设定:

VIDEO_CARDS="radeon vesa"

对于官方驱动设定: 

VIDEO_CARDS="fglrx vesa" 

加入vesa 用来对启动过程中的字符界面提供支持。

安装软件包

如果使用开源驱动,emerge:

# emerge -av xorg-x11 xf86-video-ati 

下面的软件包会作为依赖被自动安装

x11-base/xorg-server
x11-drivers/xf86-video-vesa
media-libs/mesa

前面内核配置,如果没有选择内核中的drm,那么此处应该把drm 也安装上:

# emerge -av x11-base/x11-drm 

如果使用官方驱动,emerge:

# emerge -av ati-drivers 

X11 配置

X11 的配置文件位于/etc/X11/xorg.conf ,这里不介绍如何生成一个默认的xorg.conf 文件(相关内容请参考Gentoo 手册),仅给出我的配置,将其合并入你的配置文件即可,以下是针对T43 1400x1050 高分屏以及X300显卡,并开启3D 加速的配置。

开源驱动
Section "Module"
    Load	"dbe"
    SubSection	"extmod"
        Option	"omit xfree86-dga"
    EndSubSection
    Load 	"glx"
    Load 	"dri"
    ...
EndSection
Section "Extensions"
    Option  "Composite" "1"
EndSection
Section "ServerFlags"
    Option      "AIGLX"         "on"
EndSection
Section "Monitor"
    Identifier	"Thinkpad LCD Monitor"
    Option	"dpms"
    DisplaySize	      370	277
EndSection
Section "Device"
    Identifier	"ATI Graphics Mobile X300"
    Driver	"radeon"
    BusID	"PCI:1:0:0"
EndSection
Section "Screen"
    Identifier "High Screen"
    Device     "ATI Graphics Mobile X300"
    Monitor    "Thinkpad LCD Monitor"
    DefaultDepth     24
    SubSection "Display"
        Viewport   0 0
        Depth      24
        Modes      "1400x1050" "1280x1024" "1024x768" "800x600"
    EndSubSection
EndSection
Section "ServerLayout"
    Identifier	"Main Layout"
    Screen	"High Screen"
    ...
EndSection
Section "dri"
    Mode         0666
EndSection 
官方驱动 

将上面的配置进行如下修改即可

...
Section "Extensions"
    Option  "Composite" "0"
EndSection
Section "ServerFlags"
    Option      "AIGLX"         "off"
EndSection
...
Section "Device"
    Identifier	"ATI Graphics Mobile X300"
    Driver	"fglrx"
    BusID	"PCI:1:0:0"
EndSection
...

装载module 

在/etc/modules.autoload.d/kernel-2.6 文件中加入在启动时需要装载的module 名称。

开源驱动 
# Modules for video card & 3D
drm
radeon
官方驱动 
# Modules for video card & 3D
drm
fglrx

可以使用以下命令确认module 是否装载成功,以及查看引用关系(以开源驱动为例)

$ lsmod |grep radeon
radeon                121376  2 
drm                    63380  3 radeon

OpenGL 配置

为系统选择OpenGL 程序。

开源驱动 
# eselect opengl set xorg-x11
官方驱动 
# eselect opengl set ati

延展阅读

(未完)

Posted by Alex at 6:17 PM | Comments (0) | Edit | Taged: 3d (1), gentoo (21), linux (38), T43 (14), Thinkpad (21), x300 (1)

Gentoo Linux on T43 (7) 中文字体

Linux 下字体的配置可以很简单,也可以很复杂,这取决于个人需求的复杂程度,以及对相关知识的了解和技术掌控程度,其差别会导致悬殊的时间成本。在我本人开始这项工作之前,对相关内容了解很少,因此不得不花费时间来了解一些基础性内容。 在这个过程中,一本在线书籍Free/Open Source Software Localization 为我提供了有益的帮助,其整个第七章都是有关字体的内容,介绍了基本的字体概念,字体的分类,以及Linux 如何处理字体 等。 对于中文字体的详细配置,参考了quanliking 的2 篇文章: Linux 字体微调 -...

Linux 下字体的配置可以很简单,也可以很复杂,这取决于个人需求的复杂程度,以及对相关知识的了解和技术掌控程度,其差别会导致悬殊的时间成本。在我本人开始这项工作之前,对相关内容了解很少,因此不得不花费时间来了解一些基础性内容。

在这个过程中,一本在线书籍Free/Open Source Software Localization 为我提供了有益的帮助,其整个第七章都是有关字体的内容,介绍了基本的字体概念字体的分类,以及Linux 如何处理字体 等。

对于中文字体的详细配置,参考了quanliking 的2 篇文章: Linux 字体微调 - windows 效果版Linux 字体微调- Vista 效果版 以及kemean 的字体配置local.conf详解[带Win效果和AA效果]

下面先描述一下字体的安装方法,然后给出我的字体配置,更多的内容可以参考以上的链接。

安装字体

Gentoo Linux有2种主要的字体系统并存:Core X11 font systemxft font system,分别有不同的安装方法。

Core X11 font system

对于Core X11,系统与应用程序的字体一般放在/usr/share/fonts 下面的子目录内,建议把用户自己安装的字体放在/usr/local/share/fonts 下的子目录,并且需要将这些路径加入到Xwindow的配置文件 /etc/X11/xorg.conf。举例:

将新的truetype 类型字体放在/usr/local/share/fonts/TTF 目录,然后执行以下命令(注意顺序):

# mkfontscale  /usr/local/share/fonts/TTF
# mkfontdir /usr/local/share/fonts/TTF

接着编辑/etc/X11/xorg.conf 来让使用Core X11 font system 的X 应用程序知道有新的字体可以利用,添加以下行到文件的Files 与Module Section(其实这个目录默认已经存在,无须添加)。

Section "Files"
    FontPath   "/usr/local/share/fonts/TTF"
    ...
EndSection
重启Xwindow 即可,新的字体将会被识别。 
xft font system

有些X 应用程序使用xft font system ,Gentoo Linux 默认设置了以下环境变量,使gtk+ 2.0 应用程序的字体使用xft,而不是Core X11 font system。

$ cat /etc/env.d/50gtk2
GDK_USE_XFT=1

xft font system 会自动搜索标准的字体路径并发现新字体,无须多余的步骤。如果希望新字体可以立即使用,那么执行命令fc-chache -fv 来即可刷新字体缓存。

对字体的配置可以存放在2个文件当中,其一是系统级别的/etc/fonts/local.conf (没有此文件可以自己建立),其二是用户Home目录下的.fonts.conf,仅影响当前用户。

字体配置

目前Linux 下的中文字体配置主要分为以下几种。

Windows 或Mac 效果 

使用Windows 平台的宋体(SimSun)、新宋体(NSimSun)与黑体(SimHei) ,或者最新vista 系统中的微软雅黑字体(Microsoft YaHei)。另外还有Mac 平台采用的华文黑体(STHeiti),其效果与SimHei 类似,但小字体的效果更出色。这几种字体包含的字符集非常齐全,覆盖了汉字简繁以及日韩字体,因此对繁体以及日韩字体显示效果要求不很高的用户,就没必要再去配置细明体(PMingLiU) 等其它字体。

使用这些字体的方法很简单,将其从Windows 目录复制到Linux 下简单配置即可,但严格来讲,这里面有版权问题,因此,在大多数Linux 发布之中,我们找不到以上字体。

使用免费的开源字体 

在这方面做得比较出色的是文泉驿 字体,目前通过网络协作的方式,已经开发出了点阵宋体、黑体以及等宽三大类字体,并不断升级改善中。

可以直接在Gentoo 中安装其中的点阵宋体和正黑字体:

# emerge -av  media-fonts/wqy-bitmapfont media-fonts/wqy-zenhei
配置文件 

为了对比,我尝试了以上的各种字体配置方案,经过调整后,在T43 高分屏1400x1050分辨率下,效果都不错,其差别仅在个人喜好罢了。因此,我将配置文件整理,如果你安装了以上几种字体,那么简单修改几行,重启Xwindow ,即可更换一种字体。

下面是我的.fonts.conf (整理自quanliking 与kemean 的文章),放在我的HOME 目录,会被/etc/fonts/fonts.conf 自动读取,其优先级低于/etc/fonts/local.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- ~/.font.conf file for user customizations -->
<fontconfig>
<!--
    Breaf:
    Search keyword "editable" for configuation.
    Section:
    1. Fonts family configuration
    2. Fonts substitution
    3. Global configuration
    4. English fonts configuration
    5. CJK fonts configuration
    Installed fonts list:
    STHeiti
    微软雅黑,Microsoft YaHei
    黑体,SimHei
    宋体-18030,SimSun-18030
    宋体,SimSun
    新宋体-18030,SimSun-18030,NSimSun-18030
    新宋体,NSimSun
    WenQuanYi Bitmap Song
    文泉驿正黑,文泉罅正黑,WenQuanYi Zen Hei
    Arial
    Arial Black
    Verdana
    Comic Sans MS
    Georgia
    Times New Roman
    Courier New
    Andale Mono
    Fixed
    Impact
    Trebuchet MS
    Webdings
-->
<!--
*******************************************************************************
    1. Fonts family configuration [Begin]
*******************************************************************************
-->
    <alias>
        <family>serif</family>
        <prefer>
            <!-- @@@ editable -->
            <family>SimSun</family>
        </prefer>
    </alias>
    <alias>
        <family>sans-serif</family>
        <prefer>
            <!-- @@@ editable -->
            <family>Microsoft YaHei</family>
        </prefer>
    </alias>
    <alias>
        <family>monospace</family>
        <prefer>
            <!-- @@@ editable -->
            <family>NSimSun</family>
        </prefer>
    </alias>
<!--
*******************************************************************************
    1. Fonts family configuration [End]
*******************************************************************************
-->
<!--
*******************************************************************************
    2. Fonts substitution [Begin]
*******************************************************************************
-->
<!--
    fonts alias substitution
-->
    <match target="pattern">
        <test name="family">
            <string>宋体</string>
        </test>
        <edit name="family" mode="assign">
            <string>SimSun</string>
        </edit>
    </match>
    <match target="pattern">
        <test name="family">
            <string>新宋体</string>
        </test>
        <edit name="family" mode="assign">
            <string>NSimSun</string>
        </edit>
    </match>
    <match target="pattern">
        <test name="family">
            <string>宋体-18030</string>
        </test>
        <edit name="family" mode="assign">
            <string>SimSun-18030</string>
        </edit>
    </match>
    <match target="pattern">
        <test name="family">
            <string>新宋体-18030</string>
        </test>
        <edit name="family" mode="assign">
            <string>NSimSun-18030</string>
        </edit>
    </match>
    <match target="pattern">
        <test name="family">
            <string>黑体</string>
        </test>
        <edit name="family" mode="assign">
            <string>SimHei</string>
        </edit>
    </match>
    <match target="pattern">
        <test name="family">
            <string>微软雅黑</string>
        </test>
        <edit name="family" mode="assign">
            <string>Microsoft YaHei</string>
        </edit>
    </match>
    <match target="pattern">
        <test name="family">
            <string>文泉驿正黑</string>
        </test>
        <edit name="family" mode="assign">
            <string>WenQuanYi Zen Hei</string>
        </edit>
    </match>
<!--
    not installed fonts substitution
-->
    <match target="pattern">
        <test name="family">
            <string>Times</string>
        </test>
        <edit name="family" mode="assign">
            <string>Times New Roman</string>
        </edit>
    </match>
    <match target="pattern">
        <test name="family">
            <string>Helvetica</string>
        </test>
        <edit name="family" mode="assign">
            <string>Verdana</string>
        </edit>
    </match>
    <match target="pattern">
        <test name="family">
            <string>Courier</string>
        </test>
        <edit name="family" mode="assign">
            <string>Courier New</string>
        </edit>
    </match>
    <match target="pattern" >
        <test name="family" >
            <string>PMingLiU</string>
            <string>MingLiU</string>
            <string>FangSong_GB2312</string>
            <string>KaiTi_GB2312</string>
            <string>AR PL KaitiM GB</string>
            <string>AR PL KaitiM Bit5</string>
            <string>AR PL SungtiL GB</string>
            <string>AR PL Mingti2L Bit5</string>
            <string>AR PL ShanHeiSun Uni</string>
            <string>AR PL ZenKai Uni</string>
            <string>Bitstream Vera Serif</string>
            <string>Bitstream Vera Sans</string>
            <string>Bitstream Vera Sans Mono</string>
            <string>DejaVu Sans</string>
            <string>DejaVu Sans Mono</string>
            <string>DejaVu Serif</string>
            <string>MS 明朝</string>
            <string>MS ゴシック</string>
            <string>Kochi Mincho</string>
            <string>Kochi Gothic</string>
            <string>Baekmuk Batang</string>
            <string>Baekmuk Dotum</string>
            <string>Baekmuk Gulim</string>
            <string>Baekmuk Headline</string>
        </test>
        <edit name="family" mode="assign" >
            <string>san-serif</string>
        </edit>
    </match>
<!--
    english portion substitution
-->
    <match target="pattern" >
        <test name="family" >
            <string>serif</string>
        </test>
        <edit name="family" mode="prepend" binding="strong" >
            <!-- @@@ editable -->
            <string>Georgia</string>
        </edit>
    </match>
    <match target="pattern" >
        <test name="family" >
            <string>sans-serif</string>
        </test>
        <edit name="family" mode="prepend" binding="strong" >
            <!-- @@@ editable -->
            <string>Verdana</string>
        </edit>
    </match>
    <match target="pattern" >
        <test name="family" >
            <string>monospace</string>
        </test>
        <edit name="family" mode="prepend" binding="strong" >
            <!-- @@@ editable -->
            <string>Courier New</string>
        </edit>
    </match>
<!--
*******************************************************************************
    2. Fonts substitution [End]
*******************************************************************************
-->
<!--
*******************************************************************************
    3. Global configuration [Begin]
*******************************************************************************
-->
<!--
    target dots per inch, change dpi to 96
-->
    <match target="pattern" >
        <edit name="dpi" mode="assign" >
            <double>96</double>
        </edit>
    </match>
<!--
    enable sub-pixel rendering.
    if you are using CRT, set rgb -> none
-->
    <match target="font">
        <edit name="rgba" mode="assign">
            <const>none</const>
        </edit>
    </match>
<!--
    default Fonts setting
    here autohint = ture / hinting = false is for free fonts in your system
    we will use autohint = false / hinting = true for MS core fonts
-->
    <match target="font" >
        <edit name="antialias" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="hintstyle" mode="assign" >
            <const>hintfull</const>
        </edit>
    </match>
<!--
    font size settings:
    set the apposite font size,so it is easy to be read
-->
    <match target="pattern" >
        <test name="pixelsize" compare="more_eq" >
            <double>8</double>
        </test>
        <test name="pixelsize" compare="less_eq" >
            <double>12</double>
        </test>
        <edit name="pixelsize" mode="assign" >
            <double>12</double>
        </edit>
    </match>
<!--
    synthetic emboldening for fonts that do not have bold face available
-->
    <match target="font">
        <!-- check to see if the font is just regular -->
        <test name="weight" compare="less_eq">
            <int>100</int>
        </test>
        <!-- check to see if the pattern requests bold -->
        <test target="pattern" name="weight" compare="more_eq">
            <int>180</int>
        </test>
        <!-- set the embolden flag -->
        <edit name="embolden" mode="assign">
            <bool>true</bool>
        </edit>
    </match>
<!--
*******************************************************************************
    3. Global configuration [End]
*******************************************************************************
-->
<!--
*******************************************************************************
    4. English fonts configuration [Begin]
*******************************************************************************
-->
<!--
    default : smoothed and hinted
-->
    <match target="font" >
        <test name="foundry" qual="any" >
            <string>monotype</string>
            <string>microsoft</string>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="hintstyle" mode="assign" >
            <const>hintfull</const>
        </edit>
    </match>
<!--
    for point size less equal than 6 : only smoothed
-->
    <match target="font" >
        <test name="foundry" qual="any" >
            <string>monotype</string>
            <string>microsoft</string>
        </test>
        <test name="size" compare="less_eq" >
            <double>6</double>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>false</bool>
        </edit>
    </match>
<!--
    Arial Regular
-->
    <match target="font" >
        <test name="family" >
            <string>Arial</string>
        </test>
        <test name="weight" compare="eq">
            <const>regular</const>
        </test>
        <test name="slant" compare="eq" >
            <const>roman</const>
        </test>
        <test name="size" compare="more_eq" >
            <double>7</double>
        </test>
        <test name="size" compare="less_eq" >
            <double>13</double>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="hintstyle" mode="assign" >
            <const>hintfull</const>
        </edit>
    </match>
<!--
    Times New Roman Bold Italic
-->
    <match target="font" >
        <test name="family" >
            <string>Times New Roman</string>
        </test>
        <test name="weight" compare="eq">
            <const>bold</const>
        </test>
        <test name="slant" compare="eq" >
            <const>italic</const>
        </test>
        <test name="size" compare="more_eq" >
            <double>7</double>
        </test>
        <test name="size" compare="less_eq" >
            <double>13</double>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="hintstyle" mode="assign" >
            <const>hintfull</const>
        </edit>
    </match>
<!--
    Courier New:
    both enable autohint and hinting looks very well.
-->
   <match target="font" >
      <test name="family" >
         <string>Courier New</string>
      </test>
      <edit name="antialias" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="autohint" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="hinting" mode="assign" >
         <bool>true</bool>
      </edit>
      <edit name="hintstyle" mode="assign" >
         <const>hintfull</const>
      </edit>
   </match>
<!--
    Courier New font size
-->
   <match target="font" >
      <test name="family" >
         <string>Courier New</string>
      </test>
      <test name="pixelsize" compare="less_eq" >
         <double>14.7</double>
      </test>
      <edit name="pixelsize" mode="assign" >
         <double>14.7</double>
      </edit>
   </match>
<!--
*******************************************************************************
    4. English fonts configuration [End]
*******************************************************************************
-->
<!--
*******************************************************************************
    5. CJK fonts configuration [Begin]
*******************************************************************************
-->
<!--
    the dual-width Asian fonts (spacing=dual) are not rendered correctly,
    apparently FreeType forces all widths to match. Trying to disable the
    width forcing code by setting globaladvance=false alone doesnot  help.
    as a brute force workaround, also set spacing=proportional, i.e. handle
    them as proportional fonts:
-->
    <match target="font" >
        <test target="pattern" name="lang" compare="contains" >
            <string>zh</string>
            <string>ja</string>
            <string>ko</string>
        </test>
        <test name="spacing" compare="eq">
            <const>dual</const>
        </test>
        <edit name="spacing" mode="assign" >
            <const>proportional</const>
        </edit>
        <edit name="globaladvance" mode="assign" >
            <bool>false</bool>
        </edit>
    </match>
<!--
    adjusting
-->
    <match target="font" >
        <test qual="any" name="family" compare="eq" >
            <!-- installed fonts -->
            <!--
            <string>STHeiti</string>
            -->
            <string>Microsoft YaHei</string>
            <string>SimHei</string>
            <string>SimSun</string>
            <string>NSimSun</string>
            <string>SimSun-18030</string>
            <string>NSimSun-18030</string>
            <string>WenQuanYi Bitmap Song</string>
            <string>WenQuanYi Zen Hei</string>
        </test>
        <edit name="rgba" mode="assign">
            <const>none</const>
        </edit>
        <edit name="antialias" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="autohint" mode="assign" >
            <bool>false</bool>
        </edit>
        <edit name="hinting" mode="assign" >
            <bool>true</bool>
        </edit>
        <edit name="hintstyle" mode="assign" >
            <const>hintfull</const>
        </edit>
        <edit name="embeddedbitmap" mode="assign" >
            <bool>true</bool>
        </edit>
    </match>
<!--
    enable embedded bitmap fonts
    non-bitmap:
       STHeiti: sthei.ttf 13563000 bytes
       Microsoft YaHei: msyh.ttf 15043584 bytes
       SimHei: simhei.ttf 10044356 bytes
    with bitmap:
       SimSun/NSimSun: simsun.ttf 10500792 bytes
       SimSun-18030/NSimSun-18030: simsun-18030.ttf 12642204
       WenQuanYi Zen Hei: wqy-zenhei.ttf 12844372 bytes
    checked by Linux tool: fontforge
-->
    <match target="font" >
        <test qual="any" name="family" compare="eq" >
            <string>SimSun</string>
            <string>NSimSun</string>
            <string>SimSun-18030</string>
            <string>NSimSun-18030</string>
        </test>
        <test name="pixelsize" compare="eq" >
            <double>12</double>
            <double>13</double>
            <double>14</double>
            <double>15</double>
            <double>16</double>
            <double>18</double>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>false</bool>
        </edit>
    </match>
    <match target="font" >
        <test qual="any" name="family" compare="eq" >
            <string>WenQuanYi Bitmap Song</string>
        </test>
        <test name="pixelsize" compare="more_eq" >
            <double>9</double>
        </test>
        <test name="pixelsize" compare="less_eq" >
            <double>12</double>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>false</bool>
        </edit>
    </match>
    <match target="font" >
        <test qual="any" name="family" compare="eq" >
            <string>WenQuanYi Zen Hei</string>
        </test>
        <test name="pixelsize" compare="eq" >
            <double>12</double>
            <double>13</double>
            <double>15</double>
            <double>16</double>
        </test>
        <edit name="antialias" mode="assign" >
            <bool>false</bool>
        </edit>
    </match>
<!--
*******************************************************************************
    5. CJK fonts configuration [End]
*******************************************************************************
-->
</fontconfig>

上面的字体配置使用3种虚拟字体:

  • 衬线字体:Serif
  • 非衬线字体:Sans-serif/Sans serif/Sans
  • 等宽字体:Monospace/Mono

虚拟字体已经被定义在/etc/fonts/conf.d/ 下面的配置文件中,并拥有了一个字体列表,以上字体配置中的字体会被加在顶部,具有更高的优先级。并且,/etc/fonts/fonts.conf 中也为虚拟字体添加了可能采用的别名,比如mono。有关衬线字体与非衬线字体,请参看:细说字体 Sans Serif 与 Serif

在上面,我定义了:对于衬线字体,中文使用宋体,英文使用Georgia;非衬线的字体,中文使用微软雅黑,英文使用Verdana;等宽字体,中文使用新宋体,英文使用Courier New,共6种字体。其中,除了中文字体需要自己额外安装以外,其它英文字体默认已经存在于/usr/share/fonts/corefonts 目录,它们属于media-fonts/corefonts ,如果你找不到这些字体,可以emerge 这个包。

如果想换不同的口味,只需要把上述6处字体名称替换为系统中已经安装的字体即可,为了方便配置,我在每一处增加了<!-- @@@ editable --> 这样的注释。

另外,有人觉得/etc/fonts/conf.d 下面的配置文件没什么用处,还可能干扰自己的配置,可以删除了事。我仔细看过,不提倡删除,如果删除的话,以下2个文件一定要保留,否则fontconfig 就不会读取~/.fonts.conf 与/etc/fonts/local.conf ,它们是这2个配置文件的装载入口。

  • 50-user.conf
  • 51-local.conf

下面是雅黑的效果截图:

screenshot-msyh.jpg

字体有关的命令 

下面介绍几个字体有关的命令,在配置过程中可能会用来进行配置的确认、除错等。

fc-list

列出系统中所有可用的字体名称(包含中英文别名),以及支持的style。

命令后面可加字体名称,但必须是全称,不支持通配符,否则无法匹配。如果是中文字体,要求环境为UTF-8,否则匹配不成功,输出也是乱码。字体名称如果包含空格,使用引号引起。

虚拟字体不会被列出。

fc-match  

列出字体文件名称、英文名称,不支持中文字体名匹配。同样不支持通配符,但支持虚拟字体,可以列出虚拟字体中优先级最高的字体。可以使用-v 参数输出字体详细信息。 

对于配置文件中进行过字体替换的字体,fc-match 会输出替换后的字体名称

$ fc-match courier
cour.ttf: "Courier New" "Normal"
fc-cat

从cache 文件中读取字体信息,很少用到。

以上三个命令来自media-libs/fontconfig,属于xft 的命令。

xlsfonts

xlsfonts 也用于列出字体,但格式不同,此外,它也可以列出一些未被xft 系统识别并cache 的字体。同时这个命令也支持通配符。

$ xlsfonts -fn "*sim*"
-misc-simhei-medium-r-normal--0-0-0-0-p-0-iso10646-1
-misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-iso10646-1
-misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-iso8859-1
-misc-simsun 18030-medium-r-normal--0-0-0-0-m-0-koi8-r
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1
-misc-simsun-medium-r-normal--0-0-0-0-p-0-iso8859-1
-misc-simsun-medium-r-normal--0-0-0-0-p-0-koi8-r

如果系统中找不到这个命令,需要emerge x11-apps/xlsfonts

fontforge

这是一个GUI 程序,可用于编辑字体文件,同时也可以获得大量的字体信息,比如一个TrueType 字体是否内嵌了点阵字体,size是多少。对于MS的宋体,fontforge 只能识别出部分size 的点阵字体:12、14、16,13、15、18 则识别不出来,开时我认为是字体文件的版本问题,后来看了quanliking 的回帖才知道是fontforge 的问题。

如果系统中找不到这个命令,需要emerge  media-gfx/fontforge

Tips

如果字体没有变化,仅仅修改了字体配置文件,如果使用fc-match 这样的命令,不需要重启Xwindow。对于其它应用程序,比如gedit,仅仅重新运行这个程序即可应用新的配置,但有些应用程序则需要重启动Xwindow 才可以应用新的配置,比如gnome-terminal 。了解这些可以在测试字体配置的时候节省一些时间。

下载

  • fontconfig 配置文件:.fonts.conf(如果直接使用这个文件,请重命名为 .fonts.conf,下载的文件名中没有点)
  • 因为版权问题,不提供一些字体的下载,在Windows 系统以及本文链接的文章中可以找到。

延展阅读

(未完)

Posted by Alex at 11:35 PM | Comments (0) | Edit | Taged: chinese (2), font (2), gentoo (21), linux (38), T43 (14), Thinkpad (21)

Gentoo Linux on T43 (6) 中文环境

如果是初次安装Gentoo 系统与配置中文环境,在读接下来内容之前,建议首先阅读Gentoo Linux Localization Guide。 Locale locale 名称是一个具有命名约定、带有格式的字符串,其实质是其背后对应的字符集(codeset)。这里有一篇文章 关于locale的设定 Simple HOWTO 可以帮助理解locale ,虽然我并不完全同意文中的所有 观点。 使用不带任何参数的locale命令可以查看当前系统中与locale...

如果是初次安装Gentoo 系统与配置中文环境,在读接下来内容之前,建议首先阅读Gentoo Linux Localization Guide

Locale

locale 名称是一个具有命名约定、带有格式的字符串,其实质是其背后对应的字符集(codeset)。这里有一篇文章 关于locale的设定 Simple HOWTO 可以帮助理解locale ,虽然我并不完全同意文中的所有 观点。

使用不带任何参数的locale命令可以查看当前系统中与locale 有关的变量,以及它们所采用的locale 名称。

$ locale
LANG=en_US
LC_CTYPE=zh_CN
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=  

在Gentoo 手册 6. 安装Gentoo基本系统 最后一节,作为可选,简单的介绍了如何生成locale。Gentoo 提供了/etc/locale.gen 文件,用于指定为glibc 生成哪些locale,籍此来控制生成的locale 数量,减小系统体积。查看当前系统中已经生成并可用的locale 有哪些,使用以下命令:

$ locale -a
C
en_US
en_US.utf8
POSIX
zh_CN
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

所有生成的locale 会被放在 /usr/lib/locale/ 下面的子目录,并且与locale 名称同名(除字符集部分的大小写)。(由于历史原因,C 与POSIX 是2个很特殊的locale)

$ ls -1 /usr/lib/locale/
en_US
en_US.utf8
zh_CN
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

locale.gen 文件内容具有如下格式,空格之前是locale 名称,locale 名称中可以不包含字符集的部分,空格之后是所对应的字符集。

en_US ISO-8859-1
en_US.UTF-8 UTF-8 

作为中文用户,为了系统可以正确的识别、显示并处理中文字符,必须生成与中文字符集有关的的额外locale。字符集可以采用以下之一:

  • GB18030
  • GBK
  • GB2312
  • UTF-8

其中除UTF-8  是Unicode 解决方案以外,其它三个是父子集关系,其中GBK18030 最为完整,但仍然建议按以下格式,添加GBK 与GB2312 字符集相关的locale 到locale.gen 文件:

en_US ISO-8859-1
en_US.UTF-8 UTF-8
zh_CN GB18030
zh_CN.GBK GBK
zh_CN.GB2312 GB2312
zh_CN.UTF-8 UTF-8 

为什么不单独使用最完整的GB18030 字符集?理由是为了向下与一些较早的应用程序保持兼容,这个方法来自于 最精简有效的 glibc locales 设定

如果见到有些文章介绍使用/etc/locale.build 文件和不同的格式做类似的事情,不要奇怪,请用以下命令查看你的glibc 版本,如果大于等于glibc-2.3.6-r4 ,那么请用本文的文件名与格式,否则升级glibc 或者按他说的做。

$ emerge -s %^glibc$
*  sys-libs/glibc
Latest version available: 2.6.1
Latest version installed: 2.6.1

设置locale 有关的环境变量

对于中文用户,一般可以分为2种

  1. 一般性中文要求,仅要求系统具有中文的处理能力。
    要求操作系统以及应用程序能够正确显示并处理中文字符,包括文件名、文本文件内容等,并且可以输入中文。
  2. 全面性中文要求,要求中文界面。
    在一般性要求之外,还要求操作系统以及应用程序的菜单、选项、以及消息等均尽可能以中文进行显示。

以上2种情况,分别对应了2种典型的locale 环境变量设置。

一般性中文要求

很多软件开发者,或者在国外的中文用户,会采用这种方案,好处是:

  • 有助于测试软件
  • 避免术语翻译不当或者语言习惯所带来的困扰
  • 在不影响中文处理能力的前提下,最大化英文的使用范围

推荐的环境变量配置:

export LANG=en_US
export LC_CTYPE=zh_CN
全面性中文要求

大部分普通用户会采用这种方案,对应的环境变量配置:

export LANG=zh_CN
export LC_ALL=zh_CN

这份指南中说明了所有LC_* 和LANG 变量的作用与关系,额外设置LANG,也是为了对个别不支持LC_ALL 的应用程序保持兼容性。

建议将上述变量设置在日常用户的profile 当中,比如:/home/user/.bash_profile,不建议设置在系统级别,对于Gentoo 这个文件是:/etc/env.d/02locale

G_BROKEN_FILENAMES

G_BROKEN_FILENAMES 是一个与Glib 有关的环境变量,把它作为小标题是因为它十分关键,曾因为它带来了很多困扰。

我们周围几乎所有的Windows 系统都设定为使用GB 编码中文文件名,而不是Unicode,任何Unicode 的编码的中文文件名在这些Windows下都会显示为乱码。因此我们与这样的Windows 系统交换包含中文文件名的文件,最好的方案就是也同样使用GB 编码文件名,这样就不会带来显而易见的麻烦。

通过以上的locale 设定,已经可以看出,我们的确在设定一个GB 编码的中文Gentoo ,而不是Unicode Gentoo,但总有一些事情出乎我们的意料。Gnome 以及几乎所有应用程序(已知除Gnome Terminal 以外)会无视以上的locale 设定,仍然使用UTF-8 编码中文文件名,以Nautilus 为代表,虽然他们可以同时正确的显示与处理GB 与UTF-8 编码的文件名,但另外的一些应用程序会说不,比如Gnome Terminal, Krusader 等等,其他Windows 用户或者FTP 用户也会抱怨。

要解决这个问题,就需要设置:

export G_BROKEN_FILENAMES=1 

 或者

export G_BROKEN_FILENAMES=yes 

设置这个变量后,需要重新启动系统才能生效,或者至少logout 之后重新启动X Window,比如kill 掉X 后回到命令提示符,logout 之后重新login,再执行一个startx。

有关这个变量作用的更多信息,请参考Display Name of Filename in Glib

中文输入法 Scim

Linux 下的中文输入法有很多,Xsim, Scim, Chinput, Xcin, Fcitx等等,我现在使用Scim ,其功能类似Windows下的紫光输入法,可以整句输入,也会动态加入新的词组并调整词频,但其智能性与现今Windows 平台的搜狗或者Google 输入法还有差距。

Scim for Gentoo 安装过程比较简单,我使用gnome 环境,没有安装kde,但安装了几个特别需要的kde 应用程序,因此,我的系统上也有qt3,qt4 以及kde 应用所必需的包。

For gnome 

首先,要让Scim 在gnome 环境工作,需要以下步骤:

  • 在make.conf 的USE 变量中加入 nls cjk unicode,如果它们还不在的话。
  • 为了安全起见,执行以下命令来检查是否有软件包会被这些新的USE 变量影响,如果有的话,那么就继续执行,否则退出即可。
# emerge -av --newuse world
  • 执行以下命令安装Scim
# emerge -av scim scim-pinyin
  • 设置以下环境变量(对于gnome 环境未设置也没有发现问题):
export XMODIFIERS=@im=SCIM    #case matters for this variable!
export GTK_IM_MODULE=scim
export QT_IM_MODULE=scim

重启系统,即可以在gnome 应用中使用ctrl+space 调出Scim 使用。

For kde 

为了能在kde 应用程序中调用Scim,需要继续完成以下步骤,如果不打算使用kde 应用程序,也可以跳过。

  • 在make.conf 的USE 变量中加入immqt-bc
  • 执行以下命令,确保qt3 使用immqt-bc USE flag 编译,否则,接下来的步骤会出错。
# emerge -av =qt-3*
[ebuild   R   ] x11-libs/qt-3.3.8-r4  USE="cups gif immqt-bc* mysql opengl xinerama -debug -doc -examples -firebird -immqt -ipv6 -nas -nis -odbc -postgres -sqlite" 135 kB 
  • 接下来安装qt 环境中用于支持im-module 的软件包(gnome 的gtk 内建im-module 支持) 以及skim:
# emerge -av scim-qtimm skim

安装完成后,就可以在kde 应用程序中使用scim 了。

在gnome 与kde 中scim 有2套不同的配置界面与输入条,具体使用哪一个,可以在选项中的General Scim 的Other 标签页中设置,当然,也可以不去关心它。

在kde 中配置Scim,花费了我不少时间,以下几篇是我参考的Scim 官方资源:安装简介for Gentoo,更详细的安装指南for Gentoo,针对一般Linux 发布的安装指南,但也有一定的参考价值。

非必须步骤 

以下步骤在安装指南 中有所提及,但经试验并非必须。

  • 安装scim-tables: 
$ emerge app-i18n/scim-tables

访问其它非Linux 分区

通常,移动硬盘、U盘、存储卡、MP3、Thinkpad 的第二块硬盘等移动设备,以及双启动的系统中会包含非Linux 分区,一般来说,它们会采用与Windows 兼容的FAT 分区,个别也可能是NTFS 分区。为了能在这些设备上正确显示和处理中文文件名,需要在mount 选项中指定字符集。

mount 是Linux 中一个基本的命令,可以将包括本地文件系统在内的多种文件系统映射为一个本地路径, 由于不同文件系统的特性差别,mount 针对不同的文件系统均支持一组不同的选项,这里需要用到iocharset。

对于FAT 或者NTFS 类型的分区,我们需要在mount 选项中包含:

iocharset=gb2312 

迄今为止,我们还不能在这里指定其它更完整的GB字符集:gbk 与gb18030 。对于NTFS 分区,新增一个选项nls,与原有iocharset 意义相同,仅仅是为了替换它,旧的选项也保留着。nls 在其它分区类型却没有提供,因此如果喜欢使用新的选项nls 那么需要注意其仅仅针对NTFS 分区有效。

针对不同的设备,我的fstab 如下:

# 双启动Windows分区
/dev/sda3               /mnt/w          vfat            noauto,noatime,user,ro,codepage=936,iocharset=gb2312    0 0
# 第二块硬盘 
#/dev/sdb2              /mnt/m          ntfs            noauto,noatime,user,iocharset=gb2312    0 0                                                                        
# usb 设备
/dev/sdc1               /mnt/u1         auto            noauto,noatime,user,iocharset=gb2312    0 0
/dev/sdc2               /mnt/u2         auto            noauto,noatime,user,iocharset=gb2312    0 0
/dev/sdc3               /mnt/u3         auto            noauto,noatime,user,iocharset=gb2312    0 0
/dev/sdc4               /mnt/u4         auto            noauto,noatime,user,iocharset=gb2312    0 0
/dev/sdc5               /mnt/u5         auto            noauto,noatime,user,iocharset=gb2312    0 0
# 光驱
/dev/sr0                /mnt/dvd        auto            noauto,noatime,user,ro,iocharset=gb2312    0 0

说明:

  1. 针对vfat 分区,为了安全起见,额外指定了codepage 选项,依据文档,似乎与8.3 短文件名转换有关,但我还不知道其具体会在什么情况下起作用。
  2. 对于usb 设备,分区类型指定auto,而不限制在vfat,以增加灵活性。
  3. 同样,光驱设备也没有限制为iso9660,指定了auto,原因同上。

如果不打算定义在fstab 中,只在命令行临时mount,或者为了测试,使用以下格式:

# mount -t vfat -o codepage=936,iocharset=gb2312 /dev/sda3 /mnt/w
# mount -t auto -o iocharset=gb2312 /dev/sdc1 /mnt/u1 

延展阅读

( 未完)

Posted by Alex at 3:05 AM | Comments (0) | Edit | Taged: chinese (2), gentoo (21), linux (38), locale (1), T43 (14), Thinkpad (21), 中文 (1)

Gentoo Linux on T43 (5) 配置内核(kernel)

以下的内容,适合于正在按照Gentoo手册安装Gentoo Linux 系统,并且已经进行到:第7部分 配置内核 的人。此外,也适合那些已经安装了Gentoo 系统,打算调整内核配置或者需要升级内核的人。 内核版本:gentoo-sources-2.6.23  不同的内核 在网络上,我们经常会看到很多命名不同的Linux kernel 以及它们所对应的patchs,比如: git-sources, mm-sources 等等,它们分别代表了不同的含义,vanilla-sources 是官方...

以下的内容,适合于正在按照Gentoo手册安装Gentoo Linux 系统,并且已经进行到:第7部分 配置内核 的人。此外,也适合那些已经安装了Gentoo 系统,打算调整内核配置或者需要升级内核的人。

内核版本:gentoo-sources-2.6.23 

不同的内核

在网络上,我们经常会看到很多命名不同的Linux kernel 以及它们所对应的patchs,比如: git-sources, mm-sources 等等,它们分别代表了不同的含义,vanilla-sources 是官方 的定期发布版本,未经过任何修改与patch,而git-sources 则每天更新,是vanilla-sources 的开发快照。其它的,诸如mm-sources 是一个增加了补丁集合的版本,由Andrew Morton 进行维护。

这些kernel 也包含在Gentoo 的官方Package 列表里面,可以使用emerge 命令进行安装(虽然Gentoo 并不推荐),Gentoo 也为它们提供了一个概要的描述

在Gentoo手册中要求安装的gentoo-sources 也与它们类似,属于Gentoo Team 维护的一个经过patch 的版本。我们接下来的讨论都是基于此内核。

T43 有关的内核配置

这一节讨论与硬件有关的内核配置选项,以下的内容源于我在网上查找的资料以及自己的经验,有出处的的方我尽量附上链接。对于内核中配置的选择,我尽量摒除无用的选项,以减小内核文件的体积和生成的Modules 规模,但由于我的知识所限,以及个人喜好,仍然会有很多有争议的的方,如果您认为是一个错误,欢迎指正。

T43 不同型号的配置可能会有差别, 以下每一项设备后面,都标出了可能配备的硬件型号,这些硬件信息来源于ThinkWiki ,在开始之前,多花些时间,了解您的Thinkpad 含有哪些硬件,是值得的。

CPU

Intel Pentium M (Dothan) 1.6, 1.73, 1.86, 2.0, 2.13 or 2.26 GHz CPU

CONFIG_X86_PC=y
CONFIG_MPENTIUMM=y
CONFIG_X86_GENERIC=y
主板南桥 

Intel 82801FBM ICH6-M southbridge

CONFIG_I2C_I801=m 
电源管理
CONFIG_PM=y
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND_UP_POSSIBLE=y
CONFIG_SUSPEND=y
CONFIG_HIBERNATION_UP_POSSIBLE=y
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=m
CONFIG_ACPI_FAN=m
CONFIG_ACPI_DOCK=m
CONFIG_ACPI_BAY=m
CONFIG_ACPI_PROCESSOR=m
CONFIG_ACPI_THERMAL=m
CONFIG_ACPI_BLACKLIST_YEAR=0
CONFIG_ACPI_DEBUG=y
CONFIG_ACPI_DEBUG_FUNC_TRACE=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
CPU 频率调节
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_X86_ACPI_CPUFREQ=m
Fn + Keys
CONFIG_THINKPAD_ACPI=m
CONFIG_THINKPAD_ACPI_BAY=y
硬盘/光驱
  • 40, 60 or 80GB PATA HDD1
  • UltraBay Slim with one of the following:
    • DVD-ROM
    • DVD-ROM/CD-RW Combo
    • DVD±RW

有关PATA ,其实就是传统的、使用扁线缆的ATA 硬盘,是对应新的SATA 硬盘而提出的名称。T43 使用PATA 硬盘,但控制器是SATA 的。

前面文章中,提到了硬盘/光驱设备名称的问题 ,以下的设置会决定设备使用哪一种驱动程序,也决定了设备名使用sd* ,还是hd*。

如果打开CONFIG_IDE 选项,那么设备将会识别为hd* ,即使同时打开了scsi 的有关选项。因此,应该关闭CONFIG_IDE 及其以下的所有选项,无论它看起来多么正确,或者你仅仅为了保持兼容性,它都会强制使用落后的驱动程序,硬盘传输速度将遭受明显损失,CPU 占用率也明显提高。方案来源:Desktop Lags under Heavy IO

# CONFIG_IDE is not set
#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_NETLINK=y
CONFIG_SCSI_PROC_FS=y
#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
CONFIG_BLK_DEV_SR=y
CONFIG_CHR_DEV_SG=y
#
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
#
CONFIG_SCSI_WAIT_SCAN=m
#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
CONFIG_SCSI_FC_ATTRS=m
CONFIG_ATA=y
CONFIG_ATA_ACPI=y
CONFIG_ATA_PIIX=y
CONFIG_PATA_MPIIX=m
CONFIG_MD=y
CONFIG_BLK_DEV_DM=y
CONFIG_DM_CRYPT=y
显卡

ATI X300 有2种驱动方案,一种是开源驱动,一种是ATI 官方的闭源驱动(已经加入Gentoo Package 列表),闭源驱动对3D 加速支持的更好一些,不过最近开源社区的R300 项目已经可以支持X300 显卡的3D 加速功能了。对于内核配置之外的内容,将来讨论。

以下内核选项对显卡系统起到支持作用,确保已经配置(来源于Gentoo ATI Radeon FAQ: 2.1 - Which kernel options are important for the ATI drivers?

CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_KMOD=y
CONFIG_PCI=y
CONFIG_MTRR=y
CONFIG_TMPFS=y

下面讨论与显卡直接相关的内核选项。

使用开源驱动程序,仅仅需要配置以下2项即可。

CONFIG_DRM=m
CONFIG_DRM_RADEON=m

CONFIG_DRM 与CONFIG_DRM_RADEON 编译为module 会分别对应为drm 与radeon 。

如果使用官方驱动,仅配置以下选项即可

CONFIG_DRM=m

另外一种选择,可以在内核disable CONFIG_DRM 选项,然后在外面emerge x11-base/x11-drm 软件包。

有很多人在论坛上问,X300 是否需要配置CONFIG_AGP(对应agpgart module),X300是 PCIe 接口,经过测试,不需要配置CONFIG_AGP ,无论是内建,还是Module,虽然加入AGP 支持可能不会产生错误,但也不会带来任何性能提升。以下FAQ 也可以作为参考: 2.1 - Which kernel options are important for the ATI drivers? 

NOTE 2: if you have a PCIe card, the AGP settings should be irrelevant. If you encounter problems, make sure you're using a recent kernel and the latest driver version. Some people have also reported that they had to enable AGP for their PCIe cards to work.

...
If you're using a PCIe card, then as noted above, it shouldn't be necessary to enable AGP, but it may be worth trying if you have problems. 

网卡

Broadcom 10/100/1000 Ethernet

CONFIG_TIGON3=m  
无线网卡

Intel 2200/2915 芯片可以使用内置驱动程序

CONFIG_IPW2200=m 
Bluetooth/Modem
声卡 

AD1981B AC'97 Audio controller

内核支持很多种类的声卡驱动,主要包括2种:ALSA 与OSS,如下。几年前在Linux 下装声卡驱动程序,都是用OSS,不过现在有了更好的ALSA

<*> Sound card support
Advanced Linux Sound Architecture  ---> 
Open Sound System  ---> 

对于T43,我们可以使用内核中的ALSA 驱动程序,选项CONFIG_SND_INTEL8X0 为此提供支持,CONFIG_SND_INTEL8X0M是对Modem 的支持,也要选择上。

以下是在我的系统中设定的所有与声卡有关的内核选项:

CONFIG_SOUND=y
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_SEQUENCER=m
CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_MPU401_UART=m
CONFIG_SND_AC97_CODEC=m
CONFIG_SND_DUMMY=m
CONFIG_SND_VIRMIDI=m
CONFIG_SND_MTPAV=m
CONFIG_SND_MPU401=m
CONFIG_SND_INTEL8X0=m
CONFIG_SND_INTEL8X0M=m
CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_AC97_BUS=m 

另外还有一种方案,即使用外面的ALSA 驱动程序,可以直接在alsa 项目 的主页下载 alsa-driver。

有关内核以外的配置,后面单独讨论。

PCMCIA *2

CardBus slot (Type 2) (未测试)

ExpressCard/54 slot (未测试)

HDAPS 硬盘动态保护系统

IBM Active Protection System(使用第三方驱动)

Fingerprint Reader 指纹识别

Integrated Fingerprint Reader(使用第三方驱动)

嵌入式加密

IBM Embedded Security Subsystem 2.0 (未测试)

键盘、指点杆、触摸板、usb鼠标

UltraNav (TrackPoint / Touchpad combo) (整理中)

内核选项如下:

CONFIG_INPUT=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1400
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1050
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_KEYBOARD=y
CONFIG_INPUT_MOUSE=y
CONFIG_INPUT_MISC=y
CONFIG_INPUT_UINPUT=m
CONFIG_MOUSE_PS2=y
CONFIG_MOUSE_PS2_ALPS=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y

 

非T43 相关特性的内核配置

这些配置不再一一列举,请见配置文件:config-2.6.23

Tips

查看当前运行系统的内核配置

$ zcat /proc/config.gz |grep -i drm  

延展阅读

(未完)

Posted by Alex at 12:44 AM | Comments (0) | Edit | Taged: driver (2), gentoo (21), kernel configuration (1), linux (38), T43 (14), Thinkpad (21)

Gentoo Linux on T43 (4) 驱动无线网卡

识别无线网卡型号 T43 内置的无线网卡有多种型号,为以下之一: IBM 11a/b/g Wireless LAN Mini PCI Adapter II Intel PRO/Wireless 2200BG Mini-PCI Adapter...

识别无线网卡型号

T43 内置的无线网卡有多种型号,为以下之一:

它们使用了不同的芯片,也需要使用不同的驱动程序。因此,在着手驱动无线网卡之前,要弄清楚网卡的型号。

我的IBM 11a/b/g Wireless LAN Mini PCI Adapter II 使用了Atheros 的AR5212 系列芯片,可以使用以下命令确认:

# lspci |grep Ethernet
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751M Gigabit Ethernet PCI Express (rev 11)
0b:02.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)

安装驱动程序

2200/2915 芯片 

对于Intel 2200/2915芯片的无线网卡,Linux 内核内置了驱动程序,如下图,如果你的网卡在此列,那么在配置内核时需要选中,如果标记为<M>,那么在编译内核后,需要将其加入文件:/etc/modules.autoload.d/kernel-2.6,在下次启动系统时,这个Module 就会自动装载。

usr-src-linux.gif

AR5212 芯片 

对于AR5212 系列芯片,必须安装第三方驱动程序。幸运的是,Gentoo 的Package  列表已经加入了madwifi 为其编写的驱动程序与工具:net-wireless/madwifi-ng 与 net-wireless/madwifi-ng-tools,使用以下命令即可以安装:

# emerge -av madwifi-ng
# emerge -av madwifi-ng-tools

安装完成之后,会编译出一个新的Module: ath_pci,将其加入文件:/etc/modules.autoload.d/kernel-2.6。

# echo ath_pci >> /etc/modules.autoload.d/kernel-2.6 

可以通过以下命令查看当前装载的Modules:

$ lsmod 

如果希望手工卸载或者装载一个Module ,用以下命令实现:

# modprobe -r <Module_Name>
# modprobe <Module_Name>

若Modules 之间存在依赖关系(可以在lsmod 的输出中查看),则需要一层一层的卸载,但有些依赖不会显示出来,导致无法卸载,这时可以使用以下命令强制卸载:

# rmmod --force <Module_Name> 

待确认所需Module 已经加载,执行ifconfig 命令,应该可以看到新的网络接口,一般会是ath0。接下来可以使用iwlist  来查找附近的无线接入点:

# iwlist ath0 scan 
ath0      Scan completed :
Cell 01 - Address: 00:07:40:ED:87:02
ESSID:"alexzhangsatgmaildotcom"
Mode:Master
Frequency:2.462 GHz (Channel 11)
Quality=17/70  Signal level=-78 dBm  Noise level=-95 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:bcn_int=100

找到后,使用iwconfig 配置连接信息:

# iwconfig ath0 essid alexzhangsatgmaildotcom 
# iwconfig ath0 key XXXXXX

第二步为加密的连接指定密钥,若无线AP 上Encryption key 没有启用,则省略第二步。对于使用WEP 静态密钥加密的无限AP 测试成功,其它加密方式未经测试。密钥要求是十六进制格式,如果是ASCII 格式,使用这样的格式:s:XXXXXX

最后,使用dhcp 向AP 请求IP 地址:(假定你使用dhcpcd 客户端)

 # dhcpcd ath0

若dhcpcd 成功获取了IP 地址,那么无线网络连接建立成功。

NOTE

  • 给出的命令如果前面带有#,那么默认需要root 权限执行。
  • 如果在执行lspci, lsusb, lsmod 等命令时遇到找不到命令的错误,那么需要安装以下对应的包:
# emerge -av sys-apps/pciutils sys-apps/usbutils sys-apps/module-init-tools
  • 我不太清楚iwconfig 可以识别多少种加密连接,对于更多样的加密连接,需要安装net-wireless/wpa_supplicant。

Troubleshooting

升级内核 从2.6.20-r8 到2.6.23 ,madwifi 无线网卡不工作

Module ath_pci load 失败。

这是一个bug ,需要安装一个补丁patch-madwifi-r2630-2.6.23-build-fix.diff ,然后重新emerge madwifi-ng。否则re-emerge madwifi-ng会有file_operations错误。

因为内核升级,sandbox 也会引起问题, 在emerge madwifi-ng过程中会有"access violation summary" 错误。

临时方案:-sandbox

# FEATURES=-sandbox emerge madwifi-ng 

解决方案: 升级 sandbox 从 1.2.18.1 到1.2.18.1-r1或者更新版本

# emerge --sync && emerge sandbox-1.2.18.1-r1 

重新emerge madwifi-ng 成功后,ath_pci 可以load 成功。

(未完)

Posted by Alex at 7:28 PM | Comments (0) | Edit | Taged: gentoo (21), linux (38), T43 (14), Thinkpad (21), wireless (2)

Gentoo Linux on T43 (3) 安装指南的指南

指南  我并不打算重新写一篇Gentoo手册 ,这既远远的超出了我的能力范围,又显得毫无意义。果已经打算开始安装Gentoo Linux,那么请详细阅读官方手册,并按步实施,这篇文档会额外介绍一些笔者在安装过程中遇到的一些问题,以及心得,并附上一些有用的链接。其中大部分内容与Thinkpad T43 有关,另外一部分会涉及到有关IBM 的一些应用环境,一并介绍(更新:这部分将单独写一份文档)(2008-3-12: 因为涉及一些受限访问的资源,很难整理区分,不打算发布了,有兴趣的朋友可以来信交流)。 为了顺利的安装Linux,相对于Windows 我们需要更多的关注硬件信息,这有助于选择合适的驱动程序,或者在网络上寻求正确的帮助。ThinkWiki 包含了非常丰富的各型号Thinkpad 硬件特性,以及在多种Linux 发布下所获得的支持,虽然,由于Linux 发布的区别,部分内容不能直接在Gentoo 下应用,但这大概是目前这方面最好的资源了。 此外,这里有一份Windows...

指南 

我并不打算重新写一篇Gentoo手册 ,这既远远的超出了我的能力范围,又显得毫无意义。果已经打算开始安装Gentoo Linux,那么请详细阅读官方手册,并按步实施,这篇文档会额外介绍一些笔者在安装过程中遇到的一些问题,以及心得,并附上一些有用的链接。其中大部分内容与Thinkpad T43 有关,另外一部分会涉及到有关IBM 的一些应用环境,一并介绍(更新:这部分将单独写一份文档(2008-3-12: 因为涉及一些受限访问的资源,很难整理区分,不打算发布了,有兴趣的朋友可以来信交流)。

为了顺利的安装Linux,相对于Windows 我们需要更多的关注硬件信息,这有助于选择合适的驱动程序,或者在网络上寻求正确的帮助。ThinkWiki 包含了非常丰富的各型号Thinkpad 硬件特性,以及在多种Linux 发布下所获得的支持,虽然,由于Linux 发布的区别,部分内容不能直接在Gentoo 下应用,但这大概是目前这方面最好的资源了。

此外,这里有一份Windows 软件类似替代列表 , 有人负责维护更新,但中文版本更新很慢,网络上广泛转载的版本也是出于此。

提纲 

下面的目录,包含了整个系列内容的链接。

  1. 为什么使用Gentoo
  2. 安装之前
  3. 安装指南的指南(You are here!)
  4. 驱动无线网卡
  5. 配置内核(kernel)
  6. 中文环境
  7. 中文字体
  8. X300 显卡的驱动以及3D 加速
  9. HDAPS 硬盘动态保护系统
  10. Fingerprint Reader 指纹认证
  11. CPU 频率自动控制(ToDo)
  12. Java 环境
  13. 应用程序中字体的纠正
  14. 内存虚拟盘加速系统
  15. Fn + Keys
  16. 蓝牙传输文件
  17. VGA输出
  18. 声卡驱动(ToDo)
  19. 总结(ToDo)

在我今天回来整理这个文档的时候,我才发现Gentoo手册已经多出了一个中文版本 ,与最新的英文版 同步,这也看出Gentoo中文社区发展的迅速。

参考信息

(未完) 

Posted by Alex at 1:50 PM | Comments (0) | Edit | Taged: gentoo (21), linux (38), T43 (14), Thinkpad (21)

Alex's picture

my email address in picture

搜索|Search

订阅更新|Subscribe to Feed

按月归档|By Month

2009
07
2008
11
10
07
05
04
03
02
01
2007
12
10
07
06
05
04
03
02
01
2006
12
11
10
09
08
07
06
05
04
03
02
01
2005
11
10
09
08
07
04
03
2004
12
11
10
09
08
07
06
05
04
03
02
01
2003
12
10
09
08
06
2002
09
08
04
03
02
2001
12
09
07
06
05

我读|My Books

db2

友情链接|links

我的链接|My Links

推荐站点|favorite sites

我的朋友|My Friends

Creative Commons License
This blog is licensed under a Creative Commons License.
Movable Type 4 Logo