歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

startx啟動失敗的幾個解決方法

  很多Linux用戶有如此一個慘痛經歷。當你和平常一樣登陸和輸入這可愛的startx時,你只是接收到錯誤信息。 Many of us gnu/linux users have had sUCh a terrible eXPerience. When you 很多linux用戶有如此一個慘痛經歷。當你 login and type the sweet startx as usual, you only receive scrolling lines 和平常一樣登陸和輸入這可愛的startx時,你只是接收到 of error messages. One copy of the error message is usually stored in 錯誤信息。錯誤通常存儲在 /var/log/XFree86.0.log. If you can Access the log file, you will notice /var/log/XFree86.0.log。如果你讀取這個日志文件,你將會注意到 the last lines of the file may look like this: 文件的最後一行通常如這樣: Could not init font path element unix/:7100, removing from list! Fatal server error: could not open default font 'fixed' I have to admit that I was in panic when I saw this message in the first 我不得不承認我感到恐慌當我最初幾次看到這些信息。 several times. As an intermediate user of linux system, I was not so 作為一個中級的linux系統用戶,我感到用命令控制台撥號和用lynx沖浪不 comfortable using text console for modem dialup and surfing with lynx. So 舒服沖浪。所以 I had to spend a lot of time on another box and use Google to search for 我不得不花費很多時間在另一台電腦的使用Google在網上搜索幫助。 help on web. It was amazing that so many people like me have this exact 另人感到意外的是如此多人像我一樣擁有如此 terrible experience and those replies in web forums and mailing lists 恐怖的經歷和那些網上論壇和郵件列表的答復 generally offer more sympathy than real help. Using our common sense and 一般提供更多的同情心而不是真正的幫助。用我們一般的理解和 some research, most of us can figure out this failure has something to do 研究,我們大部分可以判斷這是X字體服務的失敗。 with X font server. After having done a little more research, now I believe that this failure 做完進一步的研究之後,我現在相信這 may not be so serious as it looks. Please follow me by doing the steps 不像人們想象中的那麼嚴重。請跟著我做下面的這些步驟, below, in most of the cases you will get your X windows starting up again. 在大部分的案例中你將可以重新進入X windows。 Note: The following examples run on my Red Hat box. But I believe they are 注意:這些例子在我的Red Hat系統上。但我相信他們


general enough to be used for other distributions. 通常足夠應用在其它發行版上。 1. Check if the X font server is running. 1、檢查X字體服務是否正在運行。 Some people like me tend to suspect it is caused by bugs in the X font 一些人像我一樣趨向於懷疑這是由X字體服務的bugs引起的, server, but it turned out that X font server is quite robust. We can run 但它證明這X字體服務是良好的。我們可以運行 the xfs script under /etc/init.d to see if the font server is running. 這xfs格本文件夾在/etc/init.d去看是否字體服務正在運行。 [root@localhost /root]# /etc/init.d/xfs status xfs (pid 1385) is running... In some cases, the only reason for the failure is that the font server is 在一些案例,唯一失敗的原因是字體服務停止 dead. So, you need to restart font server like this: 所以,你需要重新啟動字體服務象這樣: [root@localhost /root]# /etc/init.d/xfs start Starting xfs: [ OK ] Well, my learned lesson is don't take this '[OK]' for granted. You have to 好,我的學習課程不承認OK是真的。你必須 check the status again to see if it is running. If it does run, you can 再次檢查狀況去看看是否正在運行。如果它不運行,你可以嘗試 try startx to see if you can start X windows. If you still cannot start X startx去看看是否可以開始X windows。當字體服務運行時,如果你仍然不可以運行X server when the font server runs, it means you are having more serious 服務,它意味著你擁有更嚴重的錯誤。 trouble. You need to waste a little more time reading on the following 你需要花費更多的一點時間閱讀以下的步驟。 steps. Note: In a weird case, my root partition was fully filled by two huge log 注意:在一個古怪的案例,我的根目錄是被兩個大於2GB的信息文件所占據滿的。 files occupying more than 2 GB. The font server dies when it cannot write 當它不可能寫進/tmp字體服務停止。 to /tmp. So the simple solution was finding the huge files and deleting 因此一些例子的解決辦法是尋找巨大文件的刪除掉他們。 them. 2. Check if the font 'fixed' is accessible. 檢查是否字體“fixed”可以理解的。 Now it is time to ensure that the font 'fixed' is accessible. First, we 現在是時侯確保字體“fixed”是受影響的。首先 can use command fslsfonts to see if font 'fixed' exists in the search 我們可以運行命令fslsfonts去看是否字體存在在所尋找的路徑: path: [root@localhost alex]# fslsfonts -server unix/:7100 -ll -fn fixed DIR MIN MAX EXIST DFLT ASC DESC NAME --> 0 255 some 0 11 2 fixed FONTNAME_REGISTRY FOUNDRY Misc FAMILY_NAME Fixed WEIGHT_NAME Medium SLANT R SETWIDTH_NAME SemiCondensed ADD_STYLE_NAME PIXEL_SIZE 13 POINT_SIZE 120 RESOLUTION_X 75 RESOLUTION_Y 75 SPACING C AVERAGE_WIDTH 60 CHARSET_REGISTRY ISO8859 CHARSET_ENCODING 1 COPYRIGHT Public domain font. Share and enjoy. CAP_HEIGHT 9 X_HEIGHT 6 FONT -Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO8859-1 WEIGHT 10 RESOLUTION 103 QUAD_WIDTH 6 This is the normal output when 'fixed' is available. Here, we can see that

