2008年5月5日 星期一

米的不落果: coLinux 介紹與應用(轉載)

coLinux 介紹與應用

5. coLinux 基本設定

coLinux 的所有基本設定, 都可以在 xml 設定檔中定義. 底下以 coLinux 預附的 default.colinux.xml 來說明設定檔中, 各項參數的意義.

  • <block_device enabled="true" path="\DosDevices\c:\coLinuxroot_fs" index="0" />
  • <block_device enabled="true" path="\DosDevices\c:\coLinuxswap_device" index="1" />

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.

  • root=/dev/cobd0

這是用來設定 linux kernel 開機時所需傳遞的參數. 參數設定的方法與 grub 及 lilo 相同.

  • <bootparams>root="/dev/cobd0"</bootparams>

這是指定用來做為 initrd 的 image file. coLinux 本身有它自己專門的 initrd.

  • <image path="vmlinux" />

這是指定用來開機的 linux kernel image. 預設是使用 coLinux 附的 kernel image.

  • <memory size="64" />

這是分配給 coLinux 的記憶體大小, 如果只有跑 linux console, 至少需 64MB, 如果有執行 X, 則最好能配置 128MB 以上.

  • <network index="0" type="tap" />

這是 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 模式, 有幾個動作要先完成.

  • 選擇目前對外的網路卡, 允許 TAP 使用這張網路卡的共用連線

  • 檢視 TAP 網路卡的 TCP/IP

  • TAP 的 IP 應該會被設為 192.168.0.1

順利完成以上動作後, 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?>
<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 />

有幾點要注意.

  • Fedora 的 swap device 並不是在 cobd1, 而是在 cobd7.
  • 在 bootparams 所下的參數, 不能使用 root=/dev/cobd0, 而要使用 ro root=/dev/cobd0.
  • 第一次執行 coLinux Fedora 時, 可能會因為找不到 kernel module 而造成執行失敗. 這時再重新執行一次就可以了.
  • 當 Fedora Core 1 順利開機後, 要將 coLinux 所附的 kernel module 檔 vmlinux-modules.tar.gz 解壓縮到相對應的位置.
  • coLinux 官方所附的 Fedora Core 1, 一開始的網路設定是有問題的, 需要手動改 /etc/resolv.conf 與 /etc/sysconfig/network-scripts/ifcfg-eth0 內的設定.
  • 開機完成的 Fedora Core 1 若要升級, 請按照 Fedora 本身的方式升級即可.

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 做到:

  for i in 0 1 2 3 4 5 6 7   do      mknod /dev/cobd$i b 117 $i   done 


然後要將會因 coLinux 與 Fedora 環境不同而受到影響的檔案做自動判斷. 總共會有以下幾個檔案



/etc/fstab

/etc/hostname


/etc/resolv.conf


/etc/sysconfig/network-scripts/ifcfg-eth0



可以將這幾個檔案依不同環境, 分別製作 colinux 與 fedora 專用. 並且利用bootparams傳入COLINUX這個環境變數. 自動判斷的部份則可以使用以下的 script:



if [[ $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 所會用到的 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"?>
<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 開機之後, 會像是以下的畫面:







10. 在 coLinux 上執行 X



coLinux 目前還不能直接支援 X. 要想在 coLinux 的環境下執行 X, 主要有兩種方法. 第一種是在 Windows 安裝 XFree86 Server, 再將 coLinux 上的 X 轉向到 Windows 上的 XFree86. 第二種則是透過 VNC 來執行 X. 這裡要介紹的是第二種方法.



步驟如下:




  • 首先要安裝 X Server 所需的所有套件, 並且安裝 vnc-server.


  • 將 /root/.vnc/xstartup 增加 startkde.


  • 執行 vncserver -geometry 800x600


  • 在 Windows 上執行 vnc-client, 連接到 192.168.0.2:5901



當連接成功後, 看到的是以下的畫面:







如果要在 Fedora 一開始時就自動執行 VNC, 請參考 VNC On Boot.



如果想嘗試其他在 coLinux 上執行 X 的方法, 請參考 XCoLinux.



11. 相關資源



沒有留言: