`
yangzb
  • 浏览: 3472928 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

coLinux是我极其喜爱的一款虚拟机。它快速而灵巧,最为方便的是它可以直接在Windows中运行——甚至可以作为服务启动!它是我学习Linux的最好的仿真平台之一。本文记录了我在coLinux上安装Debian GNU/Linux的实作过程,参考文献是Cooperative Linux Wiki上的文章DebianGNUcoLinux
作为开源软件,coLinuxSourceForge.net上提供下载,2006年6月2号发布了最新版本0.***,提供对Linux的内核v2.6.11的稳定支持。安装程序将复制下面的文件到您指定的文件夹中,并自动安装coLinux内核的驱动和虚拟网卡。

  1. colinux-bridged-net-daemon.exe
  2. colinux-console-fltk.exe
  3. colinux-console-nt.exe
  4. colinux-daemon.exe
  5. colinux-net-daemon.exe
  6. colinux-slirp-net-daemon.exe
  7. default.colinux.xml
  8. initrd.gz
  1. linux.sys
  2. cofs.txt
  3. colinux-daemon.txt
  4. news.txt
  5. README.txt
  6. Uninstall.exe
  7. vmlinux
  8. vmlinux-modules.tar.gz

我不喜欢由Windows-Install进行的自动安装,事实上,以受限用户(为了计算机安全,我一般都是用受限用户登入)的权限,我将解压后的文件分别复制到这样几个不同的文件夹中:

  • coLinux\bin:
    1. colinux-bridged-net-daemon.exe
    2. colinux-console-fltk.exe
    3. colinux-console-nt.exe
    4. colinux-daemon.exe
    5. colinux-debug-daemon.exe
    6. colinux-net-daemon.exe
    7. colinux-slirp-net-daemon.exe
  • coLinux\conf
    1. default.colinux.xml
  • coLinux\doc
    1. cofs.txt
    2. colinux-daemon.txt
    3. news.txt
    4. README.txt
  • coLinux\mod
    1. vmlinux-modules.tar.gz
  • coLinux\sys
    1. initrd.gz
    2. linux.sys
    3. vmlinux

新建driver文件夹,将安装程序复制到[netdriver]目录中的网卡驱动文件放在这里:

  • coLinux\driver
    1. OemWin2k.inf
    2. README.TXT
    3. tap0801co.sys
    4. tapcontrol.exe

建立coLinux\dist文件夹,放置不同发行版的Linux虚拟文件系统和配置文件,先建Debian的,配置文件为debian.colinux.xml;事实上,今后我们还会安装Gentoo、Slackware、以及Arch等等,把目录预留出来:

  • coLinux\dist
    1. [Debian]
      1. debian.colinux.xml
    2. [Gentoo]
    3. [Slackware]
    4. [Arch]

建立coLinux\share文件夹,放置共享的镜像文件和交换文件,其中384Mb.swap_fs是一个384M的虚拟swap文件:

  • coLinux\share
    1. [fs]
    2. [img]
      1. 384Mb.swap_fs

这样,我们的coLinux运行文件就部署好了。

§1. 安装coLinux驱动

安装coLinux驱动的命令很简单:

colinux-daemon.exe --install-driver

这条命令在注册表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\]分支中登记上键值CoLinuxDriver,并标注coLinux驱动文件的路径和文件名为"ImagePath"="\??\%coLinux File Path%\coLinux\sys\linux.sys",因此,当coLinux的驱动文件linux.sys被移动到其他地方时,需要重新安装驱动以更新注册表键值。
由于现在colinux-daemon.exe只能安装位于同一目录中的linux.sys文件,因此,我们需要将colinux-daemon.exe从bin目录中先暂时移动到sys目录中,安装完驱动后再移回去。
安装coLinux驱动时需要系统管理员权限,如果以受限用户进入操作,可以用RUNAS命令提升权限。
卸载驱动时使用:

colinux-daemon.exe --remove-driver

查看驱动安装或运行的状态:

colinux-daemon.exe --status-driver

§2. 安装及配置coLinux网络

安装与配置coLinux网络,是构建coLinux运行环境时相对比较复杂的一个环节,Getting Started with coLinux# Network一节为我们介绍了coLinux网络配置的主要方法:

  • 有三种方式为coLinux提供网络适配器:TAP,winPcap,和Slirp;
  • 有两种配置适配器的选择:桥接(用于WinPcap或TAP),或是路由(用于TAP或是Slirp)

详细的说明,可以从相关的文献中找到。为了提高性能Network#Recommended Setup中推荐使用两块虚拟网卡:

  1. 在coLinux OS中,配置一块网卡专用于和Hosting OS的通讯。参看TAP - Private Connection with Hosting OS
  2. 在coLinux OS中,配置第二块网卡用于连接到Internet或者LAN。参看Network#WinPcap

我们采用这样的配置方法。
第一步,安装一块TAP虚拟高速网卡用于与Windows宿主机的通讯。使用coLinux\driver目录下的tapcontrol.exe程序。
检查是否已有TAP网卡被安装:

tapcontrol.exe hwids TAP0801co

升级现有网卡驱动:

tapcontrol.exe update OemWin2k.inf TAP0801co

安装一块或多块网卡接口:

tapcontrol.exe install OemWin2k.inf TAP0801co

卸载所有的coLinux适配器:

tapcontrol.exe remove TAP0801co

同样的,安装虚拟网络适配器接口也需要获得管理员权限。
另外,在网卡安装过程会弹出Windows徽标测试的确认窗口,简单的点击“确定”按钮即可。
安装后,将虚拟网卡命令为“coLinux Virtual Gateway”。设置其IP地址为“10.0.0.1”,网络掩码是“255.0.0.0”。
第二步,安装微软环回网络适配器,以成为coLinux第二块网卡桥接的中介。Network#The WinPCAP driver一文提到WinPCAP的连接方式可能会产生这样的问题——这种方式必需一个现存的网络连接并且也许不能正常工作:假如你是与你的ISP直接连接,而他们拒绝在同一条线路上有多个IP——而这正好是我的处境,因此,我得求助于微软环回网络适配器产生一个“假的”现存连接然后让coLinux虚拟网卡通过“ICS”连接到ISP。微软中文知识库文章839013详细描述了如何安装微软环回适配器。


Quote

要在 Windows XP 中手动安装 Microsoft 环回适配器,请按照下列步骤操作:

  1. 单击“开始”,然后单击“控制面板”。
  2. 如果您在经典视图中,请单击左窗格中的“控制面板”下的“切换到分类视图”。
  3. 双击“打印机和其它硬件”,然后单击“下一步”。
  4. 在左窗格中的“请参阅”下,单击“添加硬件”,然后单击“下一步”。
  5. 单击“是,我已经连接了此硬件”,然后单击“下一步”。
  6. 在列表的底部,单击“添加新的硬件设备”,然后单击“下一步”。
  7. 单击“安装我手动从列表选择的硬件”,然后单击“下一步”。
  8. 单击“网络适配器”,然后单击“下一步”。
  9. 在“制造商”框中,单击“Microsoft”。
  10. 在“网络适配器”框中,单击“Microsoft 环回适配器”,然后单击“下一步”。
  11. 单击“完成”。

成功安装该适配器后,与其他任何适配器一样,您可以手动配置其选项。如果 TCP/IP 属性配置为使用 DHCP,则该适配器最终将使用一个 autonet 地址 (169.254.x.x/16),因为该适配器并没有与任何物理媒体实际相连接。

安装完成后,将Microsoft环回适配器的网络连接命名为“coLinux Internet Bridge”,并设置在Hosting OS的“家庭或小型办公网络的公用连接”上为“coLinux Internet Bridge”启用 ICS。微软中文知识库文章306126详细讲述了如何配置Internet连接共享。


Quote

在主机上执行下列步骤来共享 Internet 连接:

  1. 以管理员或所有者的身份登录到主机。
  2. 单击“开始”,然后单击“控制面板”。
  3. 单击“网络和 Internet 连接”。
  4. 单击“网络连接”。
  5. 右键单击要用于连接 Internet 的连接。例如,如果使用调制解调器连接到 Internet,则右键单击“拨号”下所需的连接。
  6. 单击“属性”。
  7. 单击“高级”选项卡。
  8. 在“Internet 连接共享”下,选中“允许其他网络用户通过此计算机的 Internet 连接来连接”复选框。
  9. 共享拨号 Internet 连接时,如果允许您的计算机自动连接到 Internet,则选中“在我的网络上的计算机尝试访问 Internet 时建立一个拨号连接”复选框。
  10. 单击“确定”。您会收到以下消息: Internet 连接共享被启用时,您的 LAN 适配器将被设置成使用 IP 地址地址 192.168.0.1。计算机可能会失去与网络上其它计算机的连接。如果这些计算机有静态 IP 地址,您应该将它们设置成自动获取 IP 地址。确实要启用 Internet 连接共享吗?
  11. 单击“是”。

到 Internet 的连接将与局域网 (LAN) 上的其他计算机共享。连接到 LAN 的网络适配器被配置为具有静态 IP 地址 192.168.0.1 和子网掩码 255.255.255.0。

由于我们的Hosting OS安装了多块(虚拟)网卡,在“Internet 连接共享”下,需要从“家庭网络连接”下拉框中选择“coLinux Internet Bridge”以使得Microsoft环回适配器接口可以共享Internet连接,此时,其IP地址被自动设置为“192.168.0.1”。

§3. 块设备和文件系统

colinux是无法直接访问磁盘驱动器或其他相关硬件的(Host OS已经锁住它们)。以“colinux block devices(块设备)”、或cobd's的方式,colinux可以通过宿主机操作系统逻辑地读写磁盘分区。需要在配置文件里将每个虚拟的块设备用<block_device>标记分别地单独指列出来:

<block_device index=IDNUM path=DEVICEPATH enabled="true"/>

其中:

index –  
IDNUM是一个唯一的0~7之间的数字,用来标识虚拟设备在寄宿机中的相应编号,如,index="0"将会映射为/dev/cobd0。
path –  
DEVICEPATH宿主机操作系统中的合法路径。主机操作系统依据这一属性值提供硬件资源。如,
  • \DosDevices\c:\…:在“\DosDevices\”(或“\??\”)后面加上文件路径,被引用的文件必须是可读的磁盘镜像。该磁盘镜像可以是从Internet上下载的,也可以是自己制作的。
  • \Device\CdromZ:Z是从0开始索引的数字,用来指定特定的cd/dvd驱动器。
  • \Device\HarddiskX\PartitionY:X,硬盘驱动器编号,从0开始索引;Y,分区编号,从1开始索引。需要注意的是,Windows和Linux在对硬盘分区排序时采取的计数方式是不相同的。
enabled –  
启用这个设备。

例如:

<block_device index="0" path="\DosDevices\c:\coLinux\gentoo-i586-ext3-2g-deluxe" enabled="true"/>
<block_device index="1" path="\DosDevices\c:\coLinux\swap_256M" enabled="true"/>
<block_device index="2" path="\??\C:\Co Linux\myDiskImage" enabled="true" />
<block_device index="3" path="\Device\Cdrom0" enabled="true"/>
<block_device index="4" path="\Device\Harddisk1\Partition2" enabled="true"/>

在linux寄宿机的/dev文件系统中建立起适当的块设备后,就可以访问导入到colinux中的虚拟硬件资源了。方便起见,这些设备被命名为/dev/cobdN,这儿N是配置文件中的index编号。对于2.6内核的用户,也可以用/dev/cobd/N来代替/dev/cobdN。如前所述,“cobd”的意思是“Colinux Block Device”。
如果使用来自colinux社区的Linux镜像,这些块设备可能在文件系统中已经有了。否则需要用mknod命令手工创建它们(作为root用户):

root$ mknod /dev/cobd0 b 117 0
root$ mknod /dev/cobd1 b 117 1
root$ mknod /dev/cobd2 b 117 2
...
root$ mknod /dev/cobd7 b 117 7

也可以使用下面的脚本一次完成:

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

接下来可以用mount命令加载磁盘镜像(如上例,包含在文件myDiskImage中):

mount /dev/cobd2 /mnt

或者,代替以/dev/cobd4来加载磁盘1(第二个物理硬盘)的第二个分区。

[Note]

Note

命令mknod使用指定名称产生一个FIFO(命名管道),字符专用或块专用文件。通常,一个专用文件并不在磁盘上占用空间,仅仅为操作系统提供交流,而不是为数据存贮服务。一般地,专用文件会指向一个硬件设备(如:磁盘、磁带、打印机、虚拟控制台)或者操作系统提供的服务(如:/dev/null, /dev/random)。块文件通常类似于磁盘设备(在数据可以被访问的地方赋予一个块号,意味着同时设定了一个块缓存)。所有其他设备都是字符文件。(以前,两种文件类型间是有差别的。比如:字符文件I/O没有缓存,而块文件则有。)mknod命令就是用来建立这种类型文件的。
mknod命令的语法为:

mknod Name { b | c } Major Minor

mknod Name { p }

mknod命令的第一种形式只能由 root 用户或系统组成员执行。在第一种形式中,使用了 b 或 c 标志。 b 标志表示这个特殊文件是面向块的设备(磁盘、软盘或磁带)。 c 标志表示这个特殊文件是面向字符的设备(其他设备)。第一种形式的最后两个参数是指定主设备的数目,它帮助操作系统查找设备驱动程序代码,和指定次设备的数目,也就是单元驱动器或行号。传统上,主编号标识设备相连的驱动。例如,/dev/null和/dev/zero都由驱动1来管理,而虚拟控制台和串口终端都由驱动4管理;同样,vcs1和vcsa1设备都由驱动7管理。现代Linux内核允许多个驱动共享主编号,但是你看到的大部分设备仍然按照一个主编号一个驱动的原则来组织。次编号被内核用来决定引用哪个设备。依据你的驱动是如何编写的,你可以从内核得到一个你的设备的直接指针,或者可以自己使用次编号作为本地设备数组的索引。不论哪个方法,内核自己几乎不知道次编号的任何事情,除了它们指向你的驱动实现的设备。
在mknod命令的第二种形式中,使用了 p 标志来创建FIFO(已命名的管道)。

扯远一点,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,它首次出现在2.3.46内核中。Mandrake,Gentoo等 Linux分发版本采用了这种方式。devfs创建的设备文件是动态的。但是devfs有一些严重的限制,从2.6.13版本后移走了。目前取代它的是udev--一个用户空间程序。目前很多的Linux分发版本采纳了udev的方式,因为它在Linux设备访问,特别是那些对设备有极端需求的站点(比如需要控制上千个硬盘)和热插拔设备(比如USB摄像头和MP3播放器)上解决了几个问题。

<script src="http://partner.googleadservices.com/gampad/google_service.js" type="text/javascript"></script><script type="text/javascript"></script><script src="http://partner.googleadservices.com/gampad/google_ads.js"></script><script type="text/javascript"></script>

分享到:
评论

相关推荐

    Colinux代码简单分析

    对Colinux的代码结构组织结构作简单分析.

    coLinux-0.7.3程序的源代码(700k)

    colinux的源代码,anlinux这个程序实现的基础就是colinux,好像andlinux也就是在colinux的基础上增加了一些插件和进行了一些优化而已,colinux是一个不错的程序,尤其是对于我们程序员来讲,它实现了linux和windows操作...

    扩大colinux虚拟机硬盘大小的方法

    扩大colinux虚拟机硬盘大小,获取更多的存储空间

    Colinux允许windows把当作普通软件运行

    Colinux (Cooperative Linux)允许广大的 MS windows用户把 Linux 当作普通软件在 windows下运行, 并不借助第三方的虚拟机软件(如 VMware,VitualPC). 它不是一种虚拟机,而是 Linux 标准内核的一个端口,它在 ...

    coLinux-0.7.9压缩的EXE文件

    CoLinux(Cooperative Linux 的缩写)是第一种免费使用和开源的解决方案,它让Linux更好的运行在Microsoft Windows 本机系统下。通常的, colinux是Linux内核使自己友好的和其它操作系统共同运行在一台机器上的一条...

    coLinux 0.7.9 DEVTMPFS

    coLinux is a very fast/productive virtual machine to run native Linux in Win32 desktop. People can install coLinux with Debian/Fedora/Gentoo and some other Linux over Win-7. You can install a VNC in ...

    colinux安装包(安装说明)

    colinux安装包(安装说明),里面有具体步骤

    coLinux-0.7.5.exe

    coLinux-0.7.5.exe,colinux是windows下的一个短小精悍的linux虚拟机

    coLinux-0.7.9

    CoLinux(Cooperative Linux 的缩写)是第一种免费使用和开源的解决方案,它让Linux更好的运行在Microsoft Windows 本机系统下。通常的, colinux是Linux内核使自己友好的和其它操作系统共同运行在一台机器上的一条...

    使用colinux在windows上虚拟linux

    NULL 博文链接:https://yangzb.iteye.com/blog/614082

    Colinux架设

    详细说明了Colinux系统在WINXP上的安装及配置,是学习Colinux环境搭建的不可多得的说明档

    coLinux for windows

    coLinux编译工具...................................

    coLinux-0.7.3

    CoLinux(Cooperative Linux 的缩写)是一种免费使用和开源的解决方案,它让Linux更好的运行在Microsoft Windows 本机系统下。

    coLinux-0.7.7.exe

    An optimized virtual Linux system for Windows

    colinux0.7.4 最快的虚拟机

    可以引导启动LINUX镜像系统,也可启动本地的LINUX系统 速度比VMWARE快很多

    如何使用coLinux与openMosix构建异构集群

    在本文中,将学习如何通过集群代理实现最后一种方法,并了解如何将 coLinux 和 openMosix 结合起来为异构环境提供高性能集群中间件。在这个异构的环境中,Linux将提供稳定性和性能,而且 Windows用户可以继续使用...

    colinux扩充硬盘.doc

    colinux扩充硬盘.doc archlinux初始大小小,如何将系统移到大文件里

    colinux 0.7.9与Fedora11镜像--part1

    colinux 0.7.9与Fedora11镜像。分2部分。下载后用WINRAR解压。 colinux是安装后的文件夹压缩,需要手动安装驱动。csdn可搜到相关操作教程。

    colinux 0.7.9与Fedora11镜像--part2

    colinux 0.7.9与Fedora11镜像。分2部分。下载后用WINRAR解压。 colinux是安装后的文件夹压缩,需要手动安装驱动。csdn可搜到相关操作教程。

    colinux虚拟环境安装——在windows系统下怎么安装linux

    怎么进行colinux虚拟环境的安装。让你可以得到充分的学习和安装环境。

Global site tag (gtag.js) - Google Analytics