歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> BSD >> FreeBSD系統中調整控制台設置

FreeBSD系統中調整控制台設置

日期:2017/2/28 11:27:54   编辑:BSD


調整控制台設置
  控制台是個人用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程序直接訪問物理鼠標設備文件。
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_port="/dev/cuaa0" # Set to your mouse port.
moused_flags="-3" # Any additional flags to moused.
Copyright © Linux教程網 All Rights Reserved