在Hyper-V里安装Red Hat Enterprise Linux

简介:

本文介绍的是如何在Hyper-V虚机上安装Red Hat Enterprise Linux Server(RHEL),以X64位RHEL 5.1版本为例。

其实,严格意义上来说,Hyper-V也属于Para-Virtualization(部分虚拟化)的范畴,只不过微软有专门的术语叫做Enlightenment。

所谓Linux的Hyper-V支持,关键是要让Linux成为Enlightened OS,也就是说要理解底层Hypervisor的存在。这需要在Linux虚机里启用xen的内核支持,并安装对应的Hypercall适配器。

为什么要安装Hypercall适配器(Adaptor)?原因是Linux里没有Windows中的WinHv组件,无法把应用程序的常规调用转化成Hypervisor能够理解的Hypercall调用。Hypercall适配器是一个很薄的软件层,以便把来自Linux内核的基于xen的虚拟化函数调用,翻译成Hyper-V能够理解的Hypercall函数调用。这样Linux虚机就可以充分利用Hyper-V的高速内存总线VMBus所带来的性能极大提升,从而极大地改进性能。

而这需要专门的Linux IC,并且可能需要重新编译Linux内核,就目前来说(2009年5月7日),SUSE的安装最简单,不需要内核的重新编译。Red Hat相对复杂些,需要对内核进行编译,这比较消耗时间。

这里补充orpheus兄弟的提问

微软的Hyper-V层目前还没给linux提供直接调用的接口,可以这么理解吧?相对而言,VMware的ESX Server是不是做的更好呢?

盆盆的回答如下

微软和主要Linux厂商,包括Novell和Red Hat签署了互操作协议,两者之间可以兼容。而且微软和Citrix之间也有互协作关系,确保Xen和Hyper-V在更深层面的兼容性。所以不用担心Linux在Hyper-V上的表现。还有些Linux发行版本,虽然微软没有提供官方技术支持,但是实际上也可以顺利安装。VMware采用完全不同的架构,其内部架构对上层的虚机来说是不可见的,并不是采用Hyper-V/Xen那样的Para-Virtualization架构。曾经有高手做过比喻:VMware是一个浑身包裹着印度纱丽的美女,只能远远看到其绰约的身姿;而Xen则是穿着三点式的美女,能让您看到更多…当然,也不能完全这样进行区分,其实VMware也有Para-Virtualization的实现,大家都并存多种虚拟化手段,不能简单地说孰优孰劣。

本文的实验分为四个步骤,为了防止中间的误操作,推荐每个步骤都用Hyper-V的快照功能新建一个快照,以便一旦出错,可以快速回复到先前的状态。对于生产系统,在最后成功以后,请确保删除所有的快照,以便Linux虚机工作在最佳状态下。

本文本非完全由盆盆所原创,其中大多数的实验步骤和脚本、或者相关命令参考自国外的博文,该博文原链接如下:(如果您要转载,请确保加上这句话)

http://www.jules.fm/Logbook/files/win2008_linuxic_rc2_rhel.html

一、准备工作 

1. 确认Linux系统的版本

如果还没有安装,可以查看其安装光盘映像名称,如果是X64位,应该是类似如下形式:

rhel-5.1-server-x86_64-dvd

如果是32位,则应该是类似如下形式:

rhel-5.1-server-i386-dvd

如果已经安装,则可以运行以下命令:

uname -a

如果结果是“…x86_64 x86_64 x86_64 GNU/Linux”,则表示是X64位版本。

提示

本文中所涉及的所有命令或者语句,均可以直接复制,然后在Hyper-V虚机中单击剪贴板、输入剪贴板文本,即可快捷方便地输入文本内容。

2. 订阅在线更新服务 
必须订阅其RHN软件在线更新服务,否则在编译内核时会报错(对于X64位来说)。

订阅的方式有两种:

一种是购买Red Hat提供的收费服务,其报价可以参考以下网页:

