1 引言
GNU项目为嵌入式开发提供了优秀的交叉开发工具链,虽然这些工具链也移植到了 Windows系统中,但是为了在 Windows系统中使用,通常还需要另外一个模拟的 Linux环境——Cygwin,效率是一个新的问题。另外, Cygwin环境也不是一个真正的 Linux环境,相比于真正的 Linux环境来说, Cygwin仍显不足。从根本上来讲, GNU工具链是基于 Linux操作系统环境而开发的。
在众多的开源项目中,与嵌入式相关的开发项目大多数仍然需要基于 Linux系统进行编译和链接。虽然在 Cygwin中通过复杂的设置也有可能满足相关开发需要,但是对于开发人员来说,优先的选择仍然是使用 Linux。用惯了 Windows的程序员通常会在系统中安装一个庞大的 Linux虚拟机,或者直接安装两个操作系统。程序员必须忍受虚拟机的运行效率低下的重大缺点,或者为了切换操作系统而反复地重新启动安装了双操作系统的计算机。如果需要在 Linux与 Windows之间进行文件传递,还需要做一些额外的工作。
然而 coLinux的出现,改变了这一切。
2 coLinux简介
coLinux也是一个源代码开放的软件,全名为 Cooperative Linux(协作 Linux)。coLinux是第一个能在 Win32平台上高效地以原生(native)方式运行 Linux的软件, Linux在 coLinux中的运行效率极高,远远超过虚拟机的运行效率(为了模拟一条汇编指令,通常虚拟机要使用一段 C语言代码来完成)。 coLinux目前发展到了 0.73版本,在其官方网站 http://www.colinux.net上提供了最新版本的源代码和二进制代码的下载地址。
coLinux有很高的运行效率,并且仅需要很少的系统资源。 coLinux中的 Linux在本质上是直接在 PC机硬件中运行的,而不是在虚拟机上。coLinux不像虚拟机那样一次就从系统中划去一大块内存,而是根据实际需要让宿主机系统动态为其分配内存。
coLinux创建的是一个“真正的” Linux操作系统。相比之下, CygWin提供的是一个模拟的 Linux环境。Linux程序若不重新构建,就无法在 Cygwin中直接运行。
coLinux可以通过 cofs驱动使宿主机( Windows XP)与 Linux进行文件夹共享。通过简单的设置后,就可以把 Windows系统中的一个文件夹与 coLinux中的 Linux系统进行共享。在 Windows操作该文件夹中文件的时候,Linux也可以对其进行操作。
coLinux具有高可移植性的特点。在一个 Windows主机上建立一个 coLinux发行版,并在根文件系统中安装一套定制的应用程序。然后,可以将根文件系统转移到另一个主机上,并重新启动。这样就有了一个可移动的开发平台,压缩后的根文件系统完全可以放在一个标准的 USB盘中。
3 coLinux的工作原理
coLinux在 Windows操作系统中作为一个进程执行。可以认为 coLinux是 Linux操作系统与 Windows操作系统之间的一个接口。两种操作系统通过将处理器(CPU)的控制权转让给彼此从而达到协作(Cooperative)的目的。它们通过使用内核驱动程序共享网络接口、串口等物理资源。