跳轉到內容

Cygwin

25% developed
來自華夏公益教科書
Logo for Cygwin.
Cygwin 的標識。
Cygwin
POSIX for Windows

在體驗 X 之前

[編輯 | 編輯原始碼]

Cygwin/X 是透過使用標準 Cygwin 安裝程式從 X11 類別中選擇必要的軟體包來安裝的。不確定需要哪些軟體包的使用者應該安裝所有 X11 元件。

訪問本地 Cygwin 的 X

[編輯 | 編輯原始碼]

您可以本地執行 X 伺服器和視窗管理器,並獲得 X 視窗 GUI 環境。

您可以透過多種方式實現這一點。它們如下所示

多視窗模式

[編輯 | 編輯原始碼]

在多視窗模式下,有一個內部視窗管理器建立一個 Windows 視窗,以在 Windows 桌面上顯示 X 應用程式。

X 是指向 /usr/X11R6/bin/XWin 的軟連結(從 Windows 的角度來看是快捷方式)。

  1. 啟動 Cygwin
  2. 執行命令,X -multiwindow &。(Cygwin/X 窗口出現)
  3. 執行命令,export DISPLAY=127.0.0.1:0.0
  4. 執行命令,xclock &。(xclock 出現)。

現在您可以執行任何 X 應用程式。它們將在單獨的視窗中以獨立的視窗標題欄、標題按鈕和邊框開啟。在這種情況下,您不會獲得桌面環境。

startxwin.bat

[編輯 | 編輯原始碼]
  1. 從安裝 Cygwin 的 usr\X11R6\bin\ 資料夾執行 startxwin.bat。這可以透過雙擊批處理檔案來完成。它將彈出一個 xterm 視窗。如果您不想費心尋找此檔案,您只需執行 startxwin-multiwindow.bat 檔案,該檔案應該存在於您的桌面上。這兩個指令碼非常相似。
  2. 在 xterm 視窗中執行命令,xclock &。(xclock 出現)。

現在您可以執行任何 X 應用程式。它們將在單獨的視窗中以獨立的視窗標題欄、標題按鈕和邊框開啟。在這種情況下,您不會獲得桌面環境。

startxwin.sh

[編輯 | 編輯原始碼]
  1. 啟動 Cygwin(Bash Shell 出現)
  2. 執行命令,startxwin.sh &。它將彈出一個 xterm 視窗。
  3. 在 xterm 視窗中執行命令,xclock &。(xclock 出現)。

現在您可以執行任何 X 應用程式。它們將在單獨的視窗中以獨立的視窗標題欄、標題按鈕和邊框開啟。在這種情況下,您不會獲得桌面環境。

  1. 啟動 Cygwin(Bash Shell 出現)
  2. 執行命令,startx &。它將彈出一個 xterm 視窗。
  3. 在 xterm 視窗中執行命令,xclock &。(xclock 出現)。

現在您可以執行任何 X 應用程式。它們將在單獨的視窗中以獨立的視窗標題欄、標題按鈕和邊框開啟。在這種情況下,您不會獲得桌面環境。

外部本地視窗管理器

[編輯 | 編輯原始碼]

如果您希望完整的桌面環境,則必須執行視窗管理器或 Linux 桌面以將 GUI 傳送到您的 X 伺服器。本節將討論此主題。

X 是指向 /usr/X11R6/bin/XWin 的軟連結(從 Windows 的角度來看是快捷方式)。

  1. 啟動 Cygwin(Bash Shell 出現)
  2. 執行命令,X &。(Cygwin/X 窗口出現)
  3. 執行命令,export DISPLAY=127.0.0.1:0.0
  4. 執行命令,wmaker &
  5. 檢查您的 Cygwin/X 視窗。您獲得了桌面。 :-)

訪問遠端機器的 X

[編輯 | 編輯原始碼]

在下文中,我們將假設以下 IP 地址和使用者名稱:

  • remote_box - 遠端機器的 IP 地址或域名
  • my_system - 您的 Windows 系統的 IP 地址或域名
  • user_name - 遠端機器中的有效帳戶

X11 轉發

[編輯 | 編輯原始碼]

對於本節中描述的某些方法,應在遠端機器中啟用 X 轉發。這是否已啟用可以從遠端機器的 /etc/ssh/sshd_config 檔案中查閱。

如果存在一行 X11Forwarding yes,則表示已啟用 X11 轉發,您可以繼續執行以下步驟。

如果它為 X11Forwarding no,則表示已停用 X11 轉發。您可以編輯它以啟用它。當然,這隻能由“root”使用者完成。如果您需要啟用 X11 轉發但不是該機器的“root”使用者,則必須與管理員聯絡。

多視窗模式

[編輯 | 編輯原始碼]

在多視窗模式下,有一個內部視窗管理器建立一個 Windows 視窗,以在您的 Windows 桌面上顯示 X 應用程式。

