新浪網

  新浪首頁 > 科技時代 > FreeBSD使用大全連載 > FreeBSD連載(54):配置文件XF86Config
 


FreeBSD連載(54):配置文件XF86Config

http://www.sina.com.cn 1999年12月26日 16:09 王波

配置文件XF86Config

  位于/etc目錄下的XF86Config文件是XFree86的X服務器的配置文件,XF86Setup 或者xf86config在配置完后就將配置信息保存在這個文件中。XFree86也提供了一個配置 文件的樣例文件,/usr/X11R6/lib/X11/XF86Config.eg,可以用作參考。很多情況下需 要對X的行為進行微調,而并不想重新啟動設置程序重復進行整個設置過程,這樣手工修 改配置文件就更為方便。

  有一些X服務器的參數使用配置程序并不能進行配置,必須在原有XF86Config上 手工更改配置文件。

  下面將以一個簡單的配置文件為例進行簡單介紹XFree86的設置選項。

  • 文件搜尋路徑
Section "Files"
    RgbPath    "/usr/X11R6/lib/X11/rgb"
    FontPath  "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
    FontPath  "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
    FontPath   "/usr/X11R6/lib/X11/fonts/misc/"
    FontPath  "/usr/X11R6/lib/X11/fonts/75dpi/"
    FontPath  "/usr/X11R6/lib/X11/fonts/100dpi/"
#    FontPath   tcp/fontserver:7000
#    ModulePath	"/usr/X11R6/lib/modules"
EndSection

  上面是配置文件的第一部分 “Files” ,這個文件部分定義了 X Window使用的搜索文件路徑,如調色板文件的路徑RGBPath,字體路徑FontPath,以 及ModulePath用來設置X服務器的動態可加載模塊的路徑。

  其中字體路徑可以使用多行來設置多個路徑,也可以在一行之內設置多個路徑, 路徑之間使用逗號分隔。字體路徑也能定義為網絡上的字體服務器,這需要指定協議、 主機名和端口地址,例如tcp/fontserver:7000表示一台名為fontserver的字體服務器使 用tcp端口7000提供字體服務。Unscaled用于修飾表示對這個路徑下的字體不進行縮放處 理,處理固定字體可減少系統資源的消耗。使用字體服務器可以讓多個服務器同享字體, 從而達到節約磁盤空間的目的。

  在行首使用符號 “#” ,表示這一行為注釋,并不被X服務器處理。

  • 可加載模塊
# Section "Module"
# Load "xf86Jstk.so"
# EndSection

  如果前面Files部分定義了ModulePath,這個"Module"部分就用 來裝載相應路徑下具體的模塊。一般情況下,并不需要使用這個功能,除非是使用了一 些非標准的功能,需要可加載模塊的支持,如xf86Jstk.so就是一個游戲杆的驅動程序。

  • X服務器選項
Section "ServerFlags"
#    NoTrapSignals
#    DontZap
#    DontZoom
#    DisableVidModeExtension
#    AllowNonLocalXvidtune
#    DisableModInDev
#    AllowNonLocalModInDxev
EndSection

  "ServerFlags"部分設置一些X服務器的運行參數,對應于XF86Setup 中的Other選項中所設置的內容,一般不需改變。

  NoTrapSignals選項使得X服務器程序不去處理發送到X服務器的各個信號, 正 常情況下不設置這個選項,X服務器應該接收并處理這些信號,當接收到某些信號時就釋放X服 務器占用的資源,切換顯示模式并退出X服務器的執行。因此打開這個選項就使得發送到X服務 器的信號沒有得到處理,在錯誤不嚴重的情況下,X程序仍將繼續執行而不退出。因此可以用 于調試X服務器,觀察X的出錯原因及其影響。

  DontZap選項用于屏蔽Crtl-Alt-BackSpace熱鍵,通常不設置這個選項時,使用 者能夠使用這個組合熱鍵退出X服務器。當要將XFree86系統用作公用X終端時,最好使用這個選 項屏蔽退出熱鍵,讓用戶使用正常的退出方式退出登錄會話。

  DontZoom這個選項用于屏蔽<Crtl><Alt><小鍵盤 “+” >或< 小鍵盤 “-” >兩個用于動態切換分辨率模式的組合鍵,當然X服務器必須同時設置了多個分辨率 模式,這兩個組合鍵才有意義。

  xvidtune能實時改變X服務器的顯示模式,例如調整顯示區域位于顯示器中的位置等。然 而一旦針對某個顯示器的顯示模式調整正確之后,就沒有必要動態改變了,因此可以使用DisableVidModeExtension 選項屏蔽xvidtune實時改變顯示模式的能力,以保証顯示器的安全。一般只有本服務器上的 xvidtune可以完成這個操作,在當前X服務器上運行遠程計算機上的xvidtune不允許改變本服 務器的狀態。但是,也可以通過設置AllowNonLocalXvidtune選項, 使得非本服務器 上的xvidtune也有能力和本地的X服務器進行通信。第二個選項必須在第一個沒有設置的條件 下才能設置。為了安全的原因,不應該允許遠程系統上的xvidtune獲得本服務器的硬件設置信 息,不要設置這個選項。

  使用DisableModInDev選項,可以屏蔽客戶程序對輸入設備(鼠標或鍵盤)的動 態改變。 而AllowNonLocalModInDxev選項可以許可非本地的程序(xset)能動態改變 鍵盤或鼠標的設置。同樣,這兩個選項是沖突的。

  • 鍵盤設置
