混合 Windows 與 Linux 工作環境


xlivecd

如果您大部分時間在 Windows 下工作, 但偶爾需要用 linux (例如要用數理教學軟體 Dr. Geo), 可以考慮在 windows 這一頭 (X server 端; 不是應該叫做 client 嗎? ... 以後再解釋) 使用 XLiveCD。 這是免安裝版的 cygwin。 不過推薦改下載另外一片 「thaw-ms: 送自由入微軟帝國」 光碟, 這是我自己包的, 除了原本的 XLiveCD 之外, 裡面還包含一些 Windows 版的教育自由軟體。 至於 linux 伺服器那一頭, 裡面的 sshd 本來就會啟動, 不需要作額外的設定。 在 windows 這一頭, 燒好 thaw-ms 光碟後, 執行光碟上的 run.bat 一直等到出現一個黑底綠字的 xterm。 從這裡下指令: ssh ckhung@201.202.203.204 這裡當然要把 201.202.203.204 換成您的 linux 伺服器 ip, 把 ckhung 換成您在這部伺服器上的帳號。 登入後, 請試試看執行一些圖形介面軟體 (例如進 gnuplotsplot x*x-y*y) 看看圖形視窗是否丟回本機。 如果出現 "unable to open display, 可能要登出, 再重新連線一次, 這次改用 ssh -X ...

rdesktop

相反地, 如果您已習慣在 linux 下工作, 但偶爾還是被迫要回到 windows 底下, 可以考慮用 rdesktop。 它讓您可以從 linux 機器登入遠端的 windows 機器。 它採用的通訊協定是 Remote Desktop Protocol (RDP)。 首先要啟動 Windows NT Terminal Server 或 Windows 2000/2003 Terminal Services (聽說很簡單, 麻煩教我一下 ... :-) 然後從 Linux 端執行: rdesktop -u ckhung 204.203.202.201 這裡當然要把 ckhung 換成您在 windows 底下的帳號名稱, 並把 201.202.203.204 換成您的 windows 機器 ip

vnc

Virtual Network Computing 則可以讓您從任何一部 windows 或 linux 機器, 遠端登入另外一部 windows 或 linux 機器, 並看到完整的圖形桌面。 VNC 有好幾個版本, 這裡介紹的是 tightvnc。 雖然遠端傳 X 視窗 (例如使用 XLiveCD) 的 granularity 比較細 (可以每個視窗分開來傳), 但是 vnc 的速度卻比較快。 不僅如此, 它還可以當作廣播教學來用。

假設機房裡有一部 Linux 伺服器叫做 trantor.stu.edu.tw, 上面有許多帳號, 包含 amy, bob, cindy, 及老師 zorro; 而電腦教室裡面 amy 正在使用 pc01, bob 用 pc02, cindy 用 pc03, 老師用 pc00。 假設通通都跑 linux 好了。 Windows 應該沒什麼差別吧。 trantor 主機上面應該安裝 tightvnc 的 server; 而教室裡的每部 pc 應該安裝 tightvnc 的 viewer。

首先老師會分配給每位同學一個數字, 例如 amy 分配到 18, bob 分配到 75, cindy 分配到 41 等等。 於是 cindy 可以從 pc03 用 pietty 或 XLiveCD 的 xterm 裡面的 ssh 指令連線到 trantor, 並啟動屬於她自己的 vncserver 如下: vncserver :41 -geometry 800x600 這裡的 -geometry 800x600 用意在指定 (等一下才會看到的) 遠端桌面大小; 省略也沒關係。 於是 vnc 會要求您設定兩個密碼。 第一個密碼要回答兩次; 然後可以選擇不要 "view-only password" 它就不會問第二個密碼。 再從本地機 pc03 開另外一個終端機並打: vncviewer trantor.stu.edu.tw::5941 (注意: 兩個冒號!) 或更簡單的 vncviewer trantor.stu.edu.tw:41 (注意: 一個冒號!) 開始連線。 用剛才的第一個密碼 0p3r@t0r 登入, 就可以開始操作 trantor 的桌面, 彷彿是從 trantor 的圖形介面登入一樣。

用 vnc 啟動的桌面可能超級陽春, 甚至連視窗管理員都沒有。 這時需要手動啟動, 例如下: icewm &。 另外, 預設的終端機可能不支援中文。 建議開啟比較先進的終端機, 例如 konsole &gnome-terminal &。 中文輸入法也需要手工啟動。

下課前, 結束遠端工作, 要離開 vnc 時, 並不需要按照正常程序登出。 倒是應該把 trantor 上面的 vncserver 關掉, 以節省系統資源並減少暴露在網路環境下的危險。 先下 ps x | grep -i vnc 看看它的 pid 是多少, 例如是 12345 則用 kill 12345 把它停掉, 此時本地端的 vncviewer 視窗自然也就關掉。

vnc 常見問題集 (FAQ)

  1. 無法啟動 vncserver, 它說 "A VNC server is already running as :41"。 這是因為你自己或別人已經在使用 :41 。 請下 ps ux | grep -i vnc 查看自己有沒有在跑 vnc。 如果有一長串 vnc 指令, 那就不需要再在遠端的 trantor 啟動 vncserver, 直接從本地端的 pc03 啟動 vncviewer 即可; 如果沒有東西, 或只出現一句 grep, 那就只好另選一個數字重試啟動 vncserver。 (可以下 ps aux | grep -i vnc 看到別人的 vncviewer 佔據了那些數字。)
  2. 我要怎麼知道那些數字已經被佔用? 請下: ps ax | perl -ne 'print "$1\n" if /vnc.*?:(\d+)/' | sort -n
  3. 明明已經啟動 vncserver, 為什麼一直連線失敗? 請檢查一下 trantor 上的錯誤訊息檔 ~/.vnc/*.log
  4. 登入後為什麼一片空白? 可能因為你上次離開時, 沒有用 kill 的方式而是從選單選擇登出, 造成視窗管理員 (window manager) 掛掉了。 請從 pietty 連線裡面下指令檢查 pid 並用 kill 將 vncserver 停掉, 再重新啟動 vncserver。
  5. 第二次啟動 vncserver, 它就不問我密碼了。 還有機會改密碼嗎? 可以的。 刪除 ~/.vnc/passwd 下次它就會再問你。 或直接打 vncpasswd 改密碼。
  6. 聽說 vnc 可以用來廣播教學, 也可以讓遠方的朋友看到我的畫面? 是的, 這就是當初啟動 vncserver 時 (或是後來下 vncpasswd 修改密碼時) 所謂 "view-only password" 的意思。 如果有指定這個密碼, 就可以將這個密碼給學生或遠端的朋友, 他就可以連到你的 vncserver, 但只能看, 不能操作滑鼠鍵盤。 另外 iTALC 則是以 vnc 為基礎, 專門為廣播教學所設計的軟體。

其他方案

colinux, wine, ies4linux, Live USB, ...