zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    dedecms5.7安装百度(ueditor)编辑器的方法
    shell多线程之进程间通信(2)
    shell多线程之进程间通信
    awk笔记
    用shell做简单的分布式计算
    C语言实现常用查找算法——二分查找
    C语言实现常用排序算法——基数排序
    C语言实现常用数据结构——堆
    C语言实现常用数据结构——图
    C语言实现常用数据结构——二叉查找树
  • 原文地址:https://www.cnblogs.com/wenus/p/107517.html
Copyright © 2011-2022 走看看