Section "Keyboard"
    Protocol   "Standard"
#    Protocol  "Xqueue"
AutoRepeat 500 5
#    ServerNumLock
#    Xleds      1 2 3
     LeftAlt     Meta
     RightAlt    ModeShift
     RightCtl    Compose
     ScrollLock  ModeLock
#    XkbDisable
 XkbKeycodes     "xfree86"
 XkbTypes        "default"
 XkbCompat       "default"
 XkbSymbols      "us(pc101)"
 XkbGeometry     "pc"
 XkbRules        "xfree86"
 XkbModel        "pc104"
     XkbLayout       "us"
EndSection

  "Keyboard"用于定義鍵盤的參數,指定了鍵盤使用的協議、重復率以及對 一些功能鍵的重映射。通常在XF86Setup下就可以設置這些選項,而不必手工修改這些設置。

  "Standard""Xqueue"是兩種不同的鍵盤協議,一般應該使用Standard協 議,Xqueue是一種同時支持鍵盤和鼠標的硬件使用的協議,在個人計算機平台上很少使用。

  "AutoRepeat"用于定義鍵盤的重復速度,"ServerNumLock"讓X服務器處理 NumLock的狀態,否則是由系統的鍵盤驅動程序處理這個狀態。有些X客戶程序不能從系統鍵盤驅 動程序中獲得小鍵盤的情況,此時就需要設置這個選項。”Xleds”允許X程序,如xset,能 夠改變鍵盤上三個LED狀態燈NumLock、CapsLock和ScrollLocal的狀態。

  下面的"LeftAlt"等設置,用于將個人計算機鍵盤上的鍵重新映射為一些傳統Unix 工作站的鍵盤上使用的鍵,如Meta、Compose等,由于傳統X程序大多數是在工作站上開發的,因此 這些程序需要這些特殊的功能鍵來完成操作,就需要映射這些鍵的定義以保証兼容性。

  "XkbDisable"選項可以用于屏蔽X服務器對鍵盤的擴展能力, 通常不應該屏蔽這個 能力,而不設置這個參數。這樣就可以在設置文件中使用下面的設置選項重新定義鍵盤的類型、排 列方式、符號類型、型號、編碼等等。當然一般情況下可以不重新定義這些參數,缺省設置為101 鍵PC鍵盤,適用于絕大多數的情況。

  • 鼠標設置
Section "Pointer"
    Protocol  "Sysmouse"
	 Device	   “/dev/sysmouse”
#    Protocol   "Microsoft"
#    Device     "/dev/ttyd0"
#    BaudRate  1200
#    SampleRate     150
#    Emulate3Buttons
#    Emulate3Timeout     50
#    ChordMiddle
EndSection

  "Pointer"部分用于定義鼠標的參數,最重要的內容是定義鼠標的類型 和使用的設備文件。對于使用moused來管理鼠標的情況,鼠標配置相當容易,首先在控制台下 設置好鼠標,然后使用/dev/sysmouse作設備文件,Sysmouse作為鼠標類型即 可。如果不打算使用moused來管理鼠標,而想直接使用鼠標設備,就需要正確指定鼠標類型及 其設備文件。例如最常見的MS兩鍵串口鼠標使用/dev/ttyd0(或ttyd1串口),使用 Microsoft鼠標類型,等等。

  注意必須保証系統內核識別出所使用的鼠標設備(或者串口設備)。

  此外,BaudRateSampleRate參數定義鼠標驅動程序與設備通信的波 特率和采樣率,Emulate3ButtonsEmulate3Timeout讓兩鍵鼠標能模擬三鍵鼠 標, 然而偽設備Sysmouse的模擬三鍵能力的設置需要在moused的啟動參數中設置,這里的設 置是無效的。ChordMiddle與上面參數意義相反,定義按下三鍵鼠標的中間鍵,等價于 同時按下左右兩鍵。

  • 顯示器設置
