最近更新日期:2008/09/09
我们常常讲,最好将不同的伺服器架设在不同的主机硬体上面,也就是说,每部主机所负责的任务越简单越好,如此一来不但可以减少主机debug的时程,也能够简化安装与设计主机的架构。但是,每个服务一部主机对于小企业或者是个体户来说,光是放置主机的空间、电源、以及后续的管理问题,就会导致一堆困扰的产生。这个时候,虚拟机器就非常有用啦。 所谓的『虚拟机器』就是在一部实体主机上面虚拟出多部实体主机的环境,且每部实体主机都是独立的,除了原本的那部原主机外,其他的主机都可以独立开、关机,由于个人电脑的能力在近年来突飞猛进,速度与效能都非常棒,所以用一部实体主机来进行虚拟机器的架设,并适当的分配不同的服务在上头,将有助于能源的节约、管理的简化以及服务追踪的简化哩! 



大标题的图示前言
这个章节主要是在介绍Xen 这个虚拟机器,那,什么是虚拟机器?他有什么用途?目前有哪些常见的虚拟机器软体(Virtual Machine) ?底下我们先来说一说。


小标题的图示什么是虚拟机器
虚拟机器(Virtual Machine)与 Apache的虚拟主机(Virtual host) ( 注1 )不一样, 虚拟机器的目的是希望能够在一部实体主机上面『同时运作多个作业系统』的一项功能。为什么我们需要在一部主机上面同时运作多个作业系统呢?可能原因有几个:

  • 让一部强效型主机负责多种业务时:
    由于电脑工业技术的发达,近年来的个人电脑不但越来越便宜,而且功能还越来越强大!就在前几个礼拜(2007/09/xx) ,鸟哥也才收到两部『四核心的、配备2GB主记忆体』的个人电脑!这在台湾政府的中信标案里面也已经有提供了,可见个人电脑实在是便宜又好用。 那么好用的一部电脑如果拿来当网路伺服器,妳会觉得很浪费!怎么说呢?以鸟哥的鸟站( http://linux.vbird.org/ )来说,一部AMD AthlonXP 2000+ (1.6GHz的CPU速度)就跑得非常的顺畅,运作至今应该也没有发生突发性大流量导致服务中断的情况,观察这部主机的平均运作情况,使用sar这个指令来察看一下,唔!每日平均CPU负载都在10%以下而已。所以说,这部四核心的电脑拿来当鸟站的主机,根本就是浪费了他的才能。 如果能够将多种服务集中在这部主机上面来跑,岂不甚好!才不好哩!如果妳看过基础篇 ( 注2 )与伺服器篇 ( 注3 )的介绍后,肯定会认为主机的服务越单纯越好,这样在服务软体除错以及主机环境的单纯化上面比较好。所以说,一部好的主机如果仅用于一个特定的用途,实在很浪费。但如果每个服务都需要一部主机,又觉得很讨厌,因为包括主机的硬体维护、电费、软体安装、网路设定等等,都很麻烦,尤其又贵! 因为上述的问题,所以目前有很多专案都在开发『在一部实体主机上面模拟出另一部机器』的功能,也就是说:『我们希望能够在一部主机上面" 同时"跑多个作业系统』的意思。如果能达到这样的功能,实际的硬体可以省略掉 ​​很多问题,同时又可以充分的应用实体主机的资源,实在很不错啊!







  • 同时豁弄多种不同的作业系统:
    时间拉回到四、五年前,当时 ​​的主机能力仅是还可以,还不算很够力,而且价格不斐。但是当时多种作业系统都很吸引人,包括Windows/Linux/Mac/DOS... ,大家都希望能够尝试一下这些作业系统,然而又不想花钱去购买一部新的主机来玩,这个时候多重开机 ( 注4 )就成了很重要的一环,因为他可以让我们在开机的过程当中选择所想要执行的作业系统来操作说。 不过多重开机有个讨厌的缺点,那就是『我每次开机只能够单玩一种作业系统』,所以如果妳想要在多个作业系统之间切换时,光是开、关机就会让妳火气大起来。这个时候就有些公司开始开发能够在一个作业系统上面『模拟出另外一个可执行的作业系统』环境,所以此时就能够在同时间操作两种作业系统了。当时最流行 ​​的是VMWare这一套软体啦!



    虽然早期就已经有数种虚拟机器的软体可以玩,不过当时毕竟是使用软体来模拟的, 硬体并不直接支援这种虚拟机器的环境,所以效能上面非常的糟糕!不过拜Intel/AMD 大力开发强效型CPU 之功, 目前的主机硬体大部分都有支援虚拟机器的能力,如此一来我们就能够使用快速的虚拟机器的环境啰!


小标题的图示有哪些常见的虚拟机器软体
那么目前有哪些常见的虚拟机器软体呢?他们又各有何特色?底下就来说一说:

  • 老牌子的VMWare ( http://www.vmware.com/ )
    早期的玩家大概都有玩过这一套虚拟机器的软体,这套软体早期仅在Windows上面执行,最大的优点就是可以让使用者在Windows环境下同时模拟出一套Linux的环境,同时执行两个作业系统。鸟哥之前使用这套软体的目的是用来捉Linux的安装画面!在这个功能上面VMWare实在很不错。 不过早期的VMWare效能不太好,加上当时的主机效能也不佳,而且VMWare模拟的硬体不会与原本的主机相同,因此鸟哥很不建议大家使用VMWare来学习Linux 。然而随着时代的进步,目前VMWare已经发展的相当不错,同时也提供Open source的版本给Unix-Like平台的OS使用,算是很不错的。他也是目前虚拟机器市场的龙头老大!



  • 已渐趋成熟的Xen ( http://www.xensource.com/ )
    Xen 是以GNU 的GPL 授权发布的自由软体,目的在于提供效能佳、可支援不同作业系统的同时运作、 且让同时运作的作业系统彼此互相独立的系统环境。Xen 是基于X86 硬体所开发出来的虚拟机器监督器(Virtual Machine Hypervisor) ,鸟哥觉得他最大的优点就是效能佳!鸟哥曾在一部Celoron 366 MHz, 记忆体192MB 的笔记型电脑上面模拟出一个Xen 机器给上课的同学们豁弄,同时连线50 个同学到该部模拟的Xen 机器上还不会觉得有延迟的问题,效能真的是很不错。我们在下一节会详细的介绍Xen 这个好东西。

  • 后起之秀KVM (Kernel based Virtual Machine, http://kvm.qumranet.com/kvmwiki )
    让Linux发明者Linus Torvarlds喜好并且将之加入核心功能的虚拟机器就是这个KVM的技术!KVM已经于Linux 2.6.20版的核心中加入此项功能,KVM不但提供完整的Intel/AMD CPU的虚拟技术支援,而且提供完整的虚拟环境。虽然目前这个技术还不算很成熟,不过未来应该也可以发展的很不错呢!因为Linux核心本身就有支援啊!^_^!更多的KVM可以参考: http://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine

  • 酷!炫!有劲的VirtualBox ( http://www.virtualbox.org/ )
    还有一套自由软体的虚拟机器可以用,那就是同样架构在x86 上面的VirtualBox 这套软体啦!这套软体提供完整的虚拟环境,且可支援目前市面上的主流作业系统。鸟哥曾经看过网中人前辈在他的笔记型电脑上面玩过这套东西,非常的炫丽,而且提供图形化介面, 效能方面看起来也相当的优秀。不过,好像整合度方面的问题,偶而模拟的作业环境会当掉, 但是不会影响到原作业系统就是了。想要在Linux 桌上型电脑上玩玩虚拟环境的朋友,鸟哥觉得这套东西最适合您!

    其实每套虚拟机器的软体都有其存在的价值,因为他们的功能与目的都不一样。举例来说,鸟哥认为VirtualBox 很适合于想在Linux 桌上型电脑上面玩Windows 的朋友,虽然他不够稳定。至于Xen 则很适合在一部高效能主机上面同时运作多个同版本的Linux 系统,因为稳定度相当高,且性能优秀, 可让使用者轻​​松的在一部机器上面运作多个独立的作业系统来分别处理不同的网路服务呢!

Tips: 
这一章底下的资料牵涉到很多硬体的观念以及Linux作业系统最底层核心的架构说明,如果您不想要了解这些基础概念,可以直接看CentOS 5.x的实例说明即可。
鸟哥的图示

大标题的图示初探Xen
Xen 的效能为什么能够这么好?Xen 在使用上面有什么样的限制?我的一部主机最多可以支援几个Xen 的模拟环境?Xen 的模拟环境有几种类型?这些疑问我们都得要先知道一下才好!当然,最好能够有个简单的小例子来处理Xen 的模拟环境啰。


小标题的图示Xen 的虚拟类型与特色
Xen这套自由软体在虚拟机器的模拟类型方面主要分为半虚拟化(Para-virtualization)及全虚拟化(Full virtualization)两种,其中半虚拟化主要是透过修改Linux核心来达成的虚拟技术。半虚拟化技术所产生的虚拟机器需要与原本的作业系统相同较佳。使用半虚拟化的环境所具备的特色有: ( 注5 )
  • 虚拟机器的运作效率与实体机器的效能相当;
  • 最多可支援到具有32 颗以上CPU 的主机环境;
  • 支援x86/32, x86/32 含PAE 技术, 及x86/64 的硬体平台环境;
  • 良好的硬体驱动程式支援,几乎支援所有的Linux 装置之驱动程式;
Xen的半虚拟化技术主要是用在相同版本的Linux上面,也就是说,如果妳想要使用半虚拟化的方式启动多个虚拟机器,那么那些虚拟机器全部都必须是相同的作业系统,甚至要求相同版本与相同核心的Linux distribution喔。 如果妳想要安装不同版本的Linux或者是其他的OS (例如Windows XP)时,就得要使用全虚拟化技术了。但是全虚拟化技术是有其限制的,当你的硬体满足下列需求时,全虚拟化技术才能够动作:


  • 你的硬体支援Intel 的VT 技术(Virtualization Technology, Intel-VT);
  • 你的硬体支援AMD 的SVM 技术(Secure Virtual Machine, AMD-SVM or, AMD-V)。
此外,上面提到的PAE指的是Intel的实体位址延伸技术(Physical Addressing Extensions, PAE),这项技术可让原本仅支援到4GB实体记忆体的32位元硬体平台,可支援到最大64GB的记忆体喔!而且, Xen几乎可以在所有的P-II以上等级的硬体平台上面跑半虚拟化任务,如果不跑全虚拟化的话,其实效能确实是OK的啦! 近来由于虚拟机器软体的流行,加上x86电脑效能与CPU运算核心单元的增加,两大x86 CPU制造商Intel/AMD都发表了新的整合到CPU的虚拟技术,分别是Intel的Vanderpool虚拟技术以及AMD的Pacifica技术。这些技术有的也支援Xen ,这让Xen的效能增进不少呢!^_^




小标题的图示Xen 的运作环境解释
基础学习篇里面我们曾经谈过硬体、核心与应用程式的关系,所有的应用程式都是在核心层之上来完成的( 注6 )。然后透过核心功能去呼叫与使用硬体元件的命令。好了,现在来仔细想一想,既然我有多个虚拟机器,每个虚拟机器的环境各别有自己的作业系统核心,也就是有多个作业系统同时存在。如果所有的作业系统都能够完整的控制硬体的话,那么硬体到底该接受谁的指令来运作?那个系统的指令会先被执行?这是很重要的问题,因为如果这边搞不定,那么妳的硬体系统就只有当机一途。 为了解决这个问题,Xen也分成多个层级(layer)来执行。他将Linux的核心修改过后,再使用这个修改过后的核心开机,而开机后先载入Xen的监督器(Hypervisor) ,并且启动第一个在上头的作业系统,我们称他为domain-0 。在Xen上面所谓的一个domain就是一个虚拟机器啰! ) Domain-0之所以要先被载入是因为Domain-0含有其他虚拟机器启动所必须的控制指令,并且domain-0也是控制虚拟装置的重要主控系统。在domain-0上头最重要的就是一个xend的常驻程式,其他的domain都是由这个xend来管理的。 至于命名方面,除了domain-0之外的其他虚拟机器就依序被称为domain-1, domain-2等等,我们通称为domain-U啰。这些咚咚的相关性有点像这样:





Xen Hypersvisor 的功能示意图
图2-1、Xen Hypersvisor的功能示意图( 注7 )

由上图我们知道domain-0真的是很重要的,因为他直接控制Xen的监督器(Hypervisor),而且掌握了实际的Linux驱动程式(drivers)。而其他的虚拟机器(domain-U)则是透过Xen监督器来与实际的硬体以及domain-0达成沟通。而为了让domain-0能够与Xen结合,我们必须要修改domain-0的核心才能够顺利运作。并且需要使用domain-0的核心来开机才可以。domain-0是所有虚拟机器的来源,所以他可以尽量简单一点,其他的个别服务则可以放置到不同的domain当中了。 那个xend也是很重要的咚咚,他可以管理domain-0与其他domain之间的启动与沟通,可以提供一个终端机(console)介面来让domain-0登入其他的domain ,所以我们也必须要启动这玩意儿才行。 早期Xen尚未被各distribution整合到各自的版本中时,使用者必须要由Xen的官方网站下载原始码,然后自行重新编译核心以及编译Xen软体才行。说实在的,玩个Xen这么麻烦,倒不如不要玩!^_^。然而在RHEL 5 (CentOS 5)以后, Xen已经包含在原始释出的套件中了,所以我们直接用yum就能够安装妥当!所以要搞定一部Xen的domain-0已经不再是不可能的任务啰!^_^ 对于Xen的基本原理有一些认识之后,接下来就让我们开始在CentOS 5上面进行一个小小的实验吧!








小标题的图示确定你的硬体是否支援Xen 的运作
虽然说目前的硬体都很新了,不过有的朋友使用的是旧的主机来安装Linux ,所以我们必须要留意你的硬体是否支援xen 的运作。而我们知道Xen 支援半虚拟化与全虚拟化两种模式,两种模式的需求为:

  • 半虚拟化(Para-virtualization) 硬体需求:
    只要是64 位元的x86 主机(x86_64) 都能够支援半虚拟化的环境。如果是32 位元的主机(x86) 时, 该主机必须要支援的实体位址延伸技术(PAE) 才能够使用xen 喔!那如何确认呢?很简单,检查CPU 的参数即可:
    [root@linux ~]# cat /proc/cpuinfo | grep flags 
    flags : fpu tsc msr pae mce cx8 mtrr mca cmov pat pse36 mmx fxsr sse up
    
    嘿嘿!这一部主机是鸟哥的P-III 800 主机,看吧!确实有支援PAE 喔!所以当然可以玩Xen 啰。

  • 全虚拟化(Fully-virtualization) 硬体需求:
    如果妳需要全虚拟化的技术支援时,此时需要硬体有支援虚拟化技术才行。目前在x86的主机当中, Intel提供VT技术, AMD则提供SVM技术。这两种技术在CPU的旗标分别是:Intel (vmx)与AMD (svm)。鸟哥在Core Duo主机上面的测试可以发现:
    在Intel Core 2 Duo的CPU主机上面测试CPU旗标: 
    [root@linux ~]# cat /proc/cpuinfo | grep flags 
    flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts
              acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc up pni 
              monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
     #瞧!是有那个vmx的支援啦!
    
    至于AMD的主机旗标则是:(下表感谢donyingle兄的提供!)
    在AMD Athlon(tm) 64 X2的CPU主机上面测试CPU旗标: 
    [root@linux ~]# cat /proc/cpuinfo | grep flags 
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
              pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt 
              rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic
              cr8legacy 3dnowprefetch ts fid vid ttp tm stc 100mhzsteps 
    # 瞧!是有那个svm 的支援啦!
    
    如果确定你的CPU 有支援上述的条件后,嘿嘿!那我们就可以开始底下的游戏啦!如果没有支援呢?那很抱歉,底下的资料看看就好!


小标题的图示所需要的Xen 套件与核心
注意: 在开始安装之前,请先参考前一小节以确定你的硬体已经支援Xen的半虚拟化功能了! 约略谈了一下Xen的原理、特色之后,在开始玩弄Xen之前,我们得了解运作Xen所需要的各项套件,并且顺利安装后,才能够使用的啊!^_^。如同前一小节提到的,要使用Xen半虚拟化(Para-virtualization)必须要修改核心才能够顺利的运作。在以前的版本妳需要重新编译核心,不过,在新的版本,例如CentOS 5.x底下,就已经将Xen的核心帮妳编译好了!妳可以直接安装即可。所以,妳需要安装的套件主要有:


  • kernel-xen:修改的Linux 核心,使可以跑Xen 的环境;
  • xen:主要的xen 套件,包括设定档、启动脚本、所需的基本函式库等;
  • xen-libs:Xen 所需要的函式库等;
  • python-virtinst:提供终端机安装的软体;
  • virt-manager:为一个图形使用者介面软体,可在图形介面管理xen 喔!
在CentOS 5.x 的环境下,妳可以使用yum 直接来安装这几个套件。安装完毕后请务必使用新的核心开机!以鸟哥的例子来说,我安装了数个核心,包括kernel-2.6.18-8.1.14.el5 及kernel-xen-2.6.18-8.14.el5 , 所以在grub 的设定档当中会像这样:
[root@linux ~]# vi /boot/grub/menu.lst 
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-8.1.14.el5xen)
        root (hd0,0)
        kernel /boot/xen.gz-2.6.18-8.1.14.el5
        module /boot/vmlinuz-2.6.18-8.1.14.el5xen ro root=/dev/hda1 rhgb quiet
        module /boot/initrd-2.6.18-8.1.14.el5xen.img
title CentOS (2.6.18-8.1.14.el5)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.18-8.1.14.el5 ro root=/dev/hda1 rhgb quiet
        initrd /boot/initrd-2.6.18-8.1.14.el5.img
妳必须要注意到,鸟哥使用的开机选单为第0个,亦即是2.6.18-8.1.14.el5xen 那一个!然后重新启动这部Linux 主机喔!启动完成后,应该再次的确认一下是否为xen 的核心才行!
[root@linux ~]# uname -r 
2.6.18-8.1.14.el5 xen 
#仔细看,鸟哥的核心为新的xen的核心喔!

[root@linux ~]# chkconfig --list | grep xen 
xend 0:off 1:off 2:on    3:on   4:on   5:on   6:off
xendomains 0:off 1:off 2:off   3:on   4:on   5:on   6:off
 # Runlevel 3/5的xen相关服务是有启动的才行!

[root@linux ~]# pstree -p | grep xen
        | |-xenbus(10)
        | `-xenwatch(9)
        |-xenconsoled(2348)---{xenconsoled}(2349)
        |-xenstored(2340)
# 这样看来,应该确实是有启动的样子喔!继续最后一个确认!

[root@linux ~]# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0                0 462 1 r----- 49.2
 # xm为Xen的重要指令,list为列出已经在跑的xen系统,预设有domain-0存在!
透过上面的测试,我们会知道xen 确实已经顺利的启动,而且也启动前面谈到的那个重要的domain-0 啰!接下来我们再来聊一聊那xen 的设定档在哪里?


  • xen 的套件结构
    我们前面谈到过, Xen 在domain-0 是由一个xend 的服务所管理的,他可以​​用来启动、关闭与连结到其他的domain-U 当中。此外, Xen 亦提供许多的指令来让系统管理员管理他们的domain-U 啊!这些重要的启动执行档为:
    • /usr/sbin/xend:就是xend的启动脚本,使用python程式语言写成的;
    • /usr/sbin/xm:重要的管理xen的指令,可输入xm help查询用法。
    至于与xen 有关的设定档,包括一些模拟元件的启动脚本都在/etc/xen 底下,在这个目录下的许多资料为:
    • /etc/xen/xend-config.sxp:这个重要!是xend的设定档!内容包括domain-0的类型、网路的连结方式、 domain-0的记忆体与CPU等资源配置、是否使用vnc作为domain-U的连线方式等等。不过,鸟哥觉得,这个档案不太需要更动,使用预设值就很够用了。

    • /etc/xen/:里面含有数个domain-U的设定档范本,包括:xmexample1, xmexample.hvm。其中,那个xmexample.hvm可作为完整模拟的参考范本喔!

    • /etc/xen/auto:如果妳想要在系统开机时就自动启动某个domain-U的话,可以将该设定档指定连结到这个目录中。举例来说,如果妳要在开机后立即使用/etc/xen/xmexample.hvm设定档来启动某个domain-U ,那可以这样做:
      [root@linux ~]# cd /etc/xen/auto 
      [root@linux auto]# ln -s ../xmexample.hvm . 
      #这只是个范例,妳可不要跟着做!因为xmexample.hvm还需要修改才能运作!
      
    • /etc/xen/scripts:这目录有趣了!包括虚拟设备的启动、虚拟网路的启动、虚拟桥接器的启动等等,都是透过这目录底下的所有档案来达成的!
    在妳安装完毕,并且使用新核心启动后,接下来让我们开始来处理一个小案例吧!


小标题的图示第一个泛用实例
就如同图2-1的样子,在主机上的所有Linux OS都需要自己能够开机,而开机流程通常是这样的:( 注8 )
  • step 1: 按下电源,主机开始读取BIOS 资料;
  • step 2: 取得开机的装置顺序,并由MBR 取得开机选单与开机管理程式;
  • step 3: 由开机管理程式载入Linux kernel 及虚拟磁碟(initrd);
  • step 4: Kernel 侦测硬体载入适当的驱动程式,并挂载根目录以读取核心模组;
  • step 5: 开始由/sbin/init 程式设定主机的环境。
由上述的动作,我们可以知道Linux开机的重点在于1.核心2.虚拟磁碟(initrd)及3.根目录(/)了。 虽然核心与虚拟磁碟我们的CentOS 5已经提供了,但是预设的虚拟磁碟好像并未主动的加入Xen的某些驱动程式,因此我们得需要针对虚拟磁碟进行设定才好。此外,每个Xen domain的根目录也很伤脑筋的!因为根目录需要很多资料,而且还需要挂载类似/sys, /proc, /dev, /selinux等特殊的档案系统哩!那该如何处理根目录呢?底下就让我们来处理处理:


  • 硬体支援性
    就如同前面几个小节谈到的,如果我们的硬体并不支援xen 所必须要的功能,那么妳是无法建立好你的domain-U 的!在这个泛用案例当中我们的重点是测试半虚拟化,因此妳只要具有PAE 的支援即可。鸟哥以较低阶的P-III 800 来进行测试,硬体检查的结果是这样的:
    [root@linux ~]# cat /proc/cpuinfo | grep flags 
    flags : fpu tsc msr pae mce cx8 mtrr mca cmov pat pse36 mmx fxsr sse up
    
    妳可以发现确实存在那个pae 的关键字,因此我们这个系统是可以玩Xen 的半虚拟化技术的!所以让我们继续进行工作吧!


  • 根目录所需磁碟槽
    根目录所需磁碟槽的来源可以有两个,一个是实体硬碟,一个是利用dd 建立一个大档案来使用。鸟哥比较倾向利用dd 来处理你的根目录喔!妳可以这样做:
    范例:建立一个5GB的大档案 
    [root@linux ~]# mkdir -p /disk2/xen 
    #因为鸟哥的/disk2为一颗额外的硬碟,所以容量比较大啦!
    
    [root@linux ~]# cd /disk2/xen 
    [root@linux xen]# dd if=/dev/zero of=xen.img bs=1M count=5000
    5000+0 records in
    5000+0 records out
    5242880000 bytes (5.2 GB) copied,178.482 秒,29.4 MB/s
    # 这个时候会开始创造一个5GB 左右的档案,由于硬碟速度快慢的关系,
    # 这个动作可能会消耗数分钟到数十分钟不等。
    
    [root@linux xen]# ll /disk2/xen
    -rw-r--r-- 1 root root 5242880000 Oct 10 00:30 xen.img
    
    档案是建立起来了,不过如果你的Linux 有启动SELinux 的话,还需要一些类型的改变才可以!其实动作也不难,这样做就对了!
    [root@linux xen]# chcon -t xen_image_t -R /disk2/xen 
    [root@linux xen]# ll -aZ /disk2 
    drwxr-xr-x root root user_u:object_r: xen_image_t       .
    drwxr-xr-x root root system_u:object_r:file_t ..
    -rw-r--r-- root root user_u:object_r: xen_image_t       xen.img
     #如果妳有启动SELinux才需要这么做,否则就略过。
    # 反正你要记得Xen 的档案必须要是xen_image_t 的安全内容类型。
    
    档案建立起来后,就需要进行格式化啰~格式化的方法为:
    范例:将刚刚建立的大档案格式化为ext3的档案格式 
    [root@linux xen]# mke2fs -j /disk2/xen/xen.img
    mke2fs 1.39 (29-May-2006)
    /disk2/xen/xen.img is not a block special device. 
    Proceed anyway? (y,n) y
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    ....底下省略....
    
    由于这是档案不是磁碟分割槽,所以会有上述的警告讯息,妳按下『y』就对啦!


  • 复制或安装根目录
    由于domain-U与domain-0其实是一样的系统,因为是半虚拟化嘛!所以,最简单的根目录制作方法,就是将原本的domain-0的根目录复制到新的分割槽内就对了! 以鸟哥的例子来说,妳可以简单的这样做:
    [root@linux ~]# mount -o loop /disk2/xen/xen.img /mnt 
    #先将刚刚制作出来的资料给他挂载起来,这是特殊挂载法喔!
    
    [root@linux ~]# cp -ax /{root,dev,var,etc,usr,bin,sbin,lib} /mnt 
    #这几个目录的资料是一定需要复制的!粉重要!。
    
    [root@linux ~]# mkdir /mnt/{proc,sys,home,tmp,selinux} 
    #这几个目录与虚拟档案系统有关,包括程序、核心资料等目录,所以要先建立
    
    [root@linux ~]# vi /mnt/etc/fstab 
    /dev/sda1   / ext3 defaults 1 1
    devpts /dev/pts devpts gid=5,mode=620 0 0
    tmpfs /dev/shm tmpfs defaults 0 0
    proc /proc proc defaults 0 0
    sysfs /sys sysfs defaults 0 0
    # 我这里假设我的根目录所在磁碟槽为SATA 硬碟的第一个分割槽,
    # 所以是/dev/sda1 。此外,其他的档案系统如proc, sysfs 都必须要写入!
    # 至于原本在domain-0 的其他装置,就给他拿掉吧!
    
    [root@linux ~]# vi /mnt/etc/sysconfig/network
    NETWORKING=yes
    NETWORKING_IPV6=no
    HOSTNAME=xen.test.hostname 
    #这里设定一下妳的主机名称啦!
    
    [root@linux ~]# vi /mnt/etc/sysconfig/network-scripts/ifcfg-eth0 
    DEVICE=eth0
    BOOTPROTO=none
    IPADDR=192.168.0.123
    NETMASK=255.255.255.0
    ONBOOT=yes 
    #建议将IP也设好。但是要注意那个HWADDR最好能够拿掉不设定!
    
    [root@linux ~]# umount /mnt 
    #记得将挂载的资料给他卸载掉
    
    基本上,根目录的设定到这里就算结束了!不过,妳会发现由于domain-U 的资料都是由domain-0 来的, 而不同的主机其实设定不会相同,所以使用上述的作法妳会发现有几个小问题:
    • 妳必须要手动处理一些小设定,包括主机名称, /etc/fstab, IP 参数等等;
    • 即使手动处理过上述的资料,还是很可能会无法成功的启动domain-U ;
    • 由于domain-0 可能会安装比较多的套件,这些资料又在domain-U 当中用不着,徒然造成硬碟容量的浪费。
    所以,虽然这个方法最简单,不过通常鸟哥不是很建议您使用啦!^_^


  • 设定虚拟磁碟映象档以及终端机介面
    由于预设的CentOS 虚拟磁碟(Initial Ram Disk) 并不包含一些Xen 的相关驱动程式, 因此搞了老半天也是无法驱动Xen 的domain-U ,给他气死!所以,我们得先就initrd 来进行一些额外的设定才行。这个地方非常的重要!因为鸟哥卡在这里好几天~最后才发现原来是initrd 的问题啊~
    [root@linux ~]# mount -o loop /disk2/xen/xen.img /mnt 
    [root@linux ~]# cd /boot 
    [root@linux boot]# mkinitrd -v -f --fstab /mnt/etc /fstab --with xenblk \ 
    > --with xennet --preload xenblk --preload xennet \ 
    > initrd-2.6.18-8.1.14.el5xen.vbird.img `uname -r` 
    [root@linux boot]# umount /mnt 
    #详细的各项参数请man mkinitrd ,上述的范例仅是利用/etc/fstab的装置来设定,
    # 并且加上一些xen 相关的驱动程式而已。这个过程非常的重要!
    # 最终会制作出一个initrd-2.6.18-8.1.14.el5xen.vbird.img 档案
    
    除了这个虚拟磁碟之外,为了要方便我们登入domain-U 的环境,我们需要产生一个终端机介面才行。因为每个domain-U 会使用到终端介面,然而我们知道tty1 ~ tty7 预设给domain-0 使用掉了。为此,我们必须得要制作出一个虚拟的终端介面,那就是xvc0 这个终端介面啰。如何产生呢?简单的流程是这样:
    [root@linux ~]# vi /etc/inittab 
    #大约在第51行的地方加入底下特殊字体的部分:
    5:2345:respawn:/sbin/mingetty tty5
    6:2345:respawn:/sbin/mingetty tty6
    co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav 
    #意思是使用agetty建立xvc0
    
    [root@linux ~]# init q 
    # init q这个指令可以让/etc/inittab的设定立刻生效而不需要重新开机!
    
    [root@linux ~]# ln -s /dev/console /dev/xvc0 
    #如果xvc0没有主动建立的话,我们需要手动来建立连结才可以喔!
    
    做完这一步之后,接下来就是可怕的设定档啰~


  • 编辑xen 虚拟资料的设定档
    接下来就是重头戏啦!因为我们必须要指定domain-U 的相关虚拟设定值,包括使用几颗CPU 、使用多少记忆体容量, 以及所使用的核心与根目录的所在等等。如前所述,这些设定档主要都在/etc/xen 底下, 尤其里面的xmexample1, xmexample2 等档案就是很好的说明文件档,很有参考价值。鸟哥先说一下我的设定是这样的:
    [root@linux ~]# vi /etc/xen/centos5 
    #这个档案的档名可以随便你取,不过设定档最好是在/etc/xen这个目录下才好!
    name = "centos5"
    kernel = "/boot/vmlinuz-2.6.18-8.1.14.el5xen"
    ramdisk = "/boot/initrd-2.6.18-8.1.14.el5xen.vbird.img"
    memory = "128"
    vcpus = 1
    vif = [ '' ]
    disk = [ 'tap:aio:/disk2/xen/xen.img,sda1,w' ]
    root = "/dev/sda1 ro " 
    # name:只是一个显示的名称,一般建议与档名相同即可;
    # kernel: 在domain-0 上面的档案,用来进行domain-U 的开机!非常重要!
    # ramdisk: 就是initrd 那个档案啰~刚刚我们才做出来的档名
    # memory: 分配给这个domain-U 的记忆体有多少?如果没有图形,96 MB 也可以!
    # vcpus: 使用多少颗CPU 的意思;
    # vif: 是否需要网路卡,如果需要网路卡,至少要有设定!但内容可用预设!
    # disk: 用来作为根目录的是那个磁碟,这个最重要啦!语法为:
    # tap:aio:/完整/路径/档名,设计为domain-U的磁碟代号,可否写入
    # 以我们这个例子来说,我将之前建立的大档案模拟成为domain-U 的
    # /dev/sda1 ,并且该partition 为可写入(w)。
    
    特别特别留意的是,上面的设定档当中的kernel, ramdisk以及disk都是以原本的主机(domain-0)的角度来思考的,也就是说,实际上我们是以domain-0的核心档案来进行domain-U的开机,因此妳会发现在domain-U当中并不存在/boot这个目录喔!因为实际上用来开机的是domain-0的档案嘛! 至于另一个重点就是那个disk参数。我们可以使用模拟的方式也可以使用实际的partition来给予设定。如果是『用档案来模拟成为partition』时,使用两个逗号(,)隔开成为三个栏位,分别为:tap:aio:/完整路径/档案的名称,装置代号名称,写入与否



    • [tap:aio:]:为较新的档案处理模式,旧的方式为使用:[file:]
    • [装置代号名称]:就是模拟的装置,请与domain-U内的fstab对应起来喔!
    • [w]:就是设定可否写入,若唯读则为[r]
    如果使用实体partition 来模拟的话,那么开头的部分会以『phy:』来取代。举例来说,如果我们以/dev/hda5 来作为domain-U 的/dev/sda1 的话,那就会变成:
    • disk = [ 'phy:/dev/hda5,sda1,w' ]
    如果一切都搞定之后,接下来让我们来启动Xen 的domain-U 吧!


  • 利用xm 指令启动与管理domain-1
    在domain-0 可以使用xm 这个指令来启动、关闭、删除某个domain-U , xm 的指令用法是这样的:
    [root@linux ~]# xm [动作] [设定档名] [-c] 
    参数:
    [动作]:要某个设定档内的domain-U 作何动作之意,常见的动作有:
       create :启动这个domain-U 的意思,例如启动centos5 这个设定档时,使用:
                  xm create centos5
       destroy :立即由记忆体中,将这个domain-U 给删除,常用于domain-U 出问题时
       list :将目前已经启动的domain 都列出来之意;
       console :若有已建立的domain-U 时,可用console 来取得domain-U 的终端介面
       shutdown :关闭某个已启动的domain。如果想要关闭全部的domain-U ,可用
                  xm shutdown -a
    [设定档名]:亦即在/etc/xen/ 目录下的档名啰;
    -c :同时建立到该设定档的终端介面(console)
    
    如果想要启动我们刚刚建立的centos5 这个设定档内的domain 时,妳可以使用『xm create -c centos5 』即可。那个-c 的作用是可以让妳直接取得domain-U 的终端机介面。鸟哥在pietty 上面连线到domain-0 , 然后启动centos5 这个domain 的情况如下所示:

    启动xen domain-U 的示意图
    图2-2、启动xen domain-U 的示意图

    在图2-2 当中,输入指令后domain-U 的开机流程就会依序的显示在妳的终端机上, 感觉上就好像坐在电脑前面看Linux 主机开机一样!实在是很不赖!最后如果开机顺利成功的话, 结果会像下图所示这样:

    启动xen domain-U 的示意图
    图2-3、启动xen domain-U 的示意图

    在图2-3当中,最上方圈起来的开机讯息是错误讯息。由于我们是复制domain-0的所有资料,因此连同原本写在/etc/rc.d/rc.local档案内的执行过程也会被执行。但是domain-U的状况与domain-0并非完全相同,所以就会如上所述出现一些错误讯息啦!这也是我们需要额外处理的部分喔。 当你以root的身份登入后(这个真的是终端机,并非是ssh的画面喔!),会发现多了一个xvc0的终端介面,这个介面得先在/etc/inittab里面设定好才行!如果一切都OK了!恭喜您,你已经登入domain-U啰!接下来请妳自行根据妳的需要来设定好妳的domain-U吧!让这两个domain并行呢!



    好了,现在我如何登出centos5 这个domain-U 呢?妳可以这样做的:
    • 直接在domain-U 的环境中按下[ctrl]-] 这个组合键来回到domain-0 的环境;
    • 直接关闭pietty 等​​连线的软体;
    • 利用其他bash 来结束(kill) 掉使用xm 所建立的连线程序
    有趣的是,即使妳使用上述的方法来离开domain-U时,也不会影响到domain-U的继续运作!而且root也不会登出,等到妳下次再以『 xm console centos5 』时,会继续取得root的动作继续处理刚刚未完成的工作呢!很神奇吧~ 现在,请跳回domain-0的地方,或者是利用另外一条pietty的连线连入domain-0 ,我们使用xm list来察看一下各个domain的状况吧!


    [root@linux ~]# xm list
    Name ID Mem(MiB) VCPUs State Time(s)
    Domain-0 0 366 1 r----- 735.2
    centos5 42 127 1 ------ 52.4
    # 妳会发现多了一个domain 出现!名称为centos5 啦!
    # 妳也会发现有个State 吧!那个State 的意义是这样的:
    # r :该domain 正在使用CPU 资源在运作中;
    # b :这个domain 目前被悬置(blockded),很可能由于这个domain 在等待较长时间
    # 的输入输出(I/O) 之故。
    # p :该domain 处于暂停的状态,通常由于管理员使用xm pause 之故。
    # 当domain 在此状态时, Xen 的监督器将不会处理该domain 的动作;
    # s :这个domain 正在关机当中
    # c :这个domain 已经crash 了,但是却没有自动的关掉。通常是因为没有设定
    # on_crash 的相关动作所致。
    # d :该domain 正在死亡中...因为该domain 无法正确的shutdown/crashed 之故。 
    
    很简单吧!这样就完成你的Xen domain 啰~开始将妳所想要的网路服务分门别类的放到不同的domain-U 中吧!加油!

    例题:关于如何登入domain-U
    • 我在启动domain-U 的时候,使用指令为『 xm create domain-U 』导致我使用xm list 可以看到新的domain-U 在运作,但我还是在domain-0 。请问此时我该如何登入domain-U 呢?
    答:
    • 有两种方式,如果想要取得domain-U 的终端机模式,请使用:

      • xm console domain-U

      如果妳知道domain-U 的IP,并且domain-U 有启动类似ssh/telnet 的服务时,可使用网路服务登入。举例来说domain-U 的IP 为192.168.100.100,且有启动ssh ,则妳可以使用:

      • ssh username@192.168.100.100

    例题:关于如何关闭domain-U
    • 我使用xm list 时,发现domain-U 已经启动了,我该如何关闭这个domain 呢?
    答:
    • 如果妳在domain-0 上头的话,可以使用:

      • xm shutdown domain-U

      来关闭这个domain-U , 如果极端一点,妳想要关闭所有的domain-U (除了domain-0 之外),则可以下达:

      • xm shutdown -a

      那如果妳是在domain-U 里面呢?想关闭该domain 就直接给他:

      • shutdowm -h now

      即可,就好像一般正常程序关机一样喔!那如果万一domain-U 无法顺利关机,则妳可以在domain-0 上面直接下达删除的指令:

      • xm destroy domain-U

    例题:关于重复登入的问题
    • 我利用xm create -c domain-U 的方式取得终端机来登入domain-U 了,结果另外一个使用者使用『xm console domain-U』也来登入该domain,此时会发生什么问题?该如何解决?
    答:
    • 由于预设情况下,一个domain-U 仅有一个终端机,因此第二个登入者将不会询问帐号密码, 而是直接以第一个登入者的身份取得该终端介面,亦即两者将具有相同的终端介面与所有资源。但如此一来会导致控制权的争夺效应,最终结果两者都无法控制该终端介面。此时建议两者均离开该终端介面, 然后让单一使用者以xm console 登入,另一使用者则使用类似ssh 的方式网路登入即可。


  • 常见错误分析
    Xen 的启动其实是颇不容易的,常常会有一些错误情况发生。底下我们来看看一些常见的错误情况, 让您了解到,您无法启动Xen 的可能原因为何?


  • 没有启动Xen 的xend daemon
    [root@linux ~]# xm create -c centos5
    Using config file "./centos5".
    Error: Unable to connect to xend: Connection refused. Is xend running?
    
    如上所述,肯定你没有启动xend 这个daemon 的啦!直接启动他即可:『/etc/init.d/xend start』


  • 使用到错误的核心或者domain-0 未以新xen 核心开机
    [root@linux ~]# xm create -c centos5
    Using config file "./centos5".
    Error: (22, 'Invalid argument')
    
    然后请到登录档内看看,亦即是/var/log/xen/xend.log 档内,如果出现如下的错误:
    [root@linux ~]# cat /var/log/xen/xend.log
    [2007-10-17 13:18:48 xend.XendDomainInfo 31254] ERROR 
    (XendDomainInfo:203) Domain construction failed
    
    很有可能就是你的核心档案用错。此时请检查一下你的设定档,看看『kernel』的项目是否设定正确?我们务必要使用xen 相关的核心来开机才行啊!


  • SELinux 或者是档案权限的问题
    [root@linux ~]# xm create -c centos5
    Using config file "/etc/xen/centos5".
    Error: Kernel image does not exist: /boot/vmlinuz-2.6.18-8.1.14.el5xen
    
    但我看过/boot/vmlinuz-2.6.18-8.1.14.el5xen 确实是存在的,可能原因为何?一般来说,这种问题应该是SELinux 的影响所致。确定方法可以用『setenforce 0』然后再重新『xm create -c centos5』测试看看, 如果确定可以登入,那表示您的/boot/vmlinuz-2.6.18-8.1.14.el5xen SELinux 安全格式内容不对。正确的核心开机类型应该是:
    [root@linux ~]# ll -Z /boot
    -rw-r--r-- root root system_u:object_r:boot_t config-2.6.18-8.1.14.el5xen
    -rw------- root root user_u:object_r:boot_t initrd-2.6.18-8.1.14.el5xen.vbird.img
    -rw-r--r-- root root system_u:object_r:boot_t symvers-2.6.18-8.1.14.el5xen.gz
    -rw-r--r-- root root system_u:object_r:system_map_t System.map-2.6.18-8.1.14.el5xen
    -rw-r--r-- root root system_u:object_r:boot_t vmlinuz-2.6.18-8.1.14.el5xen 
    
    请自行使用chcon 指令来处理SELinux 的错误吧!

  • Kernel panic 的问题
    如果出现如下的可怕画面时:
    ....前面省略....
    Loading ext3.ko module
    Creating root device.
    Mounting root filesystem.
    mount: could not find filesystem '/dev/root'
    Setting up other filesystems.
    Setting up new root fs
    setuproot: moving /dev failed: No such file or directory
    no fstab.sys, mounting internal defaults
    setuproot: error mounting /proc: No such file or directory
    setuproot: error mounting /sys: No such file or directory
    Switching to new root and running init.
    unmounting old /dev
    unmounting old /proc
    unmounting old /sys
    switchroot: mount failed: No such file or directory
    Kernel panic - not syncing: Attempted to kill init!
    
    出现这个『Kernel panic』的问题非常的多且复杂,其实主要的原因就是无法挂载根目录。因为你核心档案已经进行侦测,并且虚拟磁碟档案(initrd)也已经载入啰!那什么情况下会无法挂载根目录呢?妳应该要这样查阅:

  • 1.用来作为根目录的档案SELinux类型不对:

    首先,请先到/var/log/messages里面察看一下,如果出现如下画面:
    Oct 17 12:04:17 xen-test kernel: audit(1192593857.395:259): avc:  
     denied   { search } for pid=29687 comm="tapdisk" name="/" dev=hdc1
    ino=2 scontext=system_u:system_r:xend_t:s0 
    tcontext=system_u:object_r:default_t:s0 tclass=dir
     #上面是同一行,意思是说,该档案读取被拒绝了,因为程序的格式为:
    # scontext=system_u:system_r:xend_t:s0 ,但是你的档案格式为特殊字体部分,亦即:
    # tcontext=system_u:object_r:default_t:s0
    # 所以这个档案的读取就被『deny』了!
    
    这表示妳用来作为根目录的档案SELinux 类型不对,正确的档案类型是这样的:
    -rw-r--r-- root root user_u:object_r:xen_image_t xen.img
    
    所以妳可以使用类似底下的方式来处理:
    [root@linux ~]# chcon -t xen_image_t -R /disk2
    
    似乎连同最顶层的/disk2 都需要修改SELinux 安全内容才行!所以妳可以加-R 来让子目录生效!

  • 2. initrd虚拟磁碟没有载入正确的模组

    另一个可能原因就是虚拟磁碟并没有载入domain-U需要的模组,所以妳必须要仔细看上面的输出讯息有没有这个项目:
    Creating block device nodes.
     Loading xenblk.ko module
    XENBUS: Timeout connecting to device: device/vbd/2049 (state 3)
    Loading xennet.ko module
    netfront: Initialising virtual ethernet driver.
    netfront: device eth0 has flipping receive path.
    Loading uhci-hcd.ko module
    
    这表示已经载入了xen的相关模组,如果你的画面没有这个讯息时,请参考前一小节关于虚拟磁碟的说明。并且更新你的domain-U设定档吧!

  • 3.设定档内容写错

    很多时候我们都会打错字~实在很麻烦~所以如果上述两点妳都确认过了,接下来请检查一下你的打字有没有问题。假设我的xen档案是放置到/disk2/xen/xen.img里头,那么两个地方要注意:
    [root@linux ~]# vi /etc/xen/centos5
    name = "centos5"
    kernel = "/boot/vmlinuz-2.6.18-8.1.14.el5xen"
    ramdisk = "/boot/initrd-2.6.18-8.1.14.el5xen.vbird.img"
    memory = "128"
    vcpus = 1
    vif = [ '' ]
    disk = [ 'tap:aio: /disk2/xen/xen.img,sda1 ,w' ]
    root = " /dev/sda1 ro"
    
    模拟的装置(disk 项目内) 以及根目录的所在装置(root 的项目) 需要配合成功,否则就会失败了!当然啦,模拟的装置也必须要跟实际的档案相同才行喔!


  • domain-U 本身的问题
    如果开机已经到达下面的状况时:
    unmounting old /sys
     INIT: version 2.86 booting
                    Welcome to CentOS release 5 (Final)
                    Press 'I' to enter interactive startup.
    正在设定时钟(localtime): 三10月17 13:24:28 CST 2007 [ 确定 ]
    正在启动udev: [ 确定 ]
    ....中间省略....
    正在检查档案系统
    Checking all file systems.
    [/sbin/fsck.ext3 (1) -- /] fsck.ext3 -a /dev/hda1
    fsck.ext3: No such file or directory while trying to open /dev/hda1
    /dev/hda1:
    The superblock could not be read or does not describe a correct ext2
    filesystem. If the device is valid and it really contains an ext2
    filesystem (and not swap or ufs or something else), then the superblock
    is corrupt, and you might try running e2fsck with an alternate superblock:
        e2fsck -b 8193 
    
    [失败]
    
    *** 检查档案系统时发生错误。
    *** 系统将带您进入shell 模式; 然后重新开机
    *** 当您离开shell 时。
    Give root password for maintenance
    (or type Control-D to continue):
    
    注意到上面特殊字体的部分,既然已经出现了INIT 的字样,这表示domain-U 已经通过了核心侦测、 根目录挂载等动作,且已经顺利的在执行/sbin/init 这个指令了,因此我们可以确信所有的Xen 设定都是正确的, 可能发生的错误就在/disk2/xen/xen.img 这个档案内的配置了。妳可能需要依据开机流程一个一个的去处理相关的错误喔!最可能发生的就是在domain-U 的/etc/fstab 啰~

大标题的图示其他半虚拟化的安装方式
由前一小节的泛用实例我们可以了解,如果domain-U的根目录来源为复制自domain-0的话,那么我们必须要手动修改很多设定档,非常的麻烦~既然如此,有没有可能我们可以自行将安装程式放入根目录的建置呢?也就是说, 那个/disk2/xen/xen.img的内容其实就是经过安装程序而来的,而不是经由复制的。 如此一来不就所有问题都解决了,而且新安装的系统还是很干净的系统呢!确实如此!目前CentOS 5提供一个好用的软体,那就是virt-install,妳可以使用virt-install -h来察看可以使用的指令哩。 但是在开始底下的实例之前,妳必须要知道几点限制才行:


  • 最简单的安装方式为复制domain-0 的根目录来给domain-U 使用(就是前面的范例);
  • 半虚拟化的安装方式『并不支援使用光碟或DVD 的安装模式』;
  • 半虚拟化仅可透过http, ftp, nfs 等方式来安装干净的Linux 系统;
看到上头的限制您应该会吓一跳吧!怎么不能用原版光碟安装喔?没错~是这样!使用原版光碟或者是原版光碟的iso 档案安装时,仅有全虚拟化环境可以达到而已。那妳应该会问,我如何制作或者是取得安装用的伺服器呢?其实我们可以利用各大专院校的FTP 网站即可啊!不需要自行设定安装伺服器的。不过,如果你的环境并非学术网路的话,最好还是自行设定一下安装伺服器比较妥当。为了每位不同所在处的朋友,所以底下我们先快速的讲一讲如何制作一部安装伺服器,然后再处理其他工作吧!^_^


小标题的图示制作安装伺服器 (Installation Server)
如前所述,半虚拟化的Xen 仅支援NFS, HTTP, FTP 等网路方式安装,并不支援原版光碟安装的模式, 因此我们得要找到可提供安装的主机才行。如果您在台湾的学术网路中, 那么可以选择国家高速网路中心或者是义守大学的FTP 网站做为来源,举例来说,如下网址就是一个案例:
万一妳是一家企业呢?那最好使用内部的主机架设成为安装伺服器来安装你的domain-U 比较妥当。以下鸟哥以NFS 的方式来简单说明一下建置CentOS5 的安装伺服器啰。

  1. 选择容量大于5GB以上的磁碟分割槽:

    由于完整的CentOS5原版光碟含有好多的套件,至少也需要3500MB以上的容量来容纳DVD碟内的所有资料。但是鸟哥的主机当初没有额外规划扩充性的问题,因此就得要加挂硬碟啦!鸟哥是将我的CentOS5原版光碟放置到俺的/disk1/yum/centos5目录下的,这个目录为另外一个独立的partition ,关于partition的处理方法请自行参考基础篇的说明,这里不赘述了。


  2. 复制所有需要的套件:

    先挂载CentOS5的光碟或DVD碟,然后直接复制即可:
    [root@linux ~]# mount /dev/cdrom /mnt 
    [root@linux ~]# mkdir -p /disk1/yum/centos5 
    [root@linux ~]# cp -a /mnt/* /disk1/yum/centos5 
    [root@linux ~]# umount /mnt
    
    如果妳是使用光碟的话,那么上述的动作就得要进行六次,因为CentOS5 共有六片光碟。而且每片光碟内会有一些重复的档案,因此系统会警告妳『是否要覆盖?』此时按下『y』去覆盖即可。


  3. 建立安装所需要的档案关连性资料

    一般来说,使用yum的系统在他RPM档案所在的目录下都会有一个名为repodata的目录,该目录记录着档案的相关性以及一些基本的安装资讯。但因为我们将资料复制到自己的主机上,因此一些基本资料可能就不会吻合,所以我们需要重新制作出这个目录才行。制作这个目录必须要安装createrepo套件,预设的情况下是不会安装该套件的,因此我们可以这样做:
    [root@linux ~]# yum install createrepo 
    #就是安装某个套件而已,这个套件就是用在制作repodata目录的。
    
    [root@linux ~]# cd /disk1/yum/centos5 
    [root@linux centos5]# cp repodata/comps.xml /tmp 
    #先将某些安装资讯给他复制出来,准备利用。
    
    [root@linux centos5]# rm -r repodata 
    #原本的资料不需要了,将他删除掉再说。
    
    [root@linux centos5]# createrepo -g /tmp/comps.xml . 
    #重新建立好repodata目录啰!
    


  4. 启动与设定NFS档案系统

    接下来就是设定NFS啦!为什么要选择NFS呢?因为他够简单!哈哈!
    [root@linux ~]# vi /etc/exports 
    /disk1/yum/centos5 *(ro) 
    #先设定好NFS所要分享的目录所在
    
    [root@linux ~]# chcon -t public_content_t -R /disk1/yum/centos5/ 
    #确定一下你的这个目录是可以透过SELinux来管理分享的!
    
    [root@linux ~]# /etc/init.d/portmap start 
    [root@linux ~]# /etc/init.d/nfs start 
    [root@linux ~]# /etc/init.d/nfslock start 
    #将服务给他启动吧!
    
    [root@linux ~]# showmount -e localhost
    Export list for localhost:
    /disk1/yum/centos5 *
    
    如果可以看到最终的结果,那就表示你的NFS 制作妥当了!
最终可以知道我们是:
  • 安装协定使用NFS
  • 主机名称为妳这部主机的IP, 注意,不要使用127.0.0.1 来安装!
  • NFS 的路径为/disk1/yum/centos5
好了,开始来安装干净的Linux 系统在domain-U 上面吧!


小标题的图示利用virt-install 指令安装干净的CentOS
有了NFS 安装伺服器后,再来我们使用virt-install 来安装啰~ 安装的方式非常的简单,妳可以这样做即可:
1.先建立我们所需要的大档案来作为domain-U的磁碟: 
[root@linux ~]# dd if=/dev/zero of=/disk2/xen/centos5.virt.img \ 
> bs=1M count=4096 
[root@linux ~]# chcon -t xen_image_t /disk2/xen/centos5.virt.img 
#我建立了一个4GB大小的档案来作为安装之用!这个容量应该是够用的!^_^
# 比较需要注意的是,如果妳有启动SELinux 时,请注意修改档案的安全内容。

2.开始使用virt-install来安装吧!
[root@linux ~]# virt-install -n centos5_virt -r 256 \ 
> -f /disk2/xen/centos5.virt.img --nographics \ 
> -l nfs:192.168.1.254:/disk1/yum/centos5 
# -n :后面接你的domain-U的名称,这个名称的设定档会被主动建立在/etc/xen底下
# -r :后面接妳要给这个domain-U 的记忆体,目前至少需要256MB 才能够执行
# -f :后面接的就是那个要给domain-U 的大档案啰!
# --nographics :不使用图形介面来安装的意思;
# -l :后面接安装伺服器的来源。安装伺服器的写法为:
# NFS 时: nfs:主机的IP:可以安装的目录
# WWW 时: http://主机的IP/实际的/完整目录
# FTP 时: ftp://主机的IP/实际的完整目录
如果一切顺利的话,现在就能够进入安装画面了!不过请注意,您的domain-0需要开放防 ​​火墙让人家使用NFS喔!否则妳是无法顺利安装的啦!^_^ 接下来的画面鸟哥是以pietty连上domain-0之后进行画面撷取的,因为Xen的终端机介面显示本来就怪怪的,加上鸟哥所使用的画面较小,所以您会发现怎么字体都会跑掉~真是不好意思~总之,跟一般文字介面的安装方式是一模一样啦!让我们开始来看看图示吧!




  • 1.语系的选择:

    如下图所示,由于终端机模式仅有英文显示字元,因此我们直接选择『English』吧。请注意使用[Tab]按键在各个元件之间跳动喔!

    先选择语系资料
    图3-1、先选择语系资料


  • 2.关于domain-U安装时的IP设定:

    一般IP设定有DHCP与手动设定,如果妳的主机所在环境具有DHCP伺服器,且妳的安装伺服器有针对内部网域开放防 ​​火墙时,那为了方便,妳可以直接使用DHCP协定即可,如下图所示:(一般来说,鸟哥都会建议先取消IPv6的支援)

    设定IP 取得为DHCP 或者是手动直接给予(Manual)
    图3-2、设定IP 取得为DHCP 或者是手动直接给予(Manual)

    万一妳的主机所在环境没有提供DHCP 的服务时,那妳的IP 就得要手动给予了。在上图当中请选择『 Manual configuration 』项目,则会出现如下图所示的情况,请填入区域网路的IP 参数吧。在本例中鸟哥的domain-U IP 设定为192.168.1.31/255.255.255.0 啰~

    手动设定IP 的示意图
    图3-2-1、手动设定IP 的示意图


  • 3.欢迎画面与分割槽警告讯息:

    接下来仅是说明欢迎的画面,还有,因为我们使用的档案会被视为『一颗硬碟』而不是一个partition ,所以会有警告讯息说明要注意的地方而已。请留意,在预设的情况下, 模拟的硬碟代号为/dev/xvda喔!

    只是欢迎画面!
    图3-3、只是欢迎画面!

    只是一个警告讯息,直接OK 过去!
    图3-4、只是一个警告讯息,直接OK 过去!


  • 4.开始进行磁碟分割的动作:

    进入安装模式后,这个地方最重要!我们刚刚建立了一个4GB的档案作为硬碟之用,而这颗模拟硬碟的磁碟为/dev/xvda,我们知道在安装的时候最重要的两个partition为/与swap ,所以就得要进行底下的分割咯!如下所示,首先我们必须要建立一个客户自订的分割情况(Create custom layout),请使用[Tab]按键选择如同下图的说明:

    决定分割的模式,请使用Custom layout
    图3-5、决定分割的模式,请使用Custom layout

    接下来进入到下图之后,我们必须要建立根目录(/) 与虚拟记忆体(swap),在这里我设定根目录为3200MB, 至于swap 则设定256MB。建立的方法依序如下:

    进入分割画面的情况
    图3-6、进入分割画面的情况

    依照图中的说明,分别选择各项参数
    图3-7、依照图中的说明,分别选择各项参数

    另外一个Swap 的设定方法
    图3-8、另外一个Swap 的设定方法

    若前两个画面设定妥当后,最后妳会看到如下的图示,检查看看是否一个根目录与一个swap 呢?若没问题的话,就按下[OK] 吧!

    最终的分割表状态
    图3-9、最终的分割表状态

    只是警告虚拟记忆体比实体记忆体少,不用理会他!
    图3-10、只是警告虚拟记忆体比实体记忆体少,不用理会他!


  • 5. boot loader以及开机选项

    设定到此,我们可以开始来决定开机管理程式的相关动作了。首先,当然一定需要boot loader啊!所以如同下图,我们要使用Grub啰!

    使用grub 作为开机选单
    图3-11、使用grub 作为开机选单

    在预设的情况中,domain-U 所使用的终端介面(console) 为利用xvc0 这个装置来处理的, 这个部分预设会出现,所以不必理会他!

    domain-U 所使用的终端介面装置
    图3-12、domain-U 所使用的终端介面装置

    是否需要开机选单密码? 不需要吧?
    图3-13、是否需要开机选单密码?不需要吧?

    选单只有一个,所以就不用改了。
    图3-14、选单只有一个,所以就不用改了。

    当然是安装在/dev/xvda 的MBR 中!
    图3-15、当然是安装在/dev/xvda 的MBR 中!


  • 6.网路设定参数:

    再来就是网路参数的设定部分,鸟哥建议您可以先随便设定,未来要使用这个domain-U时,再详细的设定即可。在这里鸟哥都使用预设值来指定而已。

    使用预设的DHCP 与IPv4 即可
    图3-16、使用预设的DHCP 与IPv4 即可

    主机名称也先不要设定,使用DHCP 预设值
    图3-17、主机名称也先不要设定,使用DHCP 预设值


  • 7.时区与root密码:

    因为我们使用台湾时区,所以这里要仔细的选择喔!

    时区请务必选择台湾啊!
    图3-18、时区请务必选择台湾啊!

    root 密码要设定,不要随便啊!
    图3-19、root 密码要设定,不要随便啊!


  • 8.套件安装的选择以及实际开始安装:

    由于我们希望的domain-U是用来进行伺服器架设的,所以这里鸟哥选择Server而已,如下图所示。整体安装起来差不多是1.x GB的容量而已喔!

    仅选择Server 的安装设定
    图3-20、仅选择Server 的安装设定

    仅是分析套件的相依性画面而已
    图3-21、仅是分析套件的相依性画面而已,请等待!

    这个是通知讯息,告知你的选择将会被记录到该处
    图3-22、这个是通知讯息,告知你的选择将会被记录到该处

    看到否,开始安装的整个过程
    图3-23、看到否,开始安装的整个过程

    安装完毕,请重新开机吧!
    图3-24、安装完毕,请重新开机吧!

    重新开机完毕后,出现等待登入的画面示意
    图3-25、重新开机完毕后,出现等待登入的画面示意

    整个过程非常的简单,就如同妳在安装一部文字介面的Linux主机一般。从开始安装到结束的整个过程中,花费比较多时间在设定项目,完整安装差不多10分钟就搞定了。这还是因为鸟哥使用旧型主机来安装的,鸟哥曾以新P4主机来安装过这一整个流程,开始安装到结束不到3分钟,实在是非常的快速啊! 接下来妳可以查阅一下/etc/xen/centos5_virt显示的内容,该档案是由virt-install主动帮我们建立的,我的资料如下所示:


    [root@linux ~]# cat /etc/xen/centos5_virt
    # Automatically generated xen config file
    name = "centos5_virt"
    memory = "256"
    disk = [ 'tap:aio:/disk2/xen/centos5.virt.img,xvda,w', ]
    # 仔细瞧,发现xvda 了吗?就是这里决定的啦!
    
    vif = [ 'mac=00:16:3e:2f:4a:ef, bridge=xenbr0', ]
    # 可以直接指定模拟网卡的实体卡号以及使用的桥接器
    
    uuid = "9a968f71-c36b-d48a-5a03-304bb41a639f"
    # 甚至可以直接定义装置的uuid 号码呢!
    
    bootloader="/usr/bin/pygrub"
    # 没有核心了!而是利用domain-U 自己的核心来开机的!
    # 要使用domain-U 的核心来开机,就得用这个设定项目才行!
    
    vcpus=1
    on_reboot = 'restart'
    on_crash = 'restart'
    
    接下来请开始使用xm create -c centos5_virt 来启动这个干净无暇的domain-U 啰!


小标题的图示CentOS5 所提供的一个实例
虽然virt-install已经有够好用了,不过在某些情况下还是无法执行的。首先, virt-install要求domain-U在安装时一定要给予256MB的记忆体,如果妳的记忆体少于256MB时,肯定无法执行virt-install ~再者在SELinux启动的情况下,可能还会有无法执行virt-install的情况发生。还好, CentOS5提供了一个可以驱动安装程式的核心给我们来进行安装过程!接下来我们将以CentOS5官网所提供的kernel file来进行安装的实作喔! 其实整个过程挺简单的,最重要的就是必须要使用CentOS5官网所提供的核心与虚拟磁碟映像档,有这两个东西就能够处理安装的程序了。底下我们就一步一步来处理这个设定吧!




  • 0. 建立网路连线所需的DHCP 伺服器
    在预设的情况下Xen使用的网路环境为利用桥接方式(bridge)来连结实际的网路环境。但在这种模式底下domain-U在安装时,取得IP的方式主要为利用dhcp协定,使用手动的方式来设定IP却是不可行的方案!除非要转成利用NAT的模式来处理。假设我们都先不更改Xen的预设环境,那么我们就得要针对Xen的网路模式来建立一部dhcp伺服器了。 详细的dhcp伺服器建置方法请参考伺服器架设篇的介绍,鸟哥在这里仅利用一些时间很快的将整个流程处理一下吧!需要注意的是,如果妳的网域内已经有一个public的dhcp了,那么您在建置这个给domain-U用的DHCP时,特别留意不要影响到其他的dhcp主机喔!鸟哥这里假设我的domain-U的MAC为00:16:3E:00:00:11 ,所以有针对这个MAC来处理喔!


    1.先检查妳的domain-0是否有安装dhcp呢?
    [root@linux ~]# rpm -qa | grep dhcp
    dhcp-3.0.5-5.el5
    # 如果没有出现上述的套件时,请自行使用yum install dhcp 吧!
    
    2.修改DHCP的设定档 
    [root@linux ~]# vi /etc/dhcpd.conf 
    ddns-update-style none;
    subnet 192.168.1.0 netmask 255.255.255.0 {
         option routers 192.168.1.254;
         option subnet-mask 255.255.255.0;
         option domain-name "xen.test";
         option domain-name-servers 168.95.1.1;
         range 192.168.1.20 192.168.1.25;
         default-lease-time 21600;
         max-lease-time 43200;
         host dic1 {
              hardware ethernet 00:16:3E:00:00:11;
              fixed-address 192.168.1.31;
         }
    } 
    #鸟哥就是利用那个hardware ethernet来控制某个网卡来源的要求的啦!
    
    3.启动与观察 
    [root@linux ~]# /etc/init.d/dhcpd start 
    [root@linux ~]# netstat -tlunp
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    udp 0 0 0.0.0.0:67 0.0.0.0:* 22285/dhcpd
    # 重点在那个port 67 啰~
    
    4.防火墙的处理!
    [root@linux ~]# iptables -I INPUT -p udp --dport 67 -j ACCEPT 
    [root@linux ~]# iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT 
    #重点在开放用户端对于主机的连线啰!这个要设定好!
    
    如此一来DHCP 主机就设定好了,简单吧!再来开始其他的处理吧!


  • 1. 建立domain-U 所需要的虚拟磁碟
    同样的,利用dd 这个指令来建立他吧!鸟哥依旧将我的映像档放置到/disk2/xen 底下去。
    [root@linux ~]# dd if=/dev/zero of=/disk2/xen/centos5.office.img \ 
    > bs=1M count=3072 oflag=direct 
    [root@linux ~]# chcon -t xen_image_t /disk2 /xen/centos5.office.img 
    [root@linux ~]# ll -Z /disk2/xen/centos5.office.img 
    -rw-r--r-- root root user_u:object_r: xen_image_t     centos5.office.img
    
    除了要建立这个大档案之外,不要忘记那个可爱又可怕的SELinux 类型也需要同时变更!这点大家都很容易忘记!包括鸟哥在内~ @_@


  • 2. 设定终端机介面
    这个动作在前面的小节中已经讲过了,这里特别再列出来,因为如果妳没有作这个动作, 很可能在domain-U 的地方会让您无法使用console 的方式登入domain-U ,届时您可能需要使用类似ssh 的网路连线方式才能够登入domain-U 哩!而且,如果没有作这个动作,你的domain-0 则会一直在/var/log/messages 出现一些错误~实在讨厌~ 实作的方法很简单:
    [root@linux ~]# vi /etc/inittab 
    #大约在第51行的地方加入底下特殊字体的部分:
    5:2345:respawn:/sbin/mingetty tty5
    6:2345:respawn:/sbin/mingetty tty6
    co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav 
    #意思是使用agetty建立xvc0
    
    [root@linux ~]# init q 
    # init q这个指令可以让/etc/inittab的设定立刻生效而不需要重新开机!
    
    [root@linux ~]# ln -s /dev/console /dev/xvc0
    

  • 3. 下载CentOS5 用来安装Xen 的核心与映像档
    CentOS5 官网提供的可安装Xen 核心在底下的连结,分为i386 与x86_64 版本:
    鸟哥使用的是i386 的版本。下载与处理的方式可以这样做:
    [root@linux ~]# cd /boot 
    [root@linux boot]# wget \ 
    > http://mirror.centos.org/centos/5/os/i386/images/xen/vmlinuz 
    [root@linux boot]# wget \ 
    > http://mirror.centos.org/centos/5/os/i386/images/xen/initrd.img 
    #先下载这两个档案下来,为了方便记忆,所以鸟哥习惯将档名修改一下:
    
    [root@linux boot]# mv vmlinuz centos5_xen_vmlinuz 
    [root@linux boot]# mv initrd.img centos5_xen_initrd.img 
    [root@linux boot]# restorecon /boot/* 
    #最后一个动作(restorecon)在处理SELinux的问题啦!
    
    所以我们已经取得CentOS5 官网所提供的核心与映像档了!准备处理设定档啰~


  • 4. 撰写『安装用』设定档
    接下来我们得先就可安装的核心来进行设定档的编写。我这里比较有趣的地方在于几个部分:
    • 我具有NFS 安装伺服器,该伺服器IP 为192.168.1.254,路径为/disk1/yum/centos5
    • domain-U 在安装时的MAC 假设为00:16:3e:00:00:11,且透过DHCP 取得IP;
    • 使用kickstart 方式来安装,而kickstart 的设定档放置到安装伺服器的/disk1/yum/centos5/ks.xen.centos5.txt 内
    什么是kick start 呢?我们刚刚在前一小节使用virt-install 安装时,不是有很多的选择画面吗?所谓的kick start 就是将所有的选择项目都写入某一个设定档,如此一来,就可以免除手动去挑选的困扰了。因此,我们会有两个档案需要建立。首先,我们建立Xen 的设定档,档案如下:
    [root@linux ~]# vi /etc/xen/centos5_xen_install 
    kernel = "/boot/centos5_xen_vmlinuz"
    ramdisk = "/boot/centos5_xen_initrd.img"
    extra = "text ks=nfs:192.168.1.254:/disk1/yum/centos5/ks.xen.centos5.txt"
    name = "centos5_xen_install"
    memory = "128"
    disk = [ 'file:/disk2/xen/centos5.office.img,xvda,w', ]
    vif = [ 'mac=00:16:3e:00:00:11, bridge=xenbr0', ]
    vcpus = 1
    on_reboot = 'destroy'
    on_crash = 'destroy' 
    #上面比较特别的只有那个extra而已,那个是核心的额外参数说明!
    
    我们还得建立kick start 的设定档内容。其实你的CentOS 本来就有kickstart 的设定档了, 详情请参考你自己的/root/anaconda-ks.cfg 档案,您就晓得啰!更详细的kickstart 请先参考如下网页:
    鸟哥这里仅作个简单的设定而已:
    [root@linux ~]# vi /disk1/yum/centos5/ks.xen.centos5.txt 
    # 1.与安装有关的设定,尤其是NFS的设定最要紧!
    install
    nfs --server=192.168.1.254 --dir=/disk1/yum/centos5
    
    # 2. 语系的支援以及键盘对应表
    lang en_US.UTF-8
    langsupport --default en_US.UTF-8 zh_TW.BIG5 zh_TW.UTF-8 zh_HK.UTF-8 \
    zh_CN.GB18030 en_US.UTF-8
    keyboard us
    
    # 3. 网路设定,记住,要与NFS 安装伺服器同网域才行!
    network --device eth0 --bootproto dhcp
    
    # 4. 密码与防火墙还有SELinux 与时区的相关设定
    rootpw --iscrypted $1$NGE.r9ik$D9iqc2bfdpi1DYvqC2CwP.
    firewall --enabled --port=
    authconfig --enableshadow --enablemd5
    selinux --enforcing
    timezone Asia/Taipei
    
    # 5. 开机管理程式,注意那个driveorder 项目,我们的硬碟是虚拟的喔!
    bootloader --location=mbr --driveorder=xvda --append="console=xvc0"
    reboot
    
    # 6. 磁碟分割表的操作以及安装的套件资料
    clearpart --all --initlabel --drives=xvda
    part /boot --fstype ext3 --size=100 --ondisk=xvda
    part / --fstype ext3 --size=2048 --ondisk=xvda --asprimary
    part swap --size=512 --ondisk=xvda
    %packages
    @core 
    #如果妳曾经安装过Linux ,那么上面的选项对妳来说,应该不难了解。
    # 比较特殊的是rootpw 那个项目,鸟哥是由/etc/shadow 复制加密的密码来的,
    # 如此则root 的密码也设定妥当,而且是加密过的资料。
    # 在本案例中的root 密码为123456789 喔!
    
    [root@linux ~]# chcon -t public_content_t \ 
    > /disk1/yum/centos5/ks.xen.centos5.txt
    
    如此则将两个设定资料给他设定好了。接下来就是进行安装的流程喔~


  • 5. 实际安装过程
    实际安装真是太简单了!直接启动Xen即可啊!请下达:『xm create -c centos5_xen_install』吧!然后在出现一小段时间的IP侦测、硬体侦测、套件资料分析等画面后,就会主动的进 ​​入实际安装套件的画面!接下来我们啥事都不需要担心,所有的安装过程kickstart系统都会帮我们搞定的。实际上,妳要做的就只是...喝茶看报纸吧!不过如果妳的domain-0系统非常的高效能,老实说,喝茶的时间实在是不够用~ @_@,因为可能3分钟就安装完毕了~ ^_^ kickstart就是这么好用!妳可以将这一组设定放在妳的安装伺服器上面,未来想要安装一模一样的环境时,直接在安装的过程载入这个档案即可,我们不需要还手动挑选有的没有的啦!^_^




  • 6. 修改成为可以正常开机的设定档
    在上述第四个步骤时,我们所建立的/etc/xen/centos5_xen_install是专门用来安装用的设定档。既然已经安装妥当了,这个档案就不能继续的使用,否则每次都会重复的进入安装的画面,会一直不断的重新安装.... 所以接下来我们得要修改一下 ​​设定档才行。设定档可以改成底下的模样喔:


    [root@linux ~]# vi centos5_xen_run 
    name = "centos5_xen_run"
    memory = "128"
    disk = [ 'file:/disk2/xen/centos5.office.img,xvda,w', ]
    vif = [ 'mac=00:16:3e:00:00:11, bridge=xenbr0', ]
    vcpus = 1
    on_reboot = 'restart'
    on_crash = 'restart'
    bootloader = "/usr/bin/pygrub" 
    #其实就是加入那个pygrub的执行档而已。该档案的作用就是
    # 作为一个开机载入器来载入domain-U 开机所需使用的核心与虚拟磁碟。
    
    接下来如果想要使用刚刚完成的domain-U 来登入时,请使用:『 xm create -c centos5_xen_run 』来启动吧!启动的画面如下所示,妳会发现,怎么透过终端机可以跟在萤幕前面一个模样!还能看到grub 哩!真是有够棒的!

    启动domain-U 的画面
    图3-26、启动domain-U 的画面

    选择好妳所需要的开机选项后,嘿嘿!就能够在pietty 之类的环境完整的操作你的domain-U 了!说实在的,用在教学上,实在是很棒的一个好主意!

大标题的图示

小标题的图示

大标题的图示参考资料

2007/10/20:经过多日的奋战,终于将Xen的半虚拟化安装与操作的方法写出来!全虚拟化的部分还在构思中~
2007/10/24:透过网友lvan的回报,发现没有建置/dev/xvc0会有终端介面的问题,所以补上;
2007/10/24:同样透过lvan兄的回报,可以使用[ctrl]-]来离开domain-U的终端介面!谢谢lvan兄!
2008/09/09:感谢讨论区网友donyingle提供的AMD的64位元CPU的相关资讯,终于有CPU的flags了!

2007/10/20 以来统计人数
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