coLinux 介紹與應用
1. coLinux 簡介 Cooperative Linux, 簡稱 coLinux, 是一種對 Linux kernel 的移植, 讓一台機器可以協同運作不同的作業系統. coLinux 的前身 UMLWin32 最早是由 Dan Aloni 在 2000 年所開發, 當時的目的是為了將 User Mode Linux 移植到 Cygwin 上. 在 2003 年時, Dan Aloni 運用了不同以往的想法與做法, 於是, 便產生了 coLinux. coLinux 不同於 VMware 等模擬器, coLinux 本身並不是模擬一台PC, 而是透過它本身的特殊設計, 讓在其中運作的 Linux kernel 直接使用 Windows 的硬體資源. 因此, 對大部份的使用者來說, coLinux 本身的速度與真實機器的速度相差無幾. 更重要的是, coLinux 是完全免費的. (GPL2) 3. coLinux 功能 A. 現有功能 B. 未來功能 4. 安裝 coLinux coLinux 目前最新的版本是 0.6.2 版, 可以到 coLinux Download 區選取下載或者直接下載 coLinux 0.6.2. 安裝過程如下: 5. coLinux 基本設定 coLinux 的所有基本設定, 都可以在 xml 設定檔中定義. 底下以 coLinux 預附的 default.colinux.xml 來說明設定檔中, 各項參數的意義. coLinux 是使用它特有的 device (cobd), 這裡是在定義 /dev/cobd0 與 /dev/cobd1. cobd0 指向 c:\coLinux\root_fs, cobd1 則指向 c:\coLinux\swap_device. 在這裡, 這兩個 device 都是 image file. coLinux 下預設的 boot image 是 cobd0, 而預設的 swap 則是 cobd1. 這是用來設定 linux kernel 開機時所需傳遞的參數. 參數設定的方法與 grub 及 lilo 相同. 這是指定用來做為 initrd 的 image file. coLinux 本身有它自己專門的 initrd. 這是指定用來開機的 linux kernel image. 預設是使用 coLinux 附的 kernel image. 這是分配給 coLinux 的記憶體大小, 如果只有跑 linux console, 至少需 64MB, 如果有執行 X, 則最好能配置 128MB 以上. 這是 coLinux 所要使用的網路型態, 有 TAP 與 Bridged 兩種. 以上是基本設定, 其他進階設定, 請參照 coLinux 官方文件. 6. 執行 coLinux 當所有的設定都沒問題時, 就可以執行 coLinux .coLinux 有兩種執行方法, 透過 Command-Line 或透過 System Service. 底下分別說明兩種方式的不同. 7. coLinux 下的網路 A. TAP 在 TAP 模式下, coLinux 是透過 TAP Driver 與 ICS(Internet Connection Sharing)的方式來使用 Windows 的網路. 這時, Windows 的 ip 預設為 192.168.0.1, 而 coLinux 的預設 ip 則通常為 192.168.0.2. 要順利使用 TAP 模式, 有幾個動作要先完成. 順利完成以上動作後, coLinux 執行後, TAP 就會正常運作. B. Bridged 若要使用 Bridged 模式, 設定檔中網路的部份要改成 coLinux 所偵測到的網路卡則應該是 "Realtek RTL8139/810x Family Fast Ethernet NIC". 8. 在 coLinux 上運行 Fedora - 使用 Image File 如果想要在 Windows 上, 透過 coLinux 來運行一個全新的 Fedora, 使用 image file 是個不錯的方式. 首先, 必須先下載安裝 coLinux, 方法如上. 另外, 還需要下載 Fedora 的 image file. coLinux 官方附的是 Fedora Core 1 的 image, 這個 image 可以使用在 linux 2.4.x 與 linux 2.6.x 上. 另外, 如果想使用 linux swap, 可以下載預先製作好的 Swap Image. 底下是 coLinux 使用 Fedora 的設定檔範例: <?xml version="1.0" encoding="UTF-8?> 有幾點要注意. 9. 在 coLinux 上運行 Fedora - 使用 Native Partition 如果已經在電腦中將 Fedora 安裝在單獨的 Partition 中, 通常都會使用 Dual Boot 來做作業系統中的切換. 有時不斷地切換開機是一件很煩人的事, 而 VMware 等模擬器又無法存取 Native Fedora. 用 coLinux 就沒有這種煩惱! coLinux 可以將原本需要 Dual Boot 開機執行的 Fedora Partition, 直接在 Windows 中開機執行, 而且就像是一台完整的機器一般, 依然保有所有原來的設定. 這又是怎麼做到的呢? 首先要轉換原本 Fedora 的 Partition. 要在 /dev 建立 cobdN(0..7). 這可以使用底下的 script 做到: 然後要將會因 coLinux 與 Fedora 環境不同而受到影響的檔案做自動判斷. 總共會有以下幾個檔案 /etc/fstab 可以將這幾個檔案依不同環境, 分別製作 colinux 與 fedora 專用. 並且利用bootparams傳入COLINUX這個環境變數. 自動判斷的部份則可以使用以下的 script: 另外要記得將 coLinux 所會用到的 kernel module 裝到 Fedora 的 Partition. 接著便是 coLinux 的設定檔. 假設電腦上的硬碟是用以下的方法來分割: 那麼, 在 Fedora 上看到的裝置就分別是 hda1(C:), hda2(D:), hda5(/boot), hda6(/), hda7(swap). 但是, 在 coLinux 上的裝置則是有所不同, 分別為 partition1(C:), partition2(D:), partition3(/boot), partition4(/), partition5(swap). 關於在 Windows 上檢視 Partition, 請使用 dd for Windows. 所以, coLinux 的 Native Boot 的設定檔應該如以下的範例: <?xml version="1.0" encoding="UTF-8"?> 10. 在 coLinux 上執行 X coLinux 目前還不能直接支援 X. 要想在 coLinux 的環境下執行 X, 主要有兩種方法. 第一種是在 Windows 安裝 XFree86 Server, 再將 coLinux 上的 X 轉向到 Windows 上的 XFree86. 第二種則是透過 VNC 來執行 X. 這裡要介紹的是第二種方法. 步驟如下: 當連接成功後, 看到的是以下的畫面: 如果要在 Fedora 一開始時就自動執行 VNC, 請參考 VNC On Boot. 如果想嘗試其他在 coLinux 上執行 X 的方法, 請參考 XCoLinux. 11. 相關資源 A. Command-Line 範例: colinux-daemon.exe -c default.colinux.xml -t nt 參數: B. System Service 要先將 coLinux 安裝成 System Service. 方法如下: colinux-daemon.exe -c default.colinux.xml --install-service "Serive Name" 參數: 系統服務安裝成功後, 可以使用系統管理工具來啟動或停止 coLinux. 也可以使用 net start/stop 的方法來管理. 另外, 也可以使用 coLinuxManager 來管理 coLinux 的系統服務.
<colinux />
<block_device enabled="true" path="\DosDevices\c:\coLinuxfc1_2GB_root" index="0" />
<block_device enabled="true" path="\DosDevices\c:\coLinuxswap_64MB" index="7" />
<bootparams />ro root=/dev/cobd0 3 fastboot nogui</bootparams />
<initrd path="initrd.gz" />
<image path="vmlinux" />
<memory size="64" />
<network index="0" type="tap" />
</colinux /> for i in 0 1 2 3 4 5 6 7 do mknod /dev/cobd$i b 117 $i done
/etc/hostname
/etc/resolv.conf
/etc/sysconfig/network-scripts/ifcfg-eth0if [[ $COLINUX ]]; then
SUFFIX=colinux
else
SUFFIX=fedora
fi
for conf_file in
"/etc/fstab"
"/etc/hostname"
"/etc/resolv.conf"
"/etc/sysconfig/network-scripts/ifcfg-eth0"
; do
cp -f $conf_file-$SUFFIX $conf_file
done
<colinux>
<block_device index="5" path="\Device\Harddisk0\Partition3" enabled="true" alias=hda5 />
<block_device index="6" path="\Device\Harddisk0\Partition4" enabled="true" alias=hda6 />
<block_device index="7" path="\Device\Harddisk0\Partition5" enabled="true" alias=hda7 />
<bootparams>ro root=/dev/hda6 3 fastboot COLINUX=1</bootparams>
<initrd path="initrd.gz" />
<image path="vmlinux"></image>
<memory size="256"></memory>
<network index="0" type="tap" />
</colinux>
實際上 Native Fedora 在 coLinux 開機之後, 會像是以下的畫面:
意見
您好 我已經啟動xwindow vnc進去 他就開始載入 不過在入一陣子以後就是藍色桌面 工作列都沒有是要等很久的關係嗎 因為我是用usb硬碟
這應該是X Win沒有正常啟動的結果. 請參照文章中第10點(在 coLinux 上執行 X)的說明. 你是用KDE還是GNOME? KDE要使用 startkde, GNOME則是使用 gnome-session.
小弟在裝 FEDORA 8 在 COLINUX 上時,
多遍也只有下列 MESSAGE.
我是跟着 http://colinux.wikia.com/wiki/Fedora8MinimalChroot 做的。
請救救.... 謝謝!
Warning: unable to open an initial console.
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
colinux: Linux VM terminated
colinux: terminated with code 3 - abnormal exit, aborting
console: Monitor5684: Detached
Cooperative Linux Daemon, 0.7.2
Compiled on Jan 18 2008 21:47:09
Press any key to continue . . .
補充上方COMMENT。
我明明有 initrd=initrd.gz 在 conf file 中
但
colinux: kernel panic suggests that either you forget to supply a
root= kernel boot paramter or the file / device mapped to the root
file system is not found or inaccessible.
Please Check your coLinux configuration and use option "-v 3".
張貼留言