FreeBSD 5.x下GDM的安装

FreeBSD 5.x下GDM的安装


在偶半年前所写的“Display Manager三兄弟”一文中,分别介绍了XDM、KDM和GDM的使用方法。文中有关GDM的一部分内容,实际上是不正确的。时至今日,有必要重写这段文字,以正视听。

偶最先成功使用GDM是在FreeBSD 5.1版本下,就先从这个版本说起。在FreeBSD 5.1下,安装了XFree和GNOME窗口管理器之后,GDM其实已经存在于系统之中,只是需要进行相关的设置,才能使GDM正常工作。偶先介绍使GDM尽快开始工作的方法,之后再详细解释。


0 前提条件
假定你已经安装好XFree、GNOME或其它窗口管理器,并且确认各窗口管理器均能正常工作。


1 安装GDM的捷径

1.1 Ports安装GDM
GDM的Port在/usr/ports/x11/gdm/目录下,也可以选择/usr/ports/x11/gdm2/,只是版本不同而已。输入命令:
代码:
make install clean

系统自动下载GDM源码,编译、安装。如果已安装GNOME,通常会得到一个出错信息,提示系统已经存在GDM,先把原有版本卸载后,再重新安装:
代码:
make deinstall
make install clean


1.2 激活GDM
在/usr/X11R6/etc/rc.d目录下,我们会发现一个文件,gdm.sh.sample。将此文件复制成gdm.sh。
代码:
cp /usr/X11R6/etc/rc.d/gdm.sh.sample /usr/X11R6/etc/rc.d/gdm.sh

如果你在此前使用XDM或KDM作为Display Manager,必须先将它们关闭,即恢复/etc/ttys的设置如下:
代码:
ttyv8   "/usr/X11R6/bin/xdm -nodaemon"   xterm   off secure


1.3 使用GDM
重新启动系统,现在漂亮的GDM Login界面应该呈现在你的面前。试一试吧。

相信你很快就有疑问,并发现问题。为什么要重新安装GDM?是为了保持GDM版本最新吗?原来的不能用吗?我喜欢KDE、XFCE、FlueBox,还有其它窗口管理器,GDM只有GNOME可选,该怎么办?欲知详情,请看下回分解。


2 GDM安装详解

2.1 Port安装GDM的内幕
为什么要重新安装GDM?Port安装GDM,除了将GDM安装到系统中之外,还为我们完成了基本的GDM设置,这主要包括:GDM帐号设置,相关目录属性修改,启动脚本样板等等。这一切,在浏览了GDM的pkg-install脚本文件之后,就真相大白了。

2.1.1 GDM帐号设置
在pkg-install处理POST-INSTALL时,它在系统中增加了一个新的Group和User,名字都是gdm,ID号也都是92。如果系统中已有了gdm组或用户,就不再新建。
代码:
pw groupadd gdm -g 92
pw useradd gdm -u 92 -g gdm -h - -d "/nonexistent" -s /sbin/nologin -c "GNOME Display Manager"


2.1.2 相关目录属性修改
在设置帐号的同时,pkg-install还修改了两个目录的属性。
代码:
chown -R gdm:gdm /usr/X11R6/share/gnome/gdm /usr/X11R6/etc/gdm
chmod 0750 /usr/X11R6/share/gnome/gdm


2.1.3 启动脚本样板
GDM的启动脚本样板文件gdm.sh.sample,在安装过程中,会被复制到/usr/X11R6/etc/rc.d目录中。系统启动后,如果存在/usr/X11R6/etc/rc.d/gdm.sh,就会启动GDM。因此,还需要把gdm.sh.sample复制(或改名)成gdm.sh。

2.2 选择其它窗口管理器
启动窗口管理器设置,是保存在/usr/X11R6/etc/gdm/Sessions目录下。缺省情况下,该目录中,有Gnome、Xsession、factory-Gnome和factory-Xsession等几个脚本文件。GDM是通过运行不同的Session脚本来启动不同窗口管理器的。
启动窗口管理器,如果完全自己来写,是很麻烦的。通常,我们可以通过调用Xsession的方法,来简化脚本的编写。以启动KDE为例,我们只要建立如下内容的脚本就可以了。
代码:
#!/bin/sh
# $XConsortium: Xsession /main/10 2004/01/25 23:54:28 Jun Zhang $
exec /usr/X11R6/etc/gdm/Sessions/Xsession kde

