doc/zh/FAQ/x.sgml
Vanilla I. Shu 80b2078094 This is the Chinese FAQ.
Some part have not finish yet.
1999-01-30 23:20:34 +00:00

336 lines
12 KiB
Text

<!-- $Id: x.sgml,v 1.1.1.1 1999-01-30 23:20:34 vanilla Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!-- Translate into Chinese by ijliao@dragon2.net -->
<!-- English Version: 1.6 -->
<sect>
<heading>X Window System 及 Virtual Consoles<label id="x"></heading>
<sect1>
<heading>我想要執行 X , 我該怎麼做 ?</heading>
<p>最簡單的方法就是在安裝系統的時候一併安裝。
<p>然後看看 <htmlurl url=
"http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xf86config"
name="xf86config 的 man page"> , 這個程式可以幫你設定 XFree86(tm) 使它
能夠使用你的顯示卡/滑鼠 等週邊。
<p>你或許也想試試看 Xaccel server , 它可以以非常合理價格取得。詳情請看
<ref id="xig" name="Xi Graphics"> 這一段。
<sect1>
<heading>為什麼我不能在 X 裡使用滑鼠 ?<label id="x-and-moused"></heading>
<p>如果你用的是 syscons (內定的 console 驅動程式) 的話, 你可以經由設定
FreeBSD 來讓它支援在每個 virtual console 使用滑鼠。為了避免和 X 產生衝
突, syscons 使用了一個叫做 "<tt>/dev/sysmouse</tt>" 的虛擬裝置。所有滑
鼠產生的 event 都會利用 MouseSystems 這個協定來傳到 sysmouse 這個裝置
。如果你希望在一個或以上的 virtual console 上使用滑鼠, <bf/並且/ 能夠
使用 X 的話, 我們建議你這樣設定 :
<verb>
/etc/rc.conf:
moused_type=ps/2 # or whatever your actual type is
moused_port=/dev/psm0 # or whatever your real port is
moused_flags=
/etc/XF86Config
Section Pointer
Protocol "MouseSystems"
Device "/dev/sysmouse"
.....
</verb>
<p>有些人比較喜歡在設定 X 的時候用 "<tt>/dev/mouse</tt>" 這個裝置。如
果你要讓它能夠正常工作的話, 你就必須把 "<tt>/dev/mouse</tt>" 連結到
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?sysmouse"
name="/dev/sysmouse"> :
<verb>
# cd /dev
# rm -f mouse
# ln -s sysmouse mouse
</verb>
<sect1>
<heading>X Window 的選單和對話框不能正常運作 !</heading>
<p>把 Num Lock 關掉試試。
<p>如果你的 Num Lock 在開機時的預設值是開著的話, 你必須把下列這行放到
<tt/XF86Config/ 設定檔中的 "<tt/Keyboard/" 部份。
<verb>
# Let the server do the NumLock processing. This should only be
# required when using pre-R6 clients
ServerNumLock
</verb>
<sect1>
<heading>什麼是 virtual console ? 我要怎麼做才能用多一點 ?</heading>
<p>簡單來說, virtual console 就是可以讓你不必做太多複雜的設定如使用網
路或執行 X , 而在同一臺機器上同時做好幾件事的方法。
<p>當啟動系統並顯示完所有開機訊息之後, 你就會在螢幕上看到一個 login 的
提示符號。在這個時候你就可以輸入你的 login name 以及 password , 然後就
可以在第一個 virtual console 上開始工作了 (或者開始玩 !) 。
<p>在某些情況下, 你可能會想要作其他的工作, 例如說是看看你正在執行的程
式的說明文件, 或是當你在 FTP 傳輸的等待時間中看看你的郵件。你只需要按
Alt-F2 (按住 Alt 鍵不放, 並按下 F2 鍵) , 然後你就會在第二個 "virtual
console" 上看到一個 login 提示符號 ! 當你想要回到原來的工作時, 請按
Alt-F1。
<p>FreeBSD 在安裝時的預設值是使用三個 virtual console , 你可以用
Alt-F1, Alt-F2, 以及 Alt-F3 在它們之間做切換。
如果你想要多一點 virtual console 的話, 你只需要編輯 <htmlurl
url="http://www.freebsd.org/cgi/man.cgi?ttys" name="/etc/ttys"> 這個檔
, 在 "Virtual terminals" 這個註解後面加入 "<tt/ttyv4/" 到 "<tt/ttyvc/"
的欄位 :
<verb>
# Edit the existing entry for ttyv3 in /etc/ttys and change
# "off" to "on".
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
ttyv8 "/usr/libexec/getty Pc" cons25 on secure
ttyv9 "/usr/libexec/getty Pc" cons25 on secure
ttyva "/usr/libexec/getty Pc" cons25 on secure
ttyvb "/usr/libexec/getty Pc" cons25 on secure
</verb>
<p>你想用幾個就設幾個。你設越多 virtual terminal , 它們就用掉越多系統
資源 ; 如果你只有不到 8MB 的記憶體的話, 這影響就大了。你可能也會想把
"<tt/secure/" 換成 "<tt/insecure/" 。
<p><bf/IMPORTANT NOTE/ 如果你想要執行 X 的話, 你 <bf/必須/ 為它保留 (
或關掉) 至少一個 virtual terminal 。這就是說, 如果你想在按十二個 Alt
功能鍵時都有 login 提示符號, 而且又在同一部電腦上也想執行 X 的話, 那麼
這真是太不幸了 - 你只能用十一個。
<p>取消一個 console 最簡單的方法就是把它關掉。舉例來說, 如果你像上面講
的一樣設定了全部的 12 個 terminal 並且想要執行 X , 你必需把 virtual
terminal 12 從 :
<verb>
ttyvb "/usr/libexec/getty Pc" cons25 on secure
</verb>
<p>設成 :
<verb>
ttyvb "/usr/libexec/getty Pc" cons25 off secure
</verb>
<p>如果你的鍵盤只有 10 個功能鍵的話, 你就要改成這樣 :
<verb>
ttyv9 "/usr/libexec/getty Pc" cons25 off secure
ttyva "/usr/libexec/getty Pc" cons25 off secure
ttyvb "/usr/libexec/getty Pc" cons25 off secure
</verb>
<p>(你也可以直接把這幾行砍掉。)
<p>一旦你改了 <htmlurl
url="http://www.freebsd.org/cgi/man.cgi?ttys" name="/etc/ttys"> ,
下一個步驟就是要確定你有足夠的 virtual terminal 裝置。最簡單的方法就是 :
<verb>
# cd /dev
# ./MAKEDEV vty12 # For 12 devices
</verb>
<p>再過來, 想要啟動這些 virtual console 最簡單 (也是最乾淨) 的做法就是
重開機。然後, 如果你不想重開機的話, 你可以把 X Window 關掉, 然後用
<tt/root/ 的身份執行下列指令 :
<verb>
kill -HUP 1
</verb>
<p>當你執行這個命令前, 你一定要完全把 X Window 關掉。如果你不這麼做的
話, 你的系統可能會在你執行 kill 命令後出現當掉或鎖死的情況。
<sect1>
<heading>我要怎麼從 X 切換到 virtual console ?</heading>
<p>如果你螢幕上正在顯示 X Window 的話, 你可以用 Ctrl-Alt-F1 等按鍵來切
換到 virtual console 。注意, 一旦你從 X Window 切換到任一個 virtual
console 之後, 你就可以只用 Alt- 功能鍵來切換到其他 virtual terminal 或
是切回 X Window 。你不必同時按著 Ctrl 鍵。如果在比較舊的版本中你用
Ctrl 鍵來切回 X Window 的話, 你會發現你的文字螢幕被卡在 "control-lock"
模式下。你只需要再按一次控制鍵就可以恢復原狀。
<sect1>
<heading>我要怎麼做才能在開機時啟動 XDM ?</heading>
<p>有兩種方法可以啟動 <htmlurl url=
"http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xdm"
name="xdm"> 。一種方法是從
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?ttys"
name="/etc/ttys"> 來啟動, 可以參考 man page 中的範例 ; 另一種方法是在
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?rc" name="rc.local">
執行 xdm , 或是在 <tt>/usr/local/etc/rc.d</tt> 放一個 <tt/X.sh/ 。這兩
種方法都是合法的, 如果你試某一種方法無效的話, 你可以試試另外一種。這兩
種方法的結果是一樣的 : X 會顯示一個圖形化的 login: 提示。
<p>用 ttys 的方法的優點在於說明了 X 在啟動以及在 logout 後重新啟動時,
到底 X 用的是那個 vty 。而 rc.local 的方法則是在當啟動 X 出了問題時, 你
可以把 xdm 殺掉來解決。
<p>如果是用 rc.local 的方法的話, 在執行 <tt/xdm/ 時你不能加任何參數 (
也就是跑成 daemon) 。
<p>前一版的 FAQ 說你必須把你想讓 X 使用的 <tt/vt/ 加到
<tt>/usr/X11R6/lib/X11/xdm/Xservers</tt> 檔裡去。這是不必要的 : X 會自
動使用第一個找到的可用 <tt/vt/ 。
<sect1>
<heading>當我執行 xconsole 時, 發生了 "Couldn't open console" 的錯誤</heading>
<p>如果你是用 <htmlurl
url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=startx"
name="startx"> 來啟動 <htmlurl
url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=X"
name="X"> 的話, /dev/console 的權限並不會改變, 結果就是 <htmlurl
url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xterm"
name="xterm -C"> 和 <htmlurl url=
"http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xconsole"
name="xconsole"> 這類的程式無法正常執行。
<p>這一切的問題, 都是因為 console 的權限是採用系統預設值。在一個多使用
者的系統裡, 我們不希望每個使用者都可以直接寫入系統 console 。如果是使
用者是從機器的 VTY 直接 login 的話, 那麼
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?fbtab" name="fbtab">
可以解決這類的問題。
<p>簡單地說, 請確保
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?fbtab(5)"
name="/etc/fbtab"> 這個檔案中的這一行沒有被註解掉 :
<verb>
/dev/ttyv0 0600 /dev/console
</verb>
這一行設定的存在可以確保從 <tt>/dev/ttyv0</tt> 登入的使用者可以控制
console 。
<sect1>
<heading>我的 PS/2 滑鼠在 X 中有點不正常</heading>
<p>你的滑鼠和你的滑鼠驅動程式可能存在有不同步的現象。
<p>在 2.2.5 以及更早的系統裡, 從 X 切到 virtual terminal 然後再切回來
就可以使它們重新做同步的動作。如果這個問題常常發生的話, 你可以在你的
核心設定檔中加入下面這個選項然後重新編譯 :
<verb>
options PSM_CHECKSYNC
</verb>
<p>如果你沒有建立核心的經驗, 請看
<ref id="make-kernel" name="建立核心"> 這一節。
<p>加上這個選項以後, 滑鼠和滑鼠驅動程式間的同步問題應該就比較不會出現
了。如果這個問題仍然存在的話, 在移動滑鼠時按按滑鼠按鍵可以使滑鼠和滑
鼠驅動程式重新做同步的動作。
<p>該注意的是這個選項並不是對每一個系統都有效, 它可能會讓接在 PS/2 滑
鼠位置的 ALPS GlidePoint 裝置失去 "tap" 這項功能。
<p>在 2.2.6 及其後的版本, 同步的確認已經有了較好的解決辦法, 而且這些都
已經是 PS/2 滑鼠驅動程式的標準了。這個方法也可以在 GlidePoint 上正常工
作。 (因為確認的程式碼已經成為一個標準功能, 所以在這些版本中我們不在提
供 PSM_CHECKSYNC 的選項了。) 不過在極少數的案例中, 這些驅動程式會誤報
同步性錯誤, 然後你就會看到這樣的核心訊息 :
<verb>
psmintr: out of sync (xxxx != yyyy)
</verb>
然後你就會發現你的滑鼠不能正常運作了。
<p>如果你發生了這樣的狀況, 你必須藉由把 PS/2 滑鼠驅動程式的 flag 設成
0x100 來把同步確認的程式碼給取消掉。然後在開機提示符號時用
"<tt>-c</tt>" 選項來進入 <em>UserConfig</em> :
<verb>
boot: -c
</verb>
然後, 在 <em>UserConfig</em> 的命令列中鍵入 :
<verb>
UserConfig> flags psm0 0x100
UserConfig> quit
</verb>
<sect1>
<heading>我的 PS/2 滑鼠不能透過 MouseSystem 來運作</heading>
<p>有一些報告指出某些廠牌的 PS/2 滑鼠只能在 "高解析度" 狀態下才能運作
。如果不是的話, 滑鼠游標會常常跑到螢幕的左上角去。
<p>非常不幸的, 這個問題在 2.0.X 和 2.1.X 下是無解的。在 2.2 到 2.2.5
版, 你可以對 <tt>/sys/i386/isa/psm.c</tt> 使用下列 patch 然後重建你的
核心。如果你沒有建立核心的經驗, 請看
<ref id="make-kernel" name="building a kernel"> 這節。
<verb>
diff -u psm.c.orig psm.c
@@ -766,6 +766,8 @@
if (verbose >= 2)
log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n",
unit, i);
+ set_mouse_resolution(sc->kbdc, PSMD_RES_HIGH);
+
#if 0
set_mouse_scaling(sc->kbdc); /* 1:1 scaling */
set_mouse_mode(sc->kbdc); /* stream mode */
</verb>
<p>在 2.2.6 及以後的版本, 在 PS/2 滑鼠驅動程式中設定 0x04 的 flag 會
把滑鼠設成高解析度模式。在開機提示符號時用 "<tt>-c</tt>" 選項來進入
<em>UserConfig</em> :
<verb>
boot: -c
</verb>
然後, 在 <em>UserConfig</em> 的命令列中鍵入 :
<verb>
UserConfig> flags psm0 0x04
UserConfig> quit
</verb>
<p>前一節有提到另一個可能導致滑鼠問題的原因。
<sect1>
<heading>當我建立 X 程式時, <tt/imake/ 說它找不到 <tt/Imake.tmpl/ 。它在那 ?
</heading>
<p>Imake.tmpl 是 Imake 套件的一部份, Imake 是標準的建立 X 程式的工具。
Imake.tmpl 和其他數個 header file 一樣是建立 X 程式的必要檔案, 你可以在
X prog distribution 中找到它們。你可以用 sysinstall 來安裝或是直接從
X distribution 中手動安裝。
</sect1>
<sect1>
<heading>我要怎麼做才能設定左撇子用的滑鼠 ?
</heading>
<p>在你的 .xinitrc 或是 .xsession 中執行
<tt/ xmodmap -e "pointer = 3 2 1"/ 的指令。
</p>
</sect1>
</sect>