龙空技术网

如何用U盘实现Citrix Hypervisor无人值守的安装

神行科技 309

前言:

当前看官们对“win10无人值守xml”可能比较注重,我们都想要剖析一些“win10无人值守xml”的相关知识。那么小编在网络上收集了一些有关“win10无人值守xml””的相关知识,希望同学们能喜欢,大家一起来了解一下吧!

基本概念

多年前的思杰合作伙伴 PoC 培训有一项附加实验叫 XenServer 的无人值守安装

(XenServer unattended installation)。如今的 Xen300 培训不再包含这个实验,但有些场

景下还是需要做 XenServer 或 Citrix Hypervisor 的自动化部署,比如一体机自动部署或者

小环境的最简部署。因此我们再次介绍如何通过定制 Citrix Hypervisor 的安装 iso,用 U 盘

实现 Citrix Hypervisor 的无人值守安装。

如果我们把 Citrix Hypervisor 的安装 iso 解压,会看到如下目录结构。请注意被红色圈

出的、和无人值守安装有关的两个文件:

isolinux.cfg

当我们在启动 Citrix Hypervisor 安装的时候按下 F2,会看到高级安装菜单:

菜单里每一个安装选项如 install、no-serial、safe 等,都是在 isolinux.cfg 文件中被定

义的。我们如果用文本编辑器打开 isolinux.cfg,能看到各安装选项的定义:

我们定制用于无人值守安装的 iso,需要修改 isolinux.cfg 文件的每一个安装项,加入

answerfile 参数:

answerfile= install

安装程序读取这个参数指定的应答文件(answerfile.xml),在安装 Citrix Hypervisor 时

指定主机的基本信息,如主机名、IP 地址、时区、root 密码、安装后自动化脚本 (post

installation script)等。

install.img

熟悉 Linux 系统安装的同学,对 ramdisk (虚拟内存盘)应该不陌生。Citrix Hypervisor

安装程序启动时,需要加载一个文件系统包含安装 Citrix Hypervisor 所需的 rpm 软件包和

驱动程序,这个文件系统就是从 install.img 这个 ramdisk (也称 initrd) 加载的。无人值守

安装所需的 answerfile.xml 和 post installation script 会被打包进 install.img。

我们如果用 gzip (XenServer 7.1.2)或 bzip2 (Citrix Hypervisor 8.2)将 install.img 解压缩,能看到 answerfile.xml 和 post installation script:

answerfile.xml

如前所述,我们通过修改 isolinux.cfg 来让安装程序读取 answerfile.xml 文件实现主机

基本信息的定制化。作为无人值守安装的应答文件,这个 XML 可以实现 Citrix Hypervisor

主机基本信息的预设定。XML 的内容简单易懂,以下是一个示例:

需要注意,可以利用这个 XML 的<script>标签指定安装后自动化脚本(post installation

script)。以下示例指定了被打包进 install.img 的脚本 postInstall.sh 作为自动化脚本:

<script>标签的 type 属性除了设为 local,还可以设为 url 或 nfs,分别指向 http:// 和server:/ 开头的地址。

<script>标签另一个重要的属性是 stage,用于设定脚本在什么阶段被自动执行,最常

用的值为 filesystem-populated,还能设为 installation-complete 或 installation-start。

关于应答文件的各种标签和属性解释,可以参考:



boot.html#create-an-answer-file-for-unattended-pxe-and-uefi-installation

post installation script

如果希望在 Citrix Hypervisor 安装结束后,自动执行一系列 xe命令自动配置 hypervisor,

如设置网卡绑定、组件资源池、导入虚拟机模板等,我们可以通过 answerfile.xml 指定一

个安装后自动化脚本(post installation script),这个脚本通常往 dom0 虚拟机的/etc/rc.d/

目录中下载或写入首次启动脚本(first boot script),first boot script 在 Citrix Hypervisor 安

装完毕的首次重启后自动执行 xe 命令配置 hypervisor。

为什么 post installation script 不直接配置 hypervisor,而需要通过 first boot script

呢?因为在 Citrix Hypervisor 的安装过程中,Dom0 虚拟机并没有启动,

XAPI 也没在运行,

于是 xe 命令也就不可能被执行,我们必须等待安装完毕 hypervisor 第一次启动后,执行