脚本文件名即KDE,它将显示在GDM的Session列表里。当然,不要忘记设置可运行文件属性。
代码:
chmod +x /usr/X11R6/etc/gdm/Sessions/KDE

对于XFCE、FlueBox等其它窗口管理器,大可依葫芦画瓢,把KDE脚本里kde换成相应的名字,再用相应的文件名保存即可。
原始的Xsession脚本,只提供了对GNOME、KDE和TWM的支持,并不能启动其它其它窗口管理器,需要手工加入。偶的Xsession脚本,是在KDE的启动命令后,增加了对Enlightenment、Wmaker、Sawfish和Xfce的支持,代码如下:
代码:
    ...
    kde|kde1|kde2)
       if [ -x "/usr/share/apps/switchdesk/Xclients.kde" ]; then
           exec "/usr/share/apps/switchdesk/Xclients.kde"
       else
           #fallback for non-redhat
           exec startkde
       fi
       ;;
    enlightenment)
       exec enlightenment
       ;;
    wmaker)
       xterm &
       [ ! -d $HOME/GNUstep/Library/WindowMaker ] && /usr/X11R6/bin/wmaker.inst
       exec /usr/X11R6/bin/wmaker
       ;;
    sawfish)
       exec sawfish
       ;;
    xfce)
       exec startxfce
       ;;
    ...

这样Xsession就能够识别和启动这些窗口管理器了。注意,上述代码中KDE的部分是Xsession原有的。
factory-Gnome和factory-Xsession,没什么用,去除它们的可执行属性,把它们从GDM的Session列表中屏蔽掉。

2.3 GDM外观配置
GDM真正的配置文件是/usr/X11R6/etc/gdm/gdm.conf,该文件对每一个选项都有详细说明,因此不难理解。这里,我就不再多化笔墨了。其大部分内容,实际上可以通过GNOME里的GDM配置程序(/usr/X11R6/bin/gdmsetup)来完成,这是个GUI界面的程序,非常容易使用,同时也可以给GDM换上不同的主题。主题可以从http://art.gnome.org中下载。如果你有兴趣,也可以自己制作喜欢的主题,记得一点要和大家共享噢。

2.4 GDM的使用
修改了GDM配置,想检查效果,如果总是重启,那就太麻烦了。可以用下面的命令,停止GDM的运行:
代码:
/usr/X11R6/etc/rc.d/gdm.sh stop

重新启动GDM,则如下:
代码:
/usr/X11R6/etc/rc.d/gdm.sh start

GDM与XDM、KDM不同之处是,不能在/etc/ttys中直接启动,而是通过/usr/X11R6/etc/rc.d/gdm.sh,在系统启动时调用,也可以直接调用脚本停止或启动。


3 中文化处理

3.1 中文显示
对于FreeBSD 5.1来讲,在语言列表中应该有简、繁中文选项,选择中文语言后,在窗口管理器中会自动设置相应的环境变量。对于GNOME而言,菜单、桌面、帮助等等,都会自动显示为中文。这一点,对多用户环境来讲,非常方便。

3.2 中文输入
除了要能显示汉字,通常还需输入中文。这可以在Xsession脚本启动具体窗口管理器之前,加以设置。这里,偶以fcitx输入法为例。在Xsession中加入如下代码:
代码:
...
# special for zh_CN.EUC
case $LANG in
  zh_CN.EUC)
    LC_ALL=$LANG
    export LC_ALL
    LC_CTYPE=$LANG
    export LC_CTYPE
    XMODIFIERS="@im=fcitx"
    export XMODIFIERS
  ;;
esac

# run all system xinitrc shell scripts.
...

这样,在需要输入汉字之前,执行"fcitx &"命令,就可以启动fcitx输入法了。上述设置,并不保证中文的显示效果,如何美化中文显示,请参考其它文章。注,上述代码中的最后一个注解,是Xsession脚本中原有的,这里是作为插入这段代码的标志。

