问世间 XenServer DDK 为何物?

Reading time ~1 minute

我们都知道Citrix Receiver有一种特有的能力“Say Yes to any device!!!”;那么于此相同的DDK也是这样一种工具,让XenServer对各种扩展需求说Yes!!!

我们都装过XenServer,是否都在加载supplemental packs的地方点击不装,接着做后面的安装;可是我们有没有问过什么是“supplemental packs”?

Supplemental packs consist of a number of packages along with information describing their relationship to other packs. Individual packages are in the Red Hat RPM file format, and must be able to install and uninstall cleanly on a fresh installation of XenServer. Packs are created using the XenServer Driver Development Kit (DDK). This has been extended to not only allow the creation of supplemental packs containing only drivers (also known as driver disks), but also packs containing userspace software to be installed into dom0. Examples and tools are included in the XenServer DDK to help developers create their own supplemental packs. However, for partners wishing to integrate pack creation into their existing build environments, only a few scripts taken from the DDK are necessary. **_From --> [CTX130425](http://support.citrix.com/article/CTX130425/)_**

从以上可以看到这样几个重要的内容:

  1. supplemental pack是rpm格式的软件包,可以用于XenServer安装过程中装,也可以在XenServer安装完了之后用xen命令安装

  2. 软件包不属于XenServer服务器软件基础的一部分,是用户定制化需求的扩展,这些扩展的目的有:扩展硬件设备驱动、在Dom0里装监控或者管理软件或者在Dom0里面装任何特定功能的软件或者数据。

  3. supplemental pack是由DDK来生成并且创建

  4. 创建出来的功能必须是靠谱的,应该经过仔细的评估和测试(我加的话)

那么DDK是个什么东西?它的学名是“XenServer驱动开发工具包”,但是,你可以看出它其实还能够放其它软件或者数据在Dom0中。DDK有很多版本,假如目前正在运行的XenServer的一个补丁出来了,这个补丁修改了内核版本号(通常大一点的,或者硬件驱动补丁打上后都会改变Kernel的版本号),那么不久就有相应版本的DDK出来与之匹配了。如果,你是由于某个型号Raid卡的型号不兼容,需要给XenSenver在安装过程中就加载驱动的,那么你使用的DDK的版本要和安装盘的版本一致(注意这是安装盘,kernel肯定还没有被任何补丁修改过的);在citrix知识库里面搜ddk.iso你可以发现一系列的DDK包。所以要选择合适的DDK,否则做出来的东西可能可能不被XenServer接受,在安装的时候由于内核不匹配而安装失败。

DDK下载完成之后,把ISO文件解压缩后,可以看到,原来它是一个虚拟机;用XenCenter导入到XenServer上的后,给添加一个网卡,最好有DHCP的网络,省的手工设置IP的麻烦。导入完,启动之后,需要在console上设新的root密码。设置完成之后,就可以使ssh客户端登陆了。这是一个编译环境,这意味着,它具备编译内核的各种条件,包括:它本身内核的源码、编译器、Make工具和实例代码。

实例代码很有意思,在/root/example目录下面,有我们最熟悉不过的Helloworld程序,在该目录下面直接可以执行如下的编译命令: [shell] make build-srctarballs make build-iso [/shell] 执行完这两个命令之后,我么可以看到,目录里面多出几个文件: • .iso - the supplemental pack CD image. • metadata.md5 - a fingerprint to be used to verify the integrity of a pack at installation time. • .iso.md5 - a fingerprint which can be used to verify the integrity of the ISO at download time. 没错,这些文件就是一个HelloWorld Supplemental pack的安装文件了,你可以把它copy到一个运行的XenServer服务器上用xen命令安装完,重启XenServer之后,你就能看到这个实例程序的功能是修改内核,让修改之后的内核启动的和关闭的时候能在系统启动日志中打印的hello world文字。它其实是一个正经的XenServer内核的补丁,是一个正经的Linux的内核补丁,那么这种补丁的意义和作用就有很多了,多用来扩展系统的硬件驱动(网卡、光纤卡等等)或者其它操作系统底层的功能。

说了这么多,那么当由于Raid卡不兼容,拿着安装盘,连XenServer都装不上的时候究竟该怎么搞?简单的思路是这样的。

  1. 用此安装盘在能安装的机器上,先装上一个活的XenServer,不打任何补丁

  2. 下载并导入对应版本的DDK虚拟机

  3. 下载与合适版本的驱动程序源代码;一般XenServer6内核是CentOS6的,那么下载源码的时候要看是支持CentOS6的才行;有些厂商可能会发布支持Xen或者XenServer版本的驱动,这样则更好

  4. 上传驱动源码到DDK中去,使用命令编译并制作成Supplemental pack文件;把编完的驱动在DDK中安装一下/或者手工挂在编好的Kernel补丁文件,看看是否它能够被正确的加载到DDK的内核中,应该必须能够被加载成功

  5. 把最终版本的驱动程序的ISO文件刻盘待用

  6. 在回到目标的服务器上拿着安装盘和这张驱动盘,在是否加载支持包的窗口,插入新作的驱动盘

  7. 加载Raid卡驱动后,在后续的步骤中就应该能认到硬盘了,完成剩下的安装过程

以上还只是纸上谈兵,今天由于没有找到一款老LSI RAID卡合适的驱动程序,所以没能够完全验证以上思路是否完全正确,有不足之处欢迎斧正。

如果那位合作伙伴工程师能把DDK熟练掌握,你能把以上步骤搞顺利的话;那么我认为您已经很牛了,您已经具备了对各种XenServer的扩展需求说Yes能力;因此建议和老板商量涨工资的事情,是时候了!

致谢:MaHong,HansQin的帮助

互联网规模的超融合平台

什么是互联网规模?什么是web scale风格?看下Nutanix的亮点。 阅读全文

2017DevOps采用和趋势现状-信息图

Published on February 11, 2017