275
人物
FreeBSD調整控製台設置
在FreeBSD係統中,很多設置都需要直接更改設置文件,例如係統啟動腳本rc.conf,控製終端設置文 件/etc/ttys等。雖然大部分很多係統的參數可以通過安裝程序Sysinstall來設置,但是改動配置文件更 為直接。並且對於管理員來講,隻有了解配置文件是如何控製係統的表現,才能從根本上解決在實際操作中遇到的各種問題。
-
調整控製台設置
控製台是個人用FreeBSD係統使用者最常進行操作的位置,因此應該調整控製台設置,使其最適合使用者的習 慣。可以在控製台上調整顯示使用的字體、鍵盤映射、屏幕保護、虛擬終端等設置。其中一些設置可以通過安裝程序sysinstall 來進行,然而有的設置必須通過命令方式或更改配置文件來完成,而且命令行方式具有更大的靈活性。
- 虛擬終端與ttys設置
FreeBSD的控製台上有多個虛擬終端,可以在係統啟動之後使用Alt鍵加上功能鍵來切換虛擬終端。係統缺 省隻激活四個虛擬終端,這已經滿足絕大多數的需要。其中第四個虛擬終端在缺省情況下沒有運行登錄程序,這是因為X Server 運行時也需要一個虛擬終端,因此必須將一個沒有進程占據的控製台終端留給X Window使用。
而通過更改內核的設置,FreeBSD可以支持16個虛擬終端設備,由於通常個人計算機隻有F1-F12共12 個功能鍵,事實上隻能使用12個虛擬終端。其設備文件從ttyv0到ttyv15,可以使用MAKEDEV來創建這 些設備文件。為了增加虛擬終端的數量,除了更改內核設置、創建設備文件之外,還需要編輯係統文件/etc/ttys。 這個文件中有下麵的內容是與此相關的:
# name getty type status comments # # This entry needed for asking password when init goes to single-user mode # If you want to be asked for password, change "secure" to "insecure" here console none unknown off secure # ttyv0 "/usr/libexec/getty Pc" cons25 on secure ttyv1 "/usr/libexec/getty Pc" cons25 on secure ttyv2 "/usr/libexec/getty Pc" cons25 on secure ttyv3 "/usr/libexec/getty Pc" cons25 off secure |
ttyv3對應的行的第四列為 “off” ,這說明這個終端並沒有運行getty程序,不會出現登錄提示。 增加虛擬終端就意味著在這個文件中增加相應的設置行,例如要增加一個虛擬終端,就應該修改這個文件中的相應項為:
ttyv3 "/usr/libexec/getty Pc" cons25 on secure ttyv4 "/usr/libexec/getty Pc" cons25 off secure |
修改完這個文件之後需要重起係統,在內核支持的條件下,係統將增加一個虛擬終端。
如果用戶在控製台上運行了X Window,由於X Server也需要控製Alt加功能鍵這樣的組合鍵,因 此控製台將這類組合鍵留給X Window,不再使用它們來切換到其他虛擬終端。此時切換到其他虛擬終端的熱鍵為Ctrl 加Alt再加上相應功能鍵,而從其他虛擬終端切換回X Window仍然為Alt+功能鍵F4。這樣的方式甚至不 限於X Server,也適用於其他直接使用控製台、截留鍵盤的程序。
在/etc/ttys文件中,可以看到每個虛擬終端最後一個參數為 “secure” ,這表示這個終端位於 安全可信賴的物理位置上,因此在這個終端上可以允許直接使用root帳號登錄,如果將其改為 “insecure” ,那麼root用戶將不能在這個終端上直接登錄。由於控製台為係統最基本的終端設備,一般隻有管理員或其他可信賴的用 戶才能使用,因此對應於這些虛擬終端,設置都為 “secure” 。
這樣一旦控製台的物理安全受到危害,係統安全就受到嚴重的影響。正由於係統信賴控製台,當係統使用單用戶模式 啟動時,不會詢問root的口令,這個設置是由ttys文件中的console項來進行控製的,可以將ttys文件中 的console項中對應的 “secure” 改為 “insecure” ,就表示控製台是不能信賴的,那麼係統 在進入單用戶狀態時,將驗證root的口令。在控製台的物理訪問控製不能保證的情況下,這個設置雖然不能完全保證非法 使用者不能進入單用戶狀態並獲得係統的控製權,但提供了相當重要的保護能力。
ttys文件中,除了針對虛擬終端的設置之外,還對串行終端ttys0等,用於網絡連接的偽終端ttyp0等 ,提供了設置。要增加相應終端,與控製台虛擬終端類似,除了更改係統內核、設備文件之外,還需要在ttys文件為相應 設備提供入口。
- 控製台鍵盤設置
kbdcontrol命令就用於更改鍵盤設置,包括鍵盤的映射方式、擊鍵的重複率等,鍵盤的映射文件保存在 /usr/share/syscons/keymaps/目錄下,通常的標準101/102鍵盤可以使用us.iso.kbd文件。以下例子中使用 “-l” 參數指定鍵盤映射文件,使用 “-r” 參數指定鍵盤速度。
# kbdcontrol -l /usr/share/syscons/keymaps/us.iso.kbd # kbdcontrol -r fast |
除了可以用fast來表示鍵盤速度之外,還可以精確指定鍵盤擊鍵的間隔和重複時間,例如fast模式就等同於 250.34,表示擊鍵間隔為250ms,重複時間為34ms,normal模式對應於500.126,slow對應 於1000.504。
指定鍵盤映射文件的好處是可以自己定義鍵盤的映射方式,例如可以使用更改鍵盤配置文件的方法來屏蔽Ctrl-Alt-Del 熱鍵,就可以使用編輯器打開us.iso.kbd文件,將Ctrl-Alt-Del對應的功能由boo t改為nop,表示輸入這個擊鍵序列時不進行任何操作。或者可以為boot功能定義其他組合鍵。
- 控製台顯示設置
控製台的字體文件均保存在/usr/share/syscons/fonts目錄下,通常使用的字體有8×8大小、8×14大小和8×16大 小,可以指定使用那些字體文件作為係統使用的這些大小的字體。將這些字體文件載入需要使用vidcontrol命令:
# vidcontrol -f 8x8 /usr/share/syscons/fonts/cp437-8x8.fnt |
其中cp437指的是字體代碼頁為437,這是英文編碼,中文編碼為Code Page 936(GB)。由於中文為雙字節文字,控 製台驅動程序處理起來比較困難,還沒有對應中文編碼的控製台字體文件。
vidcontrol不僅用於載入字體文件,還可以改變屏幕的模式,例如可以將屏幕更改為80×50大小:
# vidcontrol 80x50 |
由於80×50模式需要使用8×8字體,因此這需要首先載入8×8字體。如果內核編譯時選擇了VESA支持選 項,並且使用的顯示卡也兼容VESA顯示模式,還可以將屏幕模式設置為132×60大小,充分利用計算機係統大屏幕顯 示器的優勢。可以使用vidcontrol -i mode來查看當前硬件支持的顯示模式。由於不同的顯示模式使用的 不同大小的字體,必須載入必要大小的字體才能改換到相應模式下。
vidcontrol還可以用於設置控製台下激活屏幕保護的時間間隔,使用 “-t” 參數指定激活時間。
而控製台屏幕保護則是通過一個載入可加載模塊的方式設置的,在/modules目錄中已經安裝了幾個不同的屏 幕保護模塊,如black_saver_mod.ko、green_saver_mod.ko、daemon_saver_mod.ko、logo_saver_mod.ko等,這些 模塊可以使用kldload命令載入內存,kldstat查看各個內核模塊的狀態,或者kldunload命令將其卸載。載入不同的 屏幕保護模塊,就將激活不同的屏幕保 護。在係統啟動時Boot Loader的提示下,可以使用load命令載入模塊,也可以通過Boot Loader 的資源文件/boot/loader.rc,用於指定在啟動時應該自動執行那些操作。
通常,可以使用logo_saver_mod作屏幕保護,這是一個FreeBSD吉祥物的圖標。
在FreeBSD 3.0-Release之前,FreeBSD使用/lkm目錄下,後綴為.o的可加載模塊 ,而管理模塊的命令相應為modload、modstat和modunload。這些模塊為a.out格式內核使用的 可加載模塊,而.ko為ELF內核使用的模塊。使用那種格式的內核,就應該載入那種格式的可加載模塊,3.1之後如果 仍然使用a.out格式的內核,也可以仍然使用這些模塊。
在3.1-Release之後,FreeBSD引入了係統啟動時顯示啟動圖標的能力,如同Windows係統 在啟動時顯示藍天白雲圖案一樣,FreeBSD係統也能夠在啟動時顯示一個預設的圖像文件,而啟動時產生的檢測信息隱 藏在圖象後麵,這個功能稱為splash。這個係統啟動標誌是和新版本的控製台屏幕保護能力是緊密相結合的,當載入這 個splash模塊而使得啟動顯示相應的圖標之後,每當空閑時間到達而屏幕保護被激活時,就會顯示這個圖像作為屏幕保 護。
為了設置啟動標誌及其屏幕保護,首先要內核支持splash偽設備(需要pseudo-device splash配置行),再 生成一個小於640×480,256色的非壓縮的bmp圖象文件,然後將其複製到/boot目錄下,更改/boot目錄下的loader.rc文 件,設置boot loader載入處理圖象文件的模塊splash_bmp。
# cp logo.bmp /boot # cat /boot/loader.rc load kernel load -t splash_image_data logo.bmp load splash_bmp |
這也是使用boot loader的資源文件loader.rc的一個例子,可以定製這個資源文件,指定boot loader自 動載入相關模塊,以及執行其他boot loader的命令。
- 控製台鼠標設置
FreeBSD使用一個守護進程moused來接管對鼠標的控製,它可以通過sysinstall很方便的進 行設置。moused就能將鼠標的輸入傳遞給控製台驅動程序,這樣就可以在文本狀態下使用鼠標進行操作,例如在普通情 況下可以進行粘貼操作,在應用程序支持的條件下,還能和應用程序進行交互。缺省條件下僅有第一個虛擬控製台支持這種鼠 標操作,在這個控製台上使用 “vidcontrol -m off” 就能關閉鼠標指針,禁止這種操作,以後仍然可 以使用 “vidcontrol -m on” 許可鼠標的操作能力。
係統缺省隻在第一個控製台虛擬終端設備上打開鼠標指針,因此為了在其他虛擬終端上使用鼠標,必須在相應的控製 台上使用vidcontrol -m on命令。
執行moused,必須要指定鼠標連接的端口和類型,這樣moused才能和鼠標通信。常用的鼠標有連接到串 口的鼠標,它使用的設備為串口設備/dev/cuaa0(串口1)或/dev/cuaa1(串口2),如果使用ps/2接口的鼠標,使 用的設備為/dev/psm0,如果使用總線類型接口的鼠標,使用的設備為/dev/mse0。為了 使用相應的端口,首先要保證相應的設備被內核正確探測,這可以使用dmesg來查看係統的硬件檢測信息,檢查設備驅動 sio0,sio1(串口設備),psm0,或者mse0等是否被內核檢測到。然後就能啟動moused了:
# vidcontrol -m on # moused -p /dev/cuaa0 -t auto |
使用auto作為鼠標類型的參數,讓moused來決定鼠標使用的協議,一般情況下moused能夠偵測出正 確的協議。一般ps/2鼠標使用ps/2協議,普通總線鼠標使用busmouse協議,串口鼠標使用的協議類型較多, 通常標記為MS-2key兩鍵的鼠標使用microsoft協議,PC-3key三鍵鼠標使用mouse syste m協議,此外還有intellimouse等不同的協議。
由於Unix下習慣使用三鍵鼠標進行操作,因此個人計算機上常用的兩鍵鼠標就有些不合適,此時可以使用同時按 下左右兩鍵來模擬第三個鍵,對於moused,這需要使用參數 “-3” 支持,這是全屏幕的moused設置程序不 能進行設置的。moused還能更改鼠標的另一些屬性,例如滾動速度、點按速度等。
此外在使用了moused之後,moused將維護一個偽設備文件/dev/sysmouse,這個設備文件 行為就如同一個鼠標端口設備,能被其他要使用鼠標的程序,如X Server所使用,簡化了這些程序的設置任務。
一些Linux二進製格式的程序與這個設備文件不兼容,如果需要使用Linux的訪問鼠標的應用程序,如X Server,就不能使用moused,而要讓Linux程序直接訪問物理鼠標設備文件。
如果要保留這些鍵盤、顯示、鼠標設置,就需要更改係統啟動配置文件rc.conf中的相關參數設置,這樣每次 啟動係統將自動使用必要的命令載入正確的設置,以下為與這些設置相關的項,這些項均被被作為參數傳遞給上述的設置命令 ,因此需要根據具體設置更改下列選項。
keymap="NO" # keymap in /usr/share/syscons/keymaps/* (or NO). keyrate="NO" # keyboard rate to: slow, normal, fast (or NO). keybell="NO" # bell to duration.pitch or normal or visual (or NO). keychange="NO" # function keys default values (or NO). cursor="NO" # cursor type {normal|blink|destructive} (or NO). scrnmap="NO" # screen map in /usr/share/syscons/scrnmaps/* (or NO). font8x16="NO" # font 8x16 from /usr/share/syscons/fonts/* (or NO). font8x14="NO" # font 8x14 from /usr/share/syscons/fonts/* (or NO). font8x8="NO" # font 8x8 from /usr/share/syscons/fonts/* (or NO). blanktime="NO" # blank time (in seconds) or "NO" to turn it off. saver="NO" # screen saver: blank/daemon/green/snake/star/logo/NO. moused_enable="NO" # Run the mouse daemon. moused_type="auto" # See man page for rc.conf(5) for available settings. moused_port="/dev/cuaa0" # Set to your mouse port. moused_flags="-3" # Any additional flags to moused. |
最後更新:2017-01-04 22:34:37