FreeBSD系統中調整控制檯設定(轉)

BSDLite發表於2007-08-13
FreeBSD系統中調整控制檯設定(轉)[@more@]  在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目錄下,通常使用的字型有8x8大小、8x14大小和8x16大小,可以指定使用那些字型檔案作為系統使用的這些大小的字型。將這些字型檔案載入需要使用vidcontrol命令:

# vidcontrol -f 8x8 /usr/share/syscons/fonts/cp437-8x8.fnt

其中cp437指的是字型內碼表為437,這是英文編碼,中文編碼為Code Page 936(GB)。由於中文為雙位元組文字,控制檯驅動程式處理起來比較困難,還沒有對應中文編碼的控制檯字型檔案。

vidcontrol不僅用於載入字型檔案,還可以改變螢幕的模式,例如可以將螢幕更改為80x50大小:

# vidcontrol 80x50

  由於80x50模式需要使用8x8字型,因此這需要首先載入8x8字型。如果核心編譯時選擇了VESA支援選項,並且使用的顯示卡也相容VESA顯示模式,還可以將螢幕模式設定為132x60大小,充分利用計算機系統大螢幕顯示器的優勢。可以使用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配置行),再生成一個小於640x480,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.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-955340/,如需轉載,請註明出處,否則將追究法律責任。

相關文章