Section "Monitor"
    Identifier  "Hyundai DeluxScan 15G+"
    VendorName  "Unknown"
    ModelName   "Unknown"
    HorizSync   30-70
    VertRefresh 50-150
#    ModeLine "1024x768i" 45 1024 1048 1208 1264 768 776 784 817 Interlace
#    Mode "1024x768i"
#        DotClock	45
#        HTimings	1024 1048 1208 1264
#        VTimings	768 776 784 817
#        Flags		"Interlace"
#    EndMode
# 800x600 @ 72 Hz, 48.0 kHz hsync
Modeline "800x600"     50     800  856  976 1040   600  637  643  666 +hsync +vsync
# 1024x768 @ 70 Hz, 56.5 kHz hsync
Modeline "1024x768"    75    1024 1048 1184 1328   768  771  777  806 -hsync -vsync
# 1280x1024 @ 87 Hz interlaced, 51 kHz hsync
Modeline "1280x1024"   80    1280 1296 1512 1568  1024 1025 1037 1165 Interlace
EndSection

  "Monitor"部分定義了顯示器的各種屬性,其中前三項設置IdentifierVendorNameModelName起到的只是標識顯示器的作用, 如果具備多個顯示器定義 選項的時候可以用來區分不同的定義選項,因此這三個設置主要用在配置文件內部,并不重要。 后 面的水平同步HorizSync與垂直刷新VertRefresh的數據才是真正定義顯示器屬性的參 數,應該與具體的硬件相一致,這將決定顯示器能否工作在具體的顯示模式下。

  ModeLineMode定義了具體顯示模式使用的時序等參數,只有在這里定義了相 應模式,X服務器才能使用對應的模式,并在各種模式之間動態切換。然而XF86Setup并沒有設置在顯 示器的同步頻率范圍內支持的全部模式,因此會需要手工增加所需要的模式。而xf86config能將很多 顯示模式都加進設置文件中,其中很多是不必要的,例如320x200等低分辨率,需要手工刪除。此外一 個分辨率可能會有多個顯示模式相對應,但不同模式的刷新頻率不同,顯然應該保留一個顯示器支持 的非隔行掃描、并具備最高刷新頻率的模式。這些顯示模式受到水平同步和垂直刷新數據的限制,X服 務器會在啟動時屏蔽超過前面定義的水平同步和垂直刷新數據范圍的模式,一避免損壞顯示器。

  顯然,Modeline和Mode選項中的設置數據是一般使用者無法正確設置的,因此就需要從XFree86 的文檔中查詢各種常見的顯示器和及其常用的顯示模式數據,來決定最接近自己顯示器的顯示模式,在 復制到自己的設置文件中。XFree86的文檔位于在/usr/X11R6/lib/X11/doc目錄下,Readme.Config和 VideoModes.doc文件描述了各種顯示模式的對應數據,Monitors文件中收集了各種常見顯示器的水平 同步和垂直刷新數據。

  如果沒有定義多個模式,就不能使用X Server提供的動態切換分辨率模式的功能。

  • 顯示卡設置
Section "Device"
    Identifier "Generic VGA"
    VendorName "Unknown"
    BoardName  "Unknown"
    Chipset    "generic"
#    VideoRam  256
#    Clocks    25.2 28.3
EndSection
Section "Device"
    Identifier  "ViRGE/DX or /GX"
    VendorName  "Unknown"
    BoardName   "Unknown"
    #VideoRam    2048
