[Hyper

[Hyper-V][Linux]Linux Integration Services Version 3.4 修正


自从发生前一篇“[Hyper-V][Linux]Linux Integration Services Version 3.4 注意事项”所遇到的问题之后,于是在网络上开始搜寻相关文章,刚好这一两天在准备虚拟化战士的考试的时候,意外地找到一些相关数据,发觉原来之前所遇到的问题是可以解决的,于是把之前 snapshot 出来有问题的 VM,再重新还原进行测试,果然可以顺利使用 Linux Integration Services,以下将相关步骤给整理一下。

我的环境是在 Centos 6.3 的环境,如果您跟我一样已经先透过 yum update 更新过 kernel 的话,那么记得在开机的时候按下按键中断,选择较早之前没有问题的 Kernel 版本进行开机。或者您要另外建立一个环境,来重新配合新的 Kernel 版本的 Linux Integration Services,等做好之后再把新版本的 RPM 拿过来使用也是可以的。

image

因为要制作新的 rpm 套件,因此在您的 Centos 环境下也必须要有相关文件,以我个人的环境来说,就需要用 yum 来安装以下的套件:

  • rpm-build
  • redhat-rpm-config
  • kernel-devel
  • make
  • gcc
yum install rpm-build redhat-rpm-config kernel-devel make gcc

接着我们把微软的 Linux Integration Services 3.4 版本的 ISO 文件给 mount 上来之后,进入到 RHEL63 的目录中,安装 microsoft-hyper-v-rhel63.3.4-1.20120727.src.rpm 这个套件,为了要来 Rebuild 新的版本的 RPM

rpm -ivh microsoft-hyper-v-rhel63.3.4-1.20120727.src.rpm

接着你就可以切换到 ~/rpmbuild/SPECS 的目录下来检查看看是否有刚刚这个步骤所解开的“microsoft-hyper-v.spec”文件,接下来我们就可以使用 rpmbuild 的命令来重建新的 RPM 了。

rpmbuild -bb microsoft-hyper-v.spec

如果顺利的话,那么在 ~/rpmbuild/RPMS/i686 下面应该会有类似的文件,当然这个可能会有点差异,因为你的时间可能会产生不同的文件。

image

接下来我们就可以依序把旧版本的 microsoft-hyper-v-rhel63.3.4-1.20120727.i686 和 kmod-microsoft-hyper-v-rhel63.3.4-1.20120727.i686 给移除;接着再依序安装您重新建立出来的 RPM

rpm -e microsoft-hyper-v-rhel63.3.4-1.20120727.i686
rpm -e kmod-microsoft-hyper-v-rhel63.3.4-1.20120727.i686
rpm -ivh kmod-microsoft-hyper-v-rhel63.3.4-1.20130226.i686.rpm
rpm -ivh microsoft-hyper-v-rhel63.3.4-1.20130226.i686.rpm

接着再用 reboot 命令去重新开机,就算大功告成了。如果您也遇到同样的问题要处理,个人有几点建议:

  1. 在做相关处理的话,建议配合 Hyper-V 的 snapshot ( 快照 ) 的功能,避免有问题无法启动那就麻烦了。
  2. 如果您有多台 Linux 的话,可以先将 Build 出来的 RPM 备份出来,这样下次遇到同样的问题只要把文件复制进去后,执行最后一个步骤就可以了。
  3. 建议先熟悉几个 Linux 的相关命令,这样操作起来会比较顺畅
    • ls
    • yum
    • rpm