跳转到内容

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 [email protected]` 添加到 **目标** 中。
  • 要将默认主目录更改为基于 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` 类别中)。
[编辑 | 编辑源代码]
华夏公益教科书