5. 下载内核源码安装包
     首先运行以下命令,获取当前的内核版本号:
     rpm -q kernel
盆盆的RHEL 5.1版本,其内核版本号为“kernel-2.6.18-53.el5”,所以其对应的内核源码安装包为kernel-2.6.18-53.el5.src.rpm。我们可以到以下地址去下载:
 
下载好以后,也可以复制到/opt目录下。
 
然后运行以下命令,以便安装编译内核所需的组件:
yum install redhat-rpm-config gcc rpm-build make gnupg
 
接下来的步骤,对于X64位的RHEL来说很重要,我们必须安装unifdef组件,否则在编译内核时,会提示"unifdef is needed by kernel****"的错误信息:
yum install unifdef
 
在运行yum时,如果提示RHN未激活之类的报错信息,请参考本文前面的“2. 订阅在线更新服务”部分进行设置。
 
然后就可以安装所下载的内核源码包了。首先进入内核源码包的保存位置,然后开始安装:
cd /opt
rpm -ivh kernel-*.src.rpm 
二、编译内核 
安装好所下载的内核源码包,可以用文本编辑器打开“/usr/src/redhat/SPECS/kernel-2.6.spec”文件
 
确保在“build%”语句前插入以下的语句:
 
对于64位RHEL,应该插入以下语句:
 patch -p1 -d ../linux-%{kversion}.%{_target_cpu} < /opt/linux_ic/patch/x2v-x64-rhel.patch 
 
如果是32位RHEL,则应该插入以下语句:
 patch -p1 -d ../linux-%{kversion}.%{_target_cpu} < /opt/linux_ic/patch/x2v-x32-rhel.patch
 
同时在该文本文件里搜索定义“%define with_xen”的行,确保将该行的定义值从0改为1,这样就可以编译带xen支持的Linux内核,否则将无法支持Hyper-V的VMBus架构:
%define with_xen 1
 
然后输入以下命令,进入该文件所在的路径,并开始编译:
cd /usr/src/redhat/SPECS
rpmbuild -ba kernel-2.6.spec
 
如果是32位RHEL,应该输入以下命令:
rpmbuild -ba --target i686 kernel-2.6.spec
 
编译的时间相当长,估计大概要6~8个小时!(笔者是晚上睡前开始编译的,第二天一早已经编译完毕),毕竟在虚机里编译,在没有安装Linux IC前,这个表现是正常的。
三、安装内核 
内核编译完毕,就可以开始安装了。
 
对于X64位系统,可以运行以下命令:
cd /usr/src/redhat/RPMS/x86_64
rpm -ivh kernel-xen-2*rpm
rpm -Uvh kernel-xen-devel-2*rpm
 
对于32位系统,可以运行以下命令:
cd /usr/src/redhat/RPMS/i686
rpm -ivh kernel-xen-2*rpm 
rpm -Uvh kernel-xen-devel-2*rpm 
 
然后运行以下命令,以便在Linux中添加相应的Hypercall适配器(x2v适配器,应该就是xen to Hyper-V的缩写吧):
cd /opt/linux_ic
perl setup.pl x2v /boot/grub/grub.conf
 
然后检查Red Hat的引导配置文件“/boot/grub/grub.conf”,应该类似下图所示。 
 
 
 
    注意如果是32位系统,则“kernel”一行应该是“kernel /x2v-pae.gz”,注意必须是“pae”(物理地址扩展)而不是“32”。
然后重启Linux虚机。 
四、安装驱动
   在Linux虚机里,微软所提供的Linux IC一共包含三个驱动,VMBus总线、网络和磁盘子系统。在安装驱动前,首先要修复到“/lib/modules”的链接:
cd /lib/modules/`uname -r` 
ln -nsf /usr/src/kernels/`uname -r`-`arch` build
 
接下来的驱动安装和SUSE没有什么区别,运行以下命令即可:
/opt/linux_ic/setup.pl drivers
 
重启Linux虚机以后,应该可以正常运行,并且所有的Synthetic组件都能够正常工作,包括网络和磁盘子系统。