當“fixed”是可用的,這是通常輸出的情況,我們可以看到 'fixed' is actually an alias for the font “fixed”實際上是字體的別名。 '-Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO8859-1'. If there is no font 'fixed', we first need to gain knowledge of the search 如果不是字體“fixed”,我們首先需要獲得更多的信息在字體的所在路徑。 path for fonts. We can use command chkfontpath to look at those paths: 我們可以運用命令chkfontpath去看那些路徑: [root@localhost alex]# /usr/sbin/chkfontpath Current Directories in font path: 1: /usr/X11R6/lib/X11/fonts/misc:unscaled 2: /usr/X11R6/lib/X11/fonts/75dpi:unscaled 3: /usr/X11R6/lib/X11/fonts/100dpi:unscaled 4: /usr/X11R6/lib/X11/fonts/misc 5: /usr/X11R6/lib/X11/fonts/Type1 6: /usr/X11R6/lib/X11/fonts/Speedo 7: /usr/X11R6/lib/X11/fonts/CID 8: /usr/X11R6/lib/X11/fonts/75dpi 9: /usr/X11R6/lib/X11/fonts/100dpi 10: /usr/share/fonts/default/Type1 11: /usr/share/fonts/default/TrueType 12: /usr/share/fonts/ja/TrueType 13: /usr/X11R6/lib/X11/fonts/latin2/100dpi:unscaled 14: /usr/X11R6/lib/X11/fonts/latin2/100dpi 15: /usr/share/fonts/ISO8859-7/misc:unscaled 16: /usr/share/fonts/ISO8859-7/75dpi:unscaled 17: /usr/share/fonts/ISO8859-7/100dpi:unscaled 18: /usr/share/fonts/ISO8859-7/misc 19: /usr/share/fonts/ISO8859-7/Type1 20: /usr/share/fonts/ISO8859-7/75dpi 21: /usr/share/fonts/ISO8859-7/100dpi 22: /usr/share/fonts/ISO8859-9/misc:unscaled 23: /usr/share/fonts/ISO8859-9/100dpi:unscaled 24: /usr/share/fonts/ISO8859-9/misc 25: /usr/share/fonts/ISO8859-9/100dpi 26: /usr/share/fonts/KOI8-R/100dpi:unscaled 27: /usr/share/fonts/KOI8-R/100dpi 28: /usr/share/fonts/zh_CN/TrueType 29: /usr/share/fonts/zh_TW/TrueType 30: /usr/share/AbiSuite/fonts These are the font paths on my box. It shows that xfs looks into these 這些字體路徑在我的電腦上。它顯示當它被修復的時候xfs觀察這些路徑尋找一個特殊的字體。 paths seeking a specific font when it is required. There are two types of 有兩種類型的重要文件: important files: fonts.dir in each of these paths, and fonts.alias in some fonts.dir在每一個路徑中,和fonts.alias在一些路徑中。 of the paths. For example, let's go to /usr/X11R6/lib/X11/fonts/100dpi, 例如,讓我們進入/usr/X11R6/lib/X11/fonts/100dpi, and open the files. The files look like this: 和打開文件。文件象這樣: [fonts.dir] 775 UTI___14.pcf.gz -adobe-utopia-regular-i-normal--19-140-100-100-p-104-iso10646-1 UTBI__14.pcf.gz -adobe-utopia-bold-i-normal--19-140-100-100-p-109-iso10646-1 UTI___12.pcf.gz -adobe-utopia-regular-i-normal--17-120-100-100-p-89-iso10646-1 UTI___24.pcf.gz -adobe-utopia-regular-i-normal--33-240-100-100-p-179-iso10646-1