3.3 环境变量设置
GDM是在Xsession中设置语言环境变量,属于Login Class的设置。因此,无须管理员对不同用户都作个别设置,也不用去针对不同的Shell,修改以点(.)开头的隐含文件,规范了语言环境的设置。更多的说明,请参考FreeBSD Handbook中有关本地化的章节。
当然,对于KDE,这样做是无效的,并不能看到汉字,还需要用KDE自己的桌面选择程序。或许有什么捷径,目前我不知道,请补充。不过,这样可以得到意想不到的效果。如果GDM选择了简体中文,KDE还是英文,这时我们仍然可以启动fcitx输入中文,达到英文环境下输入中文的效果。真是阴差阳错,歪打正着。需要注意的是,此时Konsole下面的字体有够难看,字符间距和行距较大,需要进行中文字体的美化才行。


4 FreeBSD 5.2.1下的新变化
FreeBSD 5.1中的GDMgdm-2.2.5.5,FreeBSD 5.2.1中的GDM已经升级为gdm2-2.4.4.5,相应的配置也有所不小的变化。主要的有:启动不同窗口管理器的Session设置,简体中文的语言设置等。

4.1 不同Session的设置
FreeBSD 5.2.1下,进入/usr/X11R6/etc/gdm/Sessions目录,会发现里面什么文件也没有,连Xsession和Gnome都没有。那么该如何启动不同窗口管理器呢?gdm.conf中设置了缺省的窗口管理器是gdm.desktop。在/usr/X11R6/share/gnome/xsessions目录下,存在名为gnome.desktop的文件。将此文件复制为kde.desktop、xfce.desktop、enlightenment.desktop等等。以kde.desktop为例,修改其中的设置:
代码:
...
Name=KDE
...
StartCommand=startkde
...

Name设置列表中显示的名称,StartCommand设置启动命令。如此这般,上述各个窗口管理器选项将会出现在GDM的Session列表中了。这样处理,似乎比5.1版本有所简化。
缺省的desktop文件,位于/usr/X11R6/etc/dm/Sessions/default.desktop,它会让GDM启动XSession脚本的缺省窗口管理器,或者是用户目录下.xsession所指定的窗口管理器。

4.2 简体中文的语言选项
偶按照前述方法设置GDM,一切都很正常,和FreeBSD 5.1里的基本一样。唯一例外,在语言选择列表中,英文、繁体中文和其它语言都有,唯独缺少了简体中文。按照GDM文档中的说明,语言列表是来源于/usr/X11R6/etc/gdm/locale.alias中的设置。检查该文件,简体中文项确实存在的。
代码:
Chinese(simplified)    zh_CN.UTF-8,zh_CN.EUC

那为何在GDM的语言列表中却没有了简体中文?仔细比对和思考,谜底解开。原来,GDM在生成语言列表时,首先载入/usr/X11R6/etc/gdm/locale.alias,然后逐项检查各语言项,是否在系统中存在。这项检查其实就是看/usr/share/locale中是否有相应的语言编码,对于上述简体中文的设置,要求存在/usr/X11R6/share/locale/zh_CN.EUC目录。然而在FreeBSD 5.2.1中,简体中文缺省的语言编码已经被改变,/usr/X11R6/share/locale/zh_CN.EUC目录不再存在,新的语言编码是zh_CN.GB2312。将/usr/X11R6/etc/gdm/locale.alias中的简体中文设置改为:
代码:
Chinese(simplified)    zh_CN.UTF-8,zh_CN.GB2312

重新启动GDM,现在简体中文选项就出现在语言列表中了。测试结果表明,简体中文的显示一切正常。

4.3 中文输入法的设置
Xsession已经搬家到/usr/X11R6/etc/gdm目录下,前述3.2的设置照旧。不过,Xsession的内容变化较多,须小心修改。


说到这里,相信你应该明白,其实并不需要重新安装GDM,原有的GDM按上述内容配置一下就行了。只是需要多些时间而已。当然,想偷懒的话,还是ShortCut来的快。需要注意的是,如果用CVSup同步了Ports,那么FreeBSD 5.1的GDM Port可能已经是5.2.1下的新版本了。

偶的GDM主题是Delicious,一个饿坏了家伙。GDM,真的很Delicious,FreeBSD的桌面大餐岂能少得了它。你真的不想试试吗?!

gdm2从2.6.0.1开始,使用/usr/X11R6/etc/dm/Sessions来保存Session设置。

XFce4在Ports安装时,已提供WITH_GDM选项,以便将Session设置加入到Sessions目录中。(脚本XFce4->/usr/X11R6/etc/gdm/Sessions,XFce4.desktop ->/usr/X11R6/etc/dm/Sessions)

你可能感兴趣的:(FreeBSD)