歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> RedHat 9下unix/:7100錯誤無法啟動X windows

RedHat 9下unix/:7100錯誤無法啟動X windows

日期:2017/2/28 15:54:29   编辑:Linux教程

中午xx虛擬機上的RedHat 9無法啟動,從噴出的出錯信息看,是無法啟動X-window進入桌面。
嘗試startx,腳本運行失敗,錯誤日志如下:

OS Kernel: Linux version 2.4.20-8 ([email protected]) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #1 Thu Mar 13 17:54:28 EST 2003 PF
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/XFree86.0.log", Time: Tue Mar 3 12:13:22 2009
Could not init font path element unix/:7100, removing from list!

Fatal server error:
could not open default font 'fixed'

When reporting a problem related to a server crash, please send
the full server output, not just the last messages.
This can be found in the log file "/var/log/XFree86.0.log".
Please report problems to [email protected].

從日志上看,是找不到字體文件。
頭痛醫頭的辦法是,以root身份用vim編輯“/etc/X11/XF86Config”,將“unix/:7100“一行加#號注釋掉。reboot後成功啟動X進入桌面。
但是沒完,你是不是認為x的配置文件被篡改了?
不,unix/:7100是一個再正常不過的設置。

這要從X windows system的機制說起。X系統主要分為X Server、X Client(包括Window manager)。
X Server主要負責屏幕畫面的繪制和顯示,www.linuxidc.com 它讀取自己的配置文件(在Xorg使用/etc/X11/xorg.conf,XFree86則使用/etc/X11/XF86Config。RedHat 9的年代,Xorg還沒有誕生。)。這些配置文件中就有涉及到采用什麼字體。

本來字體文件一般存放在本機/usr/X11R6/lib/X11/fonts上,這裡用unix/:7100。實際是采用了XFS(X Font Server,默認端口7100)這個 daemon 來統一管理所有的字體。

有什麼好處呢?
最大的好處就是提速,字體是存放在xfs內存中,而不是存放在磁盤上,取的時候速度就加快了。壞處也是顯而易見的,會占用內存。
你可以把xfs運行在本地主機上,也可以運行到遠程主機上。取決於/etc/X11/XF86Config中FontPath的設置。基本格式如下:
FontPath transport/hostname:port

當xfs運行在本機上時,最典型的設定值就是FontPath "unix/:7100"
unix表明采用的是本地套接口,7100呢,實際上並沒有監聽在7100端口,是個擺設。回憶一下,生成本地套接口(AF_LOCAL/AF_UNIX)的時候,套接口的地址實際使用的是unix文件名作為地址,而不是Internet地址,自然就沒有包括進端口了。你可以netstat -a 一下,可以看到有這麼一個文件/tmp/.font-unix/fs7100,X Server就從這裡讀取所需的字體。

這時候回到一開始找不到字體的錯誤,原因就十分明朗了。
1.xfs服務沒有啟動
2.xfs服務啟動了,但是沒有在/tmp下建立起本地套接口。
所以,下次出現這種情況,確保xfs在系統boot階段能自動開啟就可以了。
設置方法有很多,可以用services/ntsysv/chkconfig等。

當xfs運行在遠程主機上時,一個典型的設定值可以是 FontPath "tcp/192.168.0.1:7100"
采用tcp連接到IP地址為192.168.0.1的主機的7100端口。
這個,有點crazy,但既然X 系統是C/S接口,這樣有什麼不可以呢?

題外話:我對xx使用虛擬機的方式頗有微詞(純屬個人成見)。
1.在她看來,用虛擬機跑linux,僅僅是得到一個*nix環境和編譯器,而且比mingw/cygwin安裝起來方便。直接用root賬戶以圖形界面方式登陸,desktop擺了一大堆東西,90%的操作是用鼠標右鍵完成,不學vimtutor當然也不知道強大的plugin,用未加語法高亮的gedit寫程序也沒用indent命令排版代碼。
2.root的風險性導致她有不少誤操作,出錯的時候不讀日志,或者是操作不正確得不到想要的實現時,一味說“虛擬機壞了”,樂此不疲地重裝——vmware的方便至極的snapshot功能成了擺設。
3.追求快速關機的時候,不是用“power off“,而是直接關閉vmware窗口按鈕,實際上就是“suspend“。一方面是虛擬機上的時鐘就不准了,下次看日志的時候可能就不好推斷,另一方面vmware軟件本身如果失去響應,沒有在關閉前正確存檔當前虛擬機的上下文環境,那麼下次打開vmware就會retoring失敗,真的就壞掉了。

Copyright © Linux教程網 All Rights Reserved