courO08.pcf.gz -adobe-courier-medium-o-normal--11-80-100-100-m-60-iso10646-1 UTBI__12.pcf.gz -adobe-utopia-bold-i-normal--17-120-100-100-p-93-iso10646-1 ... The first line specifies the number of fonts under current directory. 這第一行詳細說明字體的數量在當前目錄。 Following lines map file names to font names. 以下幾行是字體文件的名字。 [fonts.alias] lucidasans-bolditalic-8 -b&h-lucida-bold-i-normal-sans-11-80-100-100-p-69-iso8859-1 lucidasans-bolditalic-10 -b&h-lucida-bold-i-normal-sans-14-100-100-100-p-90-iso8859-1 lucidasans-bolditalic-12 -b&h-lucida-bold-i-normal-sans-17-120-100-100-p-108-iso8859-1 lucidasans-bolditalic-14 -b&h-lucida-bold-i-normal-sans-20-140-100-100-p-127-iso8859-1 lucidasans-bolditalic-18 -b&h-lucida-bold-i-normal-sans-25-180-100-100-p-159-iso8859-1 lucidasans-bolditalic-24 -b&h-lucida-bold-i-normal-sans-34-240-100-100-p-215-iso8859-1 ... This file maps font alias to font names. So it is clear that once font 這個文件顯示字體文件的別名與原名。因此清楚知道從前字體的“fixed”是需要的, 'fixed' is needed, the font server search fonts.alias in each font path 字體服務在比賽中尋找字體別名在每一字體路徑中。 for a match. If the match exists, the corresponding font file is specified 如果比賽是存在,那相應的字體文件是指定在fonts.dir。 in fonts.dir. If no match exists, which is a rare situation, the X server 如果比賽不存在,那是非常罕見的情形,字體服務不可以運行我們需要重建字體列表。 cannot start and we need to rebuild the font lists. The rebuilding process 這重建的過程 will generate new fonts.dir and fonts.alias files. 將會產生新的fonts.dir和fonts.alias文件。 3. Rebuild font list. 重建字體列表。 Font list can be rebuilt using the script file xfs under /etc/init.d. 運用格本文件xfs在/etc/init.d下,字體列表可以被重建 Following is an excerpt of the script: 以下是格本文件的摘錄: ... buildfontlist() { pushd . &> /dev/null for d in $(/usr/sbin/chkfontpath --list cut -f 2 -d ':') ;do if [ -d "$d" ]; then cd $d # Check if we need to rerun mkfontdir NEEDED=no if ! [ -e fonts.dir ]; then NEEDED=yes elif [ "$(find . -type f -cnewer fonts.dir 2>/dev/null)" != "" ];then NEEDED=yes fi if [ "$NEEDED" = "yes" ]; then ... } ... start() { if [ -L /usr/X11R6/bin/X ]; then echo -n $"Starting $prog: " [ -x /usr/sbin/chkfontpath ] && buildfontlist rm -fr /tmp/.font-unix daemon xfs -droppriv -daemon ret=$? [ $ret -eq 0 ] && touch /var/lock/subsys/xfs echo return $ret fi } ... For readers not familiar with shell programming, this excerpt means that 因為讀者不熟悉運行命令程序,這格本文件的意思是每次xfs格本在運行, each time xfs script is run, it will check whether there is a fonts.dir 它將會檢查是否有fonts.dir在列表中的每一個字本路徑中。 file in each listed font path. If fonts.dir is missing in a path, font

當fonts.dir在路徑中消失,字體列表需要重建。 list needs to be rebuilt. If a fonts.dir does exist for each path, it will 如果fonts.dir不存在於每一路徑中,它將會 check if the status of any file in the font directory is changed after the 檢查是否所有文件在字體目錄是被改變在fonts.dir最後一次改變。 last change of fonts.dir. If this is true, the font list also needs to be 如果這是真實的,字體列表也需要被重建。 rebuilt. For newbies not interested in learning shell programming, we play a small 作為網絡新手是對學習命令不感興趣的,我們玩一個小竅門在子程序buildfontlist()。 trick in the subroutine buildfontlist(). We can set "NEEDED=yes" in the 我們可以設置"NEEDED=yes" 在第一情況下強制重建字體列表。 first instance to force the rebuilding of font list. 4. Fonts really missing? 字體確實不見了? If all steps above fail. My last suggestion is to check if the font file 如果以上所有的步驟都失敗了。我的最後一個意見書是檢查是否字體文件 is really removed by some processes. Then you need to reinstall the font. 真正地被一些程序刪去。然後你們需要重新設置字體.'



我們可以設置"NEEDED=yes" 在第一情況下強制重建字體列表。 first instance to force the rebuilding of font list. 4. Fonts really missing? 字體確實不見了? If all steps above fail. My last suggestion is to check if the font file 如果以上所有的步驟都失敗了。我的最後一個意見書是檢查是否字體文件 is really removed by some processes. Then you need to reinstall the font. 真正地被一些程序刪去。然後你們需要重新設置字體.'



list needs to be rebuilt. If a fonts.dir does exist for each path, it will 如果fonts.dir不存在於每一路徑中,它將會 check if the status of any file in the font directory is changed after the 檢查是否所有文件在字體目錄是被改變在fonts.dir最後一次改變。 last change of fonts.dir. If this is true, the font list also needs to be 如果這是真實的,字體列表也需要被重建。 rebuilt. For newbies not interested in learning shell programming, we play a small 作為網絡新手是對學習命令不感興趣的,我們玩一個小竅門在子程序buildfontlist()。 trick in the subroutine buildfontlist(). We can set "NEEDED=yes" in the 我們可以設置"NEEDED=yes" 在第一情況下強制重建字體列表。 first instance to force the rebuilding of font list. 4. Fonts really missing? 字體確實不見了? If all steps above fail. My last suggestion is to check if the font file 如果以上所有的步驟都失敗了。我的最後一個意見書是檢查是否字體文件 is really removed by some processes. Then you need to reinstall the font. 真正地被一些程序刪去。然後你們需要重新設置字體.'



Copyright © Linux教程網 All Rights Reserved