X 是指向 /usr/X11R6/bin/XWin 目錄的軟連結(從 Windows 的角度來看是快捷方式)。

  1. 啟動 Cygwin(Bash Shell 出現)
  2. 執行命令,X -multiwindow &。(Cygwin/X 窗口出現)
  3. 執行命令,export DISPLAY=127.0.0.1:0.0
  4. 使用命令 ssh -X user_name@remote_box 登入到遠端機器
  5. 執行命令,xclock &。(xclock 出現)。

現在您可以執行遠端機器上的任何 X 應用程式。它們將在單獨的視窗中以獨立的視窗標題欄、標題按鈕和邊框開啟。在這種情況下,您不會獲得桌面環境。

要使上述方法起作用,必須在遠端機器中啟用X11 轉發

startxwin.bat

[編輯 | 編輯原始碼]
  1. 從安裝 Cygwin 的 `usr\X11R6\bin\` 資料夾中執行 `startxwin.bat`。可以透過雙擊批處理檔案來實現。這將彈出一個 xterm 視窗。如果您不想費心尋找這個檔案,可以直接執行桌面上的 `startxwin-multiwindow.bat` 檔案。這兩個指令碼完全相同。
  2. 執行命令 `xhost remote_box` 為執行在 Cygwin 上的 X 伺服器提供遠端機器訪問許可權。或者,您可以執行命令 `xhost +` 完全停用訪問控制,以便任何客戶端都可以連線到您的 X 伺服器。
  3. 使用命令 ssh -X user_name@remote_box 登入到遠端機器
  4. 在遠端機器上執行命令 `export DISPLAY=my_system:0.0`。
  5. 在 xterm 視窗中執行命令,xclock &。(xclock 出現)。

現在您可以執行遠端機器上的任何 X 應用程式。它們將在單獨的視窗中以獨立的視窗標題欄、標題按鈕和邊框開啟。在這種情況下,您不會獲得桌面環境。

如果遠端機器中啟用了 X11 轉發,您可以省略步驟 2 和步驟 4。

startxwin.sh

[編輯 | 編輯原始碼]
  1. 啟動 Cygwin(Bash Shell 出現)
  2. 執行命令,startxwin.sh &。它將彈出一個 xterm 視窗。
  3. 執行命令 `xhost remote_box` 為執行在 Cygwin 上的 X 伺服器提供遠端機器訪問許可權。或者,您可以執行命令 `xhost +` 完全停用訪問控制,以便任何客戶端都可以連線到您的 X 伺服器。
  4. 使用命令 ssh -X user_name@remote_box 登入到遠端機器
  5. 在遠端機器上執行命令 `export DISPLAY=my_system:0.0`。
  6. 在 xterm 視窗中執行命令,xclock &。(xclock 出現)。

現在您可以執行遠端機器上的任何 X 應用程式。它們將在單獨的視窗中以獨立的視窗標題欄、標題按鈕和邊框開啟。在這種情況下,您不會獲得桌面環境。

如果遠端機器中啟用了 X11 轉發,您可以省略步驟 3 和步驟 4。

  1. 啟動 Cygwin(Bash Shell 出現)
  2. 執行命令,startx &。它將彈出一個 xterm 視窗。
  3. 執行命令 `xhost remote_box` 為執行在 Cygwin 上的 X 伺服器提供遠端機器訪問許可權。或者,您可以執行命令 `xhost +` 完全停用訪問控制,以便任何客戶端都可以連線到您的 X 伺服器。
  4. 使用命令 ssh -X user_name@remote_box 登入到遠端機器
  5. 在遠端機器上執行命令 `export DISPLAY=my_system:0.0`。
  6. 在 xterm 視窗中執行命令,xclock &。(xclock 出現)。

現在您可以執行遠端機器上的任何 X 應用程式。它們將在單獨的視窗中以獨立的視窗標題欄、標題按鈕和邊框開啟。在這種情況下,您不會獲得桌面環境。

如果遠端機器中啟用了 X11 轉發,您可以省略步驟 3 和步驟 4。

  1. 開啟 PuTTY
  2. 從類別樹中選擇“會話”,然後輸入主機詳細資訊。
  3. 從類別樹中選擇“連線 > SSH > X11”,並選中“啟用 X11 轉發”複選框。
  4. 單擊“開啟”並登入。
  5. 在您的 Windows 機器上執行一個 X 伺服器。有多種方法可以做到。
    1. 開啟 Cygwin 並執行 `X -multiwindow &`。
    2. 從 Windows 執行 `startxwin.bat` 或開啟 Cygwin 並執行 `startx`、`startxwin.sh`。會開啟一個額外的 xterm,這可能很麻煩,因為您不需要它。(前兩步可以幫您省去這個步驟)。
  6. 返回到您的 PuTTY 視窗並執行命令 `xclock &`(xclock 會彈出來)。
  7. 檢視您的 Cygwin/X 視窗。(您已經獲得了桌面 :-))。

要使此方法有效,遠端機器中應啟用 X11 轉發,並且您應該使用 SSH 協議登入到遠端機器。

如果您想省去前四個步驟,只需將 PuTTY 目錄的路徑新增到 Windows PATH 環境變數中,或者只需將 PuTTY.exe 放到 Windows 目錄中即可。此後,您只需從任何位置執行命令 `putty -X user_name@remote_host`,然後繼續執行步驟 5。

外部遠端視窗管理器

[編輯 | 編輯原始碼]

如果您想要遠端機器的完整桌面環境,您需要在遠端機器上執行一個視窗管理器或 Linux 桌面,並將 X 輸出轉發到 Windows PC 的 X 伺服器,以便您可以在 X 伺服器上看到 GUI。本部分討論如何實現這一點。

X 是指向 /usr/X11R6/bin/XWin 目錄的軟連結(從 Windows 的角度來看是快捷方式)。

  1. 啟動 Cygwin(Bash Shell 出現)
  2. 執行命令,X &。(Cygwin/X 窗口出現)
  3. 執行命令,export DISPLAY=127.0.0.1:0.0
  4. 使用命令 ssh -X user_name@remote_box 登入到遠端機器
  5. 在機器上執行命令 `wmaker &`。
  6. 檢視您的 Cygwin/X 視窗。您已經獲得了遠端機器的桌面 :-)。

要使上述方法起作用,必須在遠端機器中啟用X11 轉發

  1. 開啟 PuTTY
  2. 從類別樹中選擇“會話”,然後輸入主機詳細資訊。
  3. 從類別樹中選擇“連線 > SSH > X11”,並選中“啟用 X11 轉發”複選框。
  4. 單擊“開啟”並登入。
  5. 執行命令 `X &` 在您的 Windows 系統上執行 Cygwin X 伺服器。
  6. 返回到您的 PuTTY 視窗並執行 `wmaker &`。
  7. 檢視您的 Cygwin/X 視窗。(您已經獲得了桌面 :-))。

要使此方法有效,遠端機器中應啟用 X11 轉發,並且您應該使用 SSH 協議登入到遠端機器。

如果您想省去前四個步驟,只需將 PuTTY 資料夾的路徑新增到 Windows PATH 環境變數中即可。此後,您只需從任何位置執行命令 `putty -X user_name@remote_host`,然後繼續執行步驟 5。

食譜:使用本地 Windows X 伺服器執行 X 應用程式(在遠端 UNIX 機器上)

[編輯 | 編輯原始碼]

- 安裝 Cygwin,包括 X11 客戶端和安全外殼 SSH。

- 透過單擊 Cygwin 圖示啟動 Cygwin Bash Shell。

- 啟動 X 伺服器(這將在 X 視窗中開啟另一個 Bash Shell)。

 $ /usr/X11R6/bin/startx

- 透過將遠端伺服器新增到訪問控制列表,允許遠端計算機 X 客戶端訪問您的本地計算機。

 $ xhost +RemoteServerName or IP Address

- 使用 ssh 訪問遠端計算機。系統將提示您輸入使用者名稱和密碼。

 $ ssh -X +RemoteServerName or IP Address

- 在遠端計算機上,以後臺模式執行要執行的程式。

 $ +ProgramYouWant &

Cygwin 提示

[編輯 | 編輯原始碼]
  • 將 Cygwin 安裝到預設目錄 `C:\cygwin\` 中,以保持一致性。您也可以將路徑設定得更長,例如,為了保留多個版本的 Cygwin。
  • 安裝時,選中 `cygrunsrv` 選項,以允許將 `sshd` 作為 Windows 服務執行。
  • 要使用 **rxvt** 作為首選控制檯,請建立一個 Windows 快捷方式,並將 **目標** 設定為 `C:\cygwin\bin\rxvt.exe --loginShell -sr`,並將 **起始位置** 設定為 `C:\cygwin\bin`。
  • 要放大控制檯視窗並新增標題,請將 `-geometry "80x50" -title Cygwin` 新增到 **目標** 中。
  • 要啟動 SSH 會話,請將 `-e ssh user@machine.name.com` 新增到 **目標** 中。
  • 要將預設主目錄更改為基於 NT 的 Windows(NT/2000/XP/2003/Vista)上的 `My Documents`,請建立一個名為 **HOME** 的環境變數,其值為 `C:\DOCUME~1\USERNAME\MYDOCU~1`(其中 `USERNAME` 是您的 Windows 登入使用者名稱)。
  • 建立一個名為 **SHELL** 的環境變數,其值為 `/bin/bash`。
  • 確保將 `c:\cygwin\bin;` 新增到 **Path** 環境變數中。
  • 要將 `cygdrive` 的字首從 `/cygdrive` 對映到 `/`,請執行一次以下命令:`mount -s --change-cygdrive-prefix /`
  • 或者保留 `cygdrive` 的原樣,併為每個驅動器建立對映(例如 `mount -u C: /C`)。
  • Emacsvi 是最流行的編輯器,但 Nano 最易於使用。
  • 在 **HOME** 目錄中建立一個名為 `.bash_profile` 的檔案,其中包含以下行。
    • alias dir='ls -lav—color=auto'
    • EDITOR=nano; export EDITOR
    • VISUAL=nano; export VISUAL
  • 要使用 `clear` 命令,請安裝 ncurses 包(位於 `lib` 類別中)。
[編輯 | 編輯原始碼]
華夏公益教科書