https://www.redhat.com/wapps/store/catalog.html

另一种是申请临时服务,这是免费的,可以到以下网站申请(需要事先注册一个账户):

https://www.redhat.com/rhel/details/eval/

设置好以后,在Linux中单击应用程序、系统工具、软件包更新工具,按照屏幕提示输入所注册的用户名和密码,即可。

3. 下载Linux IC

   对于Linux版本,必须安装专门的IC,而不能直接在Hyper-V虚机里单击操作、插入集成服务安装盘来进行安装。

我们可以访问以下网站,以便下载Linux版本的IC,并解压缩,即可获得ISO映像文件。

http://connect.microsoft.com 
4. 安装Linux

打开Hyper-V管理器,新建一个虚机,处理器选择一个(Linux仅支持一个CPU)、内存可以是1GB。除了默认配置外,请确保添加一块旧版网络适配器,以及SCSI虚拟硬盘。添加旧版网络适配器非常重要(必须连接到外部网络,以便可以访问互联网),因为在安装Linux IC以前,我们没有办法使用支持VMBus的网卡来下载必须的软件更新。 

在安装Linux时,注意请不要安装Red Hat自带的Virtualization组件。盆盆在测试RHEL 5.2/5.3时,导致虚机无法正常引导,尚未确认是否由于安装了其自带的Virtualization组件所导致,如果有哪位老大知道,还请不吝赐教。

还有一点,请确保安装所有必须的开发工具和组件,盆盆是安装了看上去和开发有关的所有组件:)。

安装好以后,在Hyper-V虚机里挂载从connect.microsoft.com上安装的Linux IC光盘映像文件。然后将光盘里的所有文件全部复制到/opt/linux_ic目录下。

5.

下载内核源码安装包

首先运行以下命令,获取当前的内核版本号: 
rpm -q kernel

盆盆的RHEL 5.1版本,其内核版本号为“kernel-2.6.18-53.el5”,所以其对应的内核源码安装包为kernel-2.6.18-53.el5.src.rpm。我们可以到以下地址去下载:

ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/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组件都能够正常工作,包括网络和磁盘子系统。




本文转自 ahpeng 51CTO博客,原文链接:http://blog.51cto.com/markwin/160335,如需转载请自行联系原作者

相关文章
|
18天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
34 5
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
57 2
|
14天前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
89 0
|
20天前
|
关系型数据库 MySQL Linux
Linux-安装Mariadb
本文介绍了在 Alibaba Cloud Linux 系统上安装和配置 MariaDB 10.5 的步骤。包括下载安装、初始化数据库、启动服务、处理启动失败的常见问题(如权限问题),以及如何连接数据库、设置密码和允许外部连接。通过这些步骤,您可以顺利完成 MariaDB 的安装和基本配置。
37 0
|
6月前
|
NoSQL Java Linux
linux 安装 neo4j简介
Neo4j是高性能NoSQL图形数据库,利用图结构存储数据。推荐使用JDK 11配合Neo4j 3.x版本。下载3.5.9版,通过`curl`命令在Linux上获取tar.gz文件,然后解压。配置`neo4j.conf`,调整内存设置,开启远程访问。执行`./bin/neo4j start`启动,通过`http://服务器IP:7474`访问,默认凭据是username: neo4j, password: neo4j,登录后应更改密码。
521 1
|
存储 缓存 Ubuntu
【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介(二)
【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介(二)
212 0
|
Ubuntu 安全 Unix
【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介(一)
【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介(一)
260 0
|
Java Linux 开发工具
GIT在Linux上的安装和使用简介
GIT在Linux上的安装和使用简介   GIT最初是由Linus Benedict Torvalds为了更有效地管理Linux内核开发而创立的分布式版本控制软件,与常用的版本控制工具如CVS、Subversion不同,它不必服务器端软件支持,速度和效率也有着相当程度的提高。
1045 0