EndSection

  "Device"部分定義顯示卡設備的參數,同樣IdentifierVendorNameModelName起到標識作用,具體設置如使用的芯片、顯示內存 等設置應與所使用的硬件相一致,但也可以不配置,留給X服務器自動探測。同樣,也可以 定義多個Device設置,某個具體的X服務器程序只使用某個選項中的設置。

  如果要針對某個顯示卡更改具體參數,除了查閱顯示卡手冊之外,還要閱讀 /usr/X11R6/lib/X11/doc/目錄下的Devices、modeDB.txt和AccelCards等文檔,在其中查找 與具體顯示卡相關的數據信息。

  • 屏幕設置
    • Section "Screen"
          Driver     "vga16"
          Device     "Generic VGA"
          Monitor     "Hyundai DeluxScan 15G+"
          Subsection "Display"
              Modes      "640x480"
              ViewPort    0 0
              Virtual     800 600
          EndSubsection
      EndSection
      Section "Screen"
          Driver      "accel"
          Device      "ViRGE/DX or /GX"
          Monitor     "Hyundai DeluxScan 15G+"
          DefaultColorDepth 16
          Subsection "Display"
              Depth       24
              Modes       "800x600" "640x480"
              ViewPort    0 0
              Virtual     800 600 
          EndSubsection
          Subsection "Display"
              Depth       8
              Modes       "800x600" "640x480"
              ViewPort    0 0
              Virtual     800 600 
          EndSubsection
          Subsection "Display"
              Depth       16
              Modes       "1024x768" "800x600" "640x480"
              ViewPort    0 0
              Virtual     1024 768
          EndSubsection
      EndSection

        “Screen”部分將具體定義X服務器的顯示屬性,以及具體使用的 設備和顯示模式。同時可以存在多個Screen部分,而每個screen部分對應一種X服務器。 雖然一般情況下都只使用一個X服務器,然而也可能會使用標准VGA模式的X服務器(如使 用XF86Setup時),因此一般配置文件中都至少有兩個Screen部分的定義,一個由標准VGA 的X服務器XF86_VGA16使用,在其中的Driver項中指定了vga16類型,另一個Screen 定義由支持更高模式的具備硬件加速能力的顯示卡X服務器使用,如XF86_S3V,Driver 項為accel類型。X服務器根據Driver項的設置來尋找正確的Screen部分設置參數。

        除了在Driver選項中指定了Screen選項與具體X服務器的聯系之外, 接下來的Device設置選項將指出這個Screen部分(也就是對應的X服務器)使 用哪個顯示設備,這個選項的值與設置文件前面定義的某一個Device部分中Identifier值相 同,這就將X服務器和指定的顯示設備相聯系起來(會存在多個定義顯示卡設備的Device部分) 。同樣,Monitor項將Screen部分與某個Monitor部分描述的顯示器相聯系。

        在一個Screen部分中也可以定義多個Display子部分,每個Display子 部分為對應一種色彩深度的顯示模式設置,顏色深度Depth可以使用的值有8位(256色) 、16位偽真彩色、24位真彩色和32位真彩色(實際只用了24位),DefaultColorDepth用 于設置缺省使用的色彩深度。X服務器不能動態切換顯示顏色深度,只能在同一個顏色深度下切換 不同的顯示模式。這個顏色深度下可供使用的分辨率模式需要使用Modes定義,缺省的分 辨率為第一個模式,然后可以使用熱鍵向前或向后切換。

        動態切換分辨率不影響應用程序的顯示,應用程序的顯示內容也不變,XFree86提供 了虛屏能力。虛屏提供了比實際屏幕更大的顯示范圍,例如使用800x600的顯示模式,虛屏的 大小可以是1024x768,這樣可以顯示更多的數據,實際屏幕之外的數據可隨鼠標的移動而顯示 出來。這樣在切換模式的時候,虛屏的大小卻不變,可以移動鼠標來查看應用程序切換到虛屏 之外的部分。缺省情況下,虛屏的大小為最大的分辨率模式,也可以使用Virtual參數 定義更大的虛屏。可設置的虛屏大小受顯示卡內存和所顯示的色彩深度限制,色彩深度和虛屏 大小的乘積不能超過顯示內存的大小。為了達到最佳效果,還有一些其他考慮。例如加速卡內 有自己的處理器進行圖形加速處理,就要使用一些顯存作為緩沖區,因此將所有的顯存都用做 虛屏會影響顯示卡的加速處理。

      未完,待續。。。  



 
  新浪首頁 > 科技時代 > FreeBSD使用大全連載 > FreeBSD連載(54):配置文件XF86Config


網站簡介 | 網站導航 | 廣告服務 | 中文閱讀 | 聯系方式 | 招聘信息 | 幫助信息

Copyright(C) 1999 SINA.com, Stone Rich Sight. All Rights Reserved

版權所有  四通利方 新浪網