first boot script 配置 hypervisor。

以下是一个 post installation script 的例子,从网络上下载 first boot script 并在

/etc/rc3.d 目录生成链接:

这是另一个例子,用 cat 命令直接往/etc/rc.local 启动脚本追加内容:

以上两个例子,我们注意到脚本中引用 Dom0 的文件路径时,路径前都加上了位置参

数$1,stage 设为 filesystem-populated 的脚本都会被传入位置参数$1,指向 Dom0 根

文件系统的加载点(mount point)。

还有一个极易被忽略的细节:如果我们在 Windows 系统中编写脚本,生成的换行符是由 CR (\r) 和 LF (\n) 两个字符组成的。这样的脚本在 Linux/UNIX 中运行会报错,原因是

Linux/UNIX 环境的换行符是单个字符 LF (\n),导致脚本无法被正常识别。

我们可使用文本编辑器检查文件换行符,以下文件使用了 Windows 换行符 (CR/LF):

这个文件则使用了 Linux/UNIX 换行符 (LF):

因此,强烈建议在 Linux 环境编写 post installation script,这样生成的换行符是

Linux/UNIX 标准;或者在 Windows 环境写好脚本后,通过文本编辑器的转换功能替换为

Linux/UNIX 换行符:

制作无人值守 Citrix Hypervisor iso

作为预备工作,我们找一台 Linux 机器,用 mkdir 创建以下几个目录:

/mnt/iso –

加载通过 Citrix Hypervisor iso 创建的回环设备

/mnt/iso.unpacked –

存放 Citrix Hypervisor iso 的解压数据

/mnt/img.unpacked –

存放 install.img 的解压数据

第一步,我们利用原始的 Citrix Hypervisor iso 创建一个回环设备,并解压 iso 的内容

到 iso.unpacked 目录:

mount -o loop,ro CitrixHypervisor-8.2.0-install-cd.iso /mnt/iso

cd /mnt/iso

find . | cpio -pdm /mnt/iso.unpacked

接下来,我们通过 bzip2 将原始的 install.img 解压缩到 img.unpacked 目录:

cd /mnt

bzcat iso.unpacked/install.img | ( cd img.unpacked && cpio -idu --quiet )

注:这里用到了 bzcat,因为 Citrix Hypervisor 8.2 的 install.img 用了 bzip2 压缩。如果咱们定制的是 XenServer 7.1.x 的 iso,install.img 使用 gzip 压缩的,则需要用 zcat 替

代 bzcat:

zcat iso.unpacked/install.img | ( cd img.unpacked && cpio -idu --quiet )

然后,我们将预先创建好的应答文件和 post installation script 复制进 img.unpacked:

cp answerfile.xml /mnt/img.unpacked

cp postInstall.sh /mnt/img.unpacked/script/

重新打包 install.img:

(cd /mnt/img.unpacked && find . | sort | cpio -o -H newc | bzip2 -9c ) >

/mnt/install.img

注:由于 8.2 的 install.img 使用的是 bzip2 压缩,这里就运行了 bzip2 命令;如果是

7.1.x,则改用 gzip:

(cd /mnt/img.unpacked && find . | sort | cpio -o -H newc | gzip -9c ) >

/mnt/install.img

将新的 install.img 放入 iso.unpacked 目录:

mv /mnt/install.img /mnt/iso.unpacked

修改 iso.unpacked 目录中的 isolinux.cfg,给每个安装项指定应答文件:

sed -i 's/console=tty0/console=tty0\ answerfile=file\:\/\/\/answerfile\.xml\

install/g' /mnt/iso.unpacked/boot/isolinux/isolinux.cfg

重新打包 Citrix Hypervisor iso:

genisoimage

-o xs82-new.iso

-b boot/isolinux/isolinux.bin

-c

boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R -V

"Citrix Hypervisor 8.2 Base Pack" /mnt/iso.unpacked

最后,我们将定制化的 Citrix Hypervisor iso 通过 iso 工具写入 U 盘,这里我们用了

Rufus:验证无人值守安装

找台主机通过刚才制作的 U 盘启动,如果一切顺利,将依次看到以下画面:最后,验证应答文件的设置是否正确应用,post install script 是否正常执行。

标签: #win10无人值守xml