coLinux構建嵌入式開發環境
1 引言
本文引用地址:http://www.j9360.com/article/150780.htmGNU項目為嵌入式開發提供了優秀的交叉開發工具鏈,雖然這些工具鏈也移植到了 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)的目的。它們通過使用內核驅動程序共享網絡接口、串口等物理資源。

coLinux是一個修改過的 Linux 內核,它可以與另一個操作系統協作運行。宿主機(host)操作系統控制本機的硬件資源,而訪客(guest)操作系統只得到本機硬件的虛擬抽象。主機操作系統提供了以特權級別(ring 0)執行驅動程序的方法,并提供了分配內存的方法。

Linux 內核所需的其他特性(比如網絡連接、串口或視頻訪問)通過外部代理來實現,
比如 coLinux 可以通過 TUNTAP驅動程序訪問外部網絡,通過代理訪問顯示器( X Window System)等。
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論