IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Linux | Open source  >

用 coLinux 进行虚拟化

使用、安装和配置 Cooperative Linux

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

M. Tim Jones, 顾问工程师, Emulex

2007 年 5 月 21 日

目前,用 VmWare、Xen 和 Kernel-based Virtual Machine(KVM)进行虚拟化非常热门。但是,您是否知道也可以让 Linux® 与 Microsoft® Windows® 进行协作?本文讨论 Cooperative Linux(coLinux),首先简单介绍虚拟化,然后讨论 coLinux 采用的方式。您还会了解如何在 Windows 上设置并运行 coLinux。

在考虑 GNU/Linux 和 Microsoft Windows 时,协作可能是最后考虑的问题,但这正是 coLinux 内核的专长。对此没有信心吗?那就跳到 “coLinux 的优点” 一节。

coLinux 是 Linux 操作系统的一个端口,它在 Microsoft 操作系统中作为一个进程执行。两种操作系统通过将中央处理单元(CPU)的控制权转让给彼此而协作,如图 1 所示。


图 1. Microsoft Windows 和 Linux 在 coLinux 中协作
Microsoft Windows 和 Linux 在 coLinux 中协作

通过使用内核驱动程序,还可以共享网络接口等物理资源。后面会深入讨论这个问题。首先,我们来看看虚拟化的含义。

虚拟化

虚拟化领域
本文主要关注一种平台虚拟化的协作解决方案,但是虚拟化这个词也应用于其他技术。例如:
  • 在存储方面,可以将许多磁盘虚拟化,让它们看起来像一个存储池,这样就可以按需分配存储空间。
  • 还可以对网络进行虚拟化,但是这常常称为 分区(zoning)
  • OS 虚拟化,这是一种比较简单的虚拟化形式,它对一个操作系统上运行的服务器进行虚拟化。

虚拟化(Virtualization)是一个被滥用的词汇。在本文的上下文中,我指的是对平台进行虚拟化。对平台(或硬件)进行虚拟化意味着,硬件从物理平台抽象成一个逻辑平台集合,操作系统可以在这个逻辑平台集合上运行。按照最简单的意义,这意味着可以在同一硬件平台上运行(相同或不同类型的)多个操作系统。

提供虚拟化的系统元素常常被称为虚拟机监视器或管理器(hypervisor)。每个操作系统都使用自己的虚拟机,虚拟机与管理器协作,从而决定对物理硬件的访问(见图 2)。


图 2. 管理器决定对物理硬件的访问
管理器决定对物理硬件的访问

与操作系统相似,可用的虚拟化方法多种多样。关于虚拟化的更多信息,请参见 参考资料 一节。





回页首


coLinux

coLinux 是标准 Linux 内核的一个端口。换句话说,coLinux 就是一个 Linux 内核,它经过修改,以与另一个操作系统协作运行。主机操作系统(Windows 或 Linux)控制操作系统的物理资源,而访客(guest)操作系统(coLinux)获得硬件的虚拟抽象。主机操作系统必须提供以特权级别(ring 0)执行驱动程序的方法,并提供分配内存的方法(见图 3)。


图 3. coLinux 作为主机操作系统的一个进程执行
coLinux 作为主机操作系统的一个进程执行

coLinux 的根文件系统是主机操作系统中的一个常规文件。对于 Windows,它只是一个常规文件;但是对于 coLinux,它是一个可读可写的 ext3 文件系统。

Linux 内核所需的其他特性(比如连网或视频访问)通过外部代理来实现。coLinux 可以通过 TUN/TAP 驱动程序访问连网特性(在下面的 “连网” 一节中讨论)。简单地说,这个驱动程序提供对以太网设备的用户空间访问,这样就可以发送和接收数据包。对显示器的访问也要通过代理。X Window System 是一种协议,按照这种协议在主机之间发送视频输出。因此,通过在主机操作系统上使用 X Window System 服务器,可以将视频输出转发到可用的 X 服务器。

下面,我们就来安装 coLinux 并配置连网特性和视频显示。





回页首


安装 coLinux

安装 coLinux 非常容易。这包括几个步骤(具体取决于您的需要),但是这些步骤都很简单,而且在我的 Windows XP 机器上安装时没有出现任何问题。本节讨论如何安装 coLinux 并启用连网等服务。

第一步是下载 coLinux 发布版。访问 http://www.colinux.org 并在左侧栏中选择 Downloads。如果浏览器没有进入 SourceForge,那么选择页面上的链接。页面的中间有 coLinux-stable 包的链接。下载 coLinux 可执行文件(至编写本文时,最新版本是 coLinux-0.6.4.exe)。coLinux 的 0.6.4 版本是 2.6.11 Linux 内核。完成下载之后,双击这个文件开始安装。

在接受许可协议之后,询问您希望安装哪些组件。保持这些设置不变(应该选择了所有组件),包括下载根文件系统映像。为了使后面的操作更容易,将安装 coLinux 的目标文件夹改为 c:\colinux\,因为从配置文件的角度来看,colinux 是标准的安装子目录。

当安装程序要求选择根文件系统映像时,选择 Debian 发布版,因为它是最小的发布版,解压后只有 1GB。选择 Install 来执行安装和根文件系统下载。

安装完成之后,还有工作要做。下一步是在安装子目录中打开一个文件夹,以便对根文件系统进行解压。

coLinux 的 README 文件包含许多关于其他安装选项的信息。这个文件可以在安装子目录(c:\colinux)中找到。这里有一个以 .bz2 结尾的怪名字的文件。将这个文件重命名为 root_fs(这是配置中默认的根文件系统文件)。

现在,coLinux 的安装基本完成了。可以用以下命令在 Windows XP 中启动 coLinux 守护进程(通过命令提示窗口执行):

$ colinux-daemon.exe -c default.colinux.xml
            

在执行 colinux-daemon 之后,显示引导窗口(见图 4)。这里提供与传统 Linux 引导过程中相同的引导信息。注意,coLinux 的引导非常快。


图 4. coLinux 引导窗口
coLinux 引导窗口

还会显示一个控制台窗口(见图 5),它连接到 colinux-daemon。在这个窗口中,可以登录 coLinux 并与 shell 交互。默认的用户名和密码是 root/root


图 5. coLinux 虚拟控制台(shell)
coLinux 虚拟控制台(shell)

在图 5 中可以看到,coLinux 控制台由两个部分组成:传统的控制台和虚拟控制台,后者提供关于监视器的信息。

连网

从 Linux 的角度来看,当安装完成时,coLinux 的连网支持已经可用了。在安装过程中已经装载了 TAP 驱动程序。TAP 驱动程序是一个到主机操作系统所管理的以太网设备的用户空间连接。TAP 驱动程序使访客操作系统能够将原始以太网帧写到一个虚拟以太网设备(用户空间的扩展)。然后,用户空间中的虚拟以太网设备将以太网帧传递给主机操作系统中真实的以太网设备。读取的过程正好相反。注意,TAP 驱动程序传递的是以太网帧,而 TUP 驱动程序处理的是 Internet Protocol(IP)帧。

为了支持 TAP 驱动程序,主机操作系统必须共享可用的以太网设备。为了在 Windows XP 中启用共享,从 Control Panel 打开 Network Connections 面板。选择活动的局域连接,然后打开属性。选择 Advanced 选项卡,选中复选框允许其他网络用户通过此计算机的互联网连接来连接(见图 6)。


图 6. 启用网络设备共享的局域连接属性
启用网络设备共享的局域连接属性

启用网络共享之后,可以启动 coLinux 并像往常一样使用网络。图 7 显示执行 ping 命令的结果,这说明网络是正常的。


图 7. 通过使用 TAP 驱动程序,使用共享网络设备的过程对于 coLinux 是透明的
通过使用 TAP 驱动程序,使用共享网络设备的过程对于 coLinux 是透明的

只需稍加配置,coLinux 就可以提供连网特性。关于用 TUN/TAP 进行连网的更多信息,请参阅 参考资料 一节。

X Window System

有控制台窗口是很不错,但如果有图形化窗口管理器就更好了。通过使用开放源码的 X 服务器,比如 Xming,可以在 coLinux 上创建 xterms 或使用其他图形化应用程序。有许多可行的办法,比如 Virtual Network Computing(VNC),但是我将讲解如何使用 Xming。

第一步是 从 SourceForge 下载 Xming。安装之后,在安装子目录中有一个需要更新的文件,X0.hosts。它包含允许访问 X 服务器的远程主机。只需添加运行 coLinux 进程的机器的 IP 地址。启动 Xming X 服务器和 coLinux,然后在 coLinux 中执行以下命令:

colinux:~# export DISPLAY=192.168.1.3:0.0
colinux:~# xterm &
            

注意,这里指定的 IP 地址是 coLinux 主机的 IP 地址。在执行 xterm 命令之后,出现一个新的 xterm 窗口,见图 8。


图 8. Xming 创建的 xterm
Xming 创建的 xterm




回页首


扩展 coLinux

无论下载哪个根文件系统,它可能不包含您需要的所有东西。但是,可以轻松地扩展根文件系统。例如,在使用 Debian GNU/Linux 时,可以使用 Advanced Packaging Tool(APT,一个包管理系统)来安装新的包或更新现有的包。第一步是更新 APT 元数据,这些数据维护关于安装的包(包括新提供的包以及获得它们的位置)的管理信息:

$ apt-get update
            

现在,可以用您需要的其他包更新根文件系统。例如,如果希望在根文件系统中添加 Ruby 语言,那么可执行以下命令:

$ apt-get install ruby
            

按照这种方式,可以使用现有的根文件系统并根据自己的需要进行调整。如果 coLinux 缺少您需要的某些东西,还可以从源代码重新构建 coLinux。





回页首


coLinux 的优点

coLinux 是使用和试验 Linux 的一种好方法。与 Cygwin 相似,coLinux 允许在 Windows 操作系统上开发和执行 Linux 应用程序。还可以用 apt-get 安装、更新或删除应用程序,从而维护 Linux 操作系统。

与 Cygwin 不同的是,在 coLinux 上执行 Linux 应用程序不需要重新构建。从这个角度来说,coLinux 是与 Windows 操作系统协作的真正的 Linux 操作系统。

coLinux 另一个令人感兴趣的优点是可移植性。可以在一个 Windows 主机上建立一个 coLinux 发行版,并在根文件系统中安装一套定制的应用程序。然后,可以将根文件系统转移到另一个主机,并重新启动。这样就有了一个可移动的开发平台,压缩后的根文件系统完全可以放在一个标准 USB 记忆棒中。

最后,coLinux 的速度很快,因为它本质上是在本机硬件中运行的。





回页首


coLinux 的问题

coLinux 的主要缺点是它有可能导致整个机器崩溃(包括所有进行协作的操作系统),因为访客操作系统以特权模式在主机内核中运行。它的正常操作还依赖于外部软件(窗口和连网支持)。除此之外,coLinux 的安装和配置非常容易。在我使用 coLinux 期间,没有遇到过崩溃。





回页首


结束语

分享这篇文章……

digg 将这篇文章提交到 Digg
del.icio.us 发布到 del.icio.us
Slashdot 提交到 Slashdot!

尽管有许多虚拟化方案,但是 coLinux 采用的方式和提供的功能很新颖。coLinux 本身在 Windows 之上提供一个虚拟化的 Linux。再加上其他一些开放源码工具,就可以建立一个完全成熟的 Linux 开发系统,包括连网和图形用户界面。coLinux 并不完美,但它是在标准 Windows 桌面计算机上使用 Linux 的好方法。



参考资料

学习
  • 您可以参阅本文在 developerWorks 全球网站上的 英文原文

  • 虚拟 Linux:虚拟化方法、架构和实现概述”(developerWorks,2007 年 1 月)讨论虚拟化的历史以及 Linux 可用的各种虚拟化方法。

  • coLinux Web 站点介绍了 coLinux 开放源码代码当前的状况,帮助用户在 Windows 上运行 Linux 发行版。

  • coLinux wiki 提供关于 coLinux 的文档和其他参考资料。

  • Dan Aloni 的 Cooperative Linux(PDF)研究了 coLinux 实现的一些低层技术细节。

  • Amit Singh 所写的 “An Introduction to Virtualization” 介绍了虚拟化和各种实现方法。除了 Linux 之外,本文还讨论了其他操作系统虚拟化(Windows、Solaris)和其他虚拟化方法(比如网络堆栈虚拟化)。

  • TUN 和 TAP 是虚拟的网络内核设备。

  • Xen 是 XenSource 开发的一个开放源码虚拟机监视器(管理器)。Xen 使用 paravirtualization 技术,通常需要修改访客操作系统,但是 Xen 可以对 CPU 进行虚拟化来支持未修改的访客操作系统。

  • APT 是 Debian Linux 发行包提供的一个包管理系统。它是对系统进行更新的好工具。

  • developerWorks 中国网站 Linux 专区 上,寻找适合 Linux 开发人员的更多参考资料。

  • 随时关注 developerWorks 技术活动网络广播

获得产品和技术
  • 在 SourceForge 上可以找到最新的 coLinux 源代码和二进制代码

  • 从 SourceForge 获得最新的 TUN/TAP 驱动程序

  • KVM 是一种新的 Linux 虚拟化技术。它是一个内核模块解决方案,需要对 Linux 内核稍做改动并作为内核模块装载。KVM 提供访客操作系统的虚拟化,但是需要 QEMU 才能执行 I/O 操作。请阅读 introduction of KVM into the 2.6.20 kernel

  • Cygwin 是另一个在 Windows 上运行的 Linux 虚拟化工具。coLinux 可以使用 Cygwin 提供的 X 服务器功能。

  • Xming 是一种用于 Microsoft Windows 环境的开放源码 X 窗口服务器。

  • 获取免费的 SEK for Linux,这包括两张 DVD,其中包含来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的最新的 IBM Linux 试用软件。

  • 使用 IBM 试用版软件 构建您的下一个 Linux 开发项目,这些软件可以从 developerWorks 直接下载。


讨论


关于作者

M. Tim Jones

M. Tim Jones 是一名嵌入式软件工程师,他是 GNU/Linux Application ProgrammingAI Application Programming 以及 BSD Sockets Programming from a Multilanguage Perspective 等书的作者。他的工程背景非常广泛,从同步宇宙飞船的内核开发到嵌入式架构设计,再到网络协议的开发。Tim 是位于科罗拉多州 Longmont 的 Emulex Corp. 的一名顾问工程师。




对本文的评价










回页首


Linux 是 Linus Torvalds 在美国和/或其他国家的注册商标。 Microsoft、Windows、Windows NT 和 Windows 徽标是 Microsoft 公司在美国和/或其他国家的商标。 其他公司、产品或服务的名称可能是其他公司的商标或服务标志。

IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款