歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> BSD >> FreeBSD 5.x下GDM的安裝

FreeBSD 5.x下GDM的安裝

日期:2017/2/28 11:24:02   编辑:BSD


在偶半年前所寫的“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外觀配置
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中的GDM是gdm-2.2.5.5,FreeBSD 5.2.1中的GDM已經升級為gdm2-2.4.4.5,相應的配置也有所不小的變化。主要的有:啟動不同窗口管理器的Session設置,簡體中文的語言設置等。
4.1 不同Session的設置
代碼:
...
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)
Copyright © Linux教程網 All Rights Reserved