摘要
通过 kiwi,您能够创建操作系统映像。本章说明了将系统映像部署到空客户端计算机中的过程。要实现此目的,必须创建包含可引导 RAW 映像的预装载映像。该文件包含两个重要部分:分区表和实际操作系统。此 RAW 映像将写入空的硬盘,且操作系统第一次引导时将扩展到剩余的磁盘空间。
要创建此类映像,请参见第 17.4.2 节 “创建映像”。构建 ISO 映像时,可在目标文件夹找到 RAW 文件。有多种方法可以将原始映像转储到磁盘。
将磁盘插入部署服务器并仅将映像复制到原始设备。
通过 HTTP 或 FTP 服务器的方式提供原始映像,并将其转储到客户端计算机的磁盘上。
创建一个网络引导映像,以获取映像并将其转储到磁盘上。这是进行大批量部署的好方法。
引导一个救援磁盘,然后从救援映像手动执行转储。
要快速启动,最好使用第 22.1 节 “从救援映像手动部署系统”中描述的方法之一。
刻录从 KIWI 构建过程获取的 ISO 映像,请参见 CD/DVD 上的第 17.4.2 节 “创建映像”。
从该媒体中引导到客户端计算机中。
选择用于安装的硬盘。
重启动客户端计算机并从硬盘引导。
使用救援系统引导客户端计算机。此类系统在所有 SUSE 安装 CD 或 DVD 上都可用。
以 root 身份登录。不要输入密码。
配置网络。如果网络中有可用的 DHCP,仅使用命令 ifup-dhcp eth0。如果必须手动执行此操作,使用命令 ip 配置网络。输出启动 DHCP 还会告诉您计算机的 IP 地址。
在网络未使用的端口(如 1234)上侦听,并通过以下命令将进来的数据转储到磁盘:
netcat -l -p 1234 > /dev/sda
在映像服务器上,通过以下命令将原始映像发送到客户端计算机:
netcat <IP of client> 1234 < $HOME/preload_image/<image_name>
传送映像时,从 CD 或 DVD 驱动器上删除救援系统,并关闭客户端计算机。在重新引导时,引导加载程序 GRUB 将在客户端启动,且 firstboot 系统将接管。
如果在相似硬件上多次安装操作系统,投入一些精力来准备操作系统的批量部署并以此尽量降低实际部署所需的时间,这是非常有用的。本章将介绍该过程。 目标是实现只需以下操作即可完成安装:插上计算机、将计算机与网络连接、启动网络引导并等待计算机关闭。
要完成此任务,必须执行以下操作:
需要一个专用计算机,该专用计算机应准备提供 PXE 引导以及 ftp 或 web 服务器以提供预装载映像。最好为计算机提供足够的内存以在内存中存放所有必需的安装数据。对于默认安装,应至少具有 4 GB 的内存。可通过 SUSE Linux Enterprise Server 完成所有必需任务。有关细节,请参见第 22.2.1 节 “设置引导并安装服务器”。
通过将操作系统的原始映像复制到新硬盘来完成实际安装。必须细心准备和测试所有功能及设置。要提供此类映像,可使用 KIWI(SUSE Linux Enterprise 操作系统的 SDK 中提供)。第 17 章 KIWI中提供了有关映像创建的更多信息。有关预装载映像的要求的更多细节,请参见第 22.2.2 节 “创建预装载映像”。
此任务要求具备一些 Linux 专业知识。第 22.2.3 节 “创建初始系统以部署预装载映像”中提供了有关通过示例安装完成此任务的方法描述。
必须命令 PXE 引导来引导安装系统,安装系统随即从服务器获取预装载映像并将其复制到硬盘。
为了在 SUSE Linux Enterprise Server 安装之后执行该任务,需要完成 4 个步骤:
按第 14.2 节 “设置存放安装源的服务器”中所述设置安装源。 选择 HTTP 或 FTP 网络服务器。
设置 TFTP 服务器以存放引导映像(该映像将在稍后步骤中创建)。第 14.3.2 节 “设置 TFTP 服务器”中对此进行了说明。
设置 DHCP 服务器以向所有计算机指派 IP 地址,并向目标系统显示 TFTP 服务器的位置。第 14.3.1 节 “设置 DHCP 服务”中对此进行了说明。
准备安装服务器 PXE 引导。第 14.3.3 节 “使用 PXE 引导”中对此有详细说明。
注意,如果您为此计算机提供了足够的内存来存放预装载映像,则实际安装过程将受益良多。此外,与使用较慢网络相比,使用千兆以太网可以显著地加速部署过程。
第 17.4.2 节 “创建映像”中描述了通过 KIWI 创建映像的过程。但是,要创建有用的映像以进行批量部署,应考虑若干注意事项:
典型的预装载映像将使用以下类型:
<type primary="true" filesystem="ext3" boot="oemboot/suse-SLES11">vmx</type>
在设置预装载映像期间,映像创建过程多次运行。本地计算机上应提供构建映像所需的安装源。
根据对预装载的所需使用情况,应花些精力来配置首次引导。请在第 20 章 部署自定义预安装中查找有关首次引导的更多细节。通过此方法,还可要求用户在系统首次引导时进行初始配置。
可以为映像配置许多附加功能,如添加更新安装源或在首次引导时进行更新。但无法在本文档中描述所有可能情况,并且(根据不同要求)预装载映像的创建可能要求深入了解创建映像系统 KIWI 以及 SUSE Linux Enterprise Server 中使用的若干其他技术。
要部署的实际映像应该可以从您在安装服务器上提供的 ftp 或 http 服务器中获取。
要运行自动部署,需要启动目标计算机上的初始 Linux 系统。在典型安装期间,内核和初始 ram 文件系统从某个引导媒体读取并由 bios 启动。所需的功能可在 ram 文件系统中实施,ram 文件系统连同内核一起充当初始系统。
初始系统必须提供的主要功能是支持硬盘访问和提供网络连接。这两个功能均依赖于要部署的硬件。原则上说,可全新创建一个初始系统,但为了简化此任务,还可修改计算机在引导期间使用的初始 ram 文件系统。
以下过程是如何创建所需初始 ram 文件系统的示例:
在目标系统上进行 SUSE Linux Enterprise Server 的标准安装。
在系统上安装包 busybox。
使用以下命令创建新的 ram 文件系统:
mkinitrd -f busybox -D eth0
注意,eth0 表示您的网络电缆挂接到的以太网设备。参数 -f busybox 将多个调用二进制文件 busybox 添加到 ram 文件系统。进行此操作后,便可在此系统中使用很多标准 unix 命令。
使用以下命令将新的 ram 文件系统和内核复制到引导服务器:
scp /boot/initrd /boot/vmlinuz pxe.example.com:
用本地引导服务器的名称或 ip 地址替换 pxe.example.com。
作为 root 用户登录到引导服务器,在您修改 ram 文件系统的位置创建一个目录:
mkdir ~/bootimage
通过 cd ~/bootimage 命令将工作目录切换到此目录。
使用以下命令解压缩先前复制的初始 ram 文件系统:
zcat ../initrd | cpio -i
编辑文件 run_all.sh。
搜索以下行,删除该行及剩余部分:
[ "$debug" ] && echo preping 21-nfs.sh
在文件 run_all.sh 的结尾添加以下行:
[ "$debug" ] && echo preping 92-install.sh
[ "$debug" ] && echo running 92-install.sh
source boot/92-install.sh
[ "$modules" ] && load_modules
使用以下内容创建新脚本 boot/92-install.sh:
#!/bin/bash
if [ "$(get_param rawimage)" ]; then
rawimage=$(get_param rawimage)
if [ "$(get_param rawdevice)" ]; then
rawdevice=$(get_param rawdevice)
echo "wget -O ${rawdevice} ${rawimage}"
wget -O ${rawdevice} ${rawimage}
sync
sleep 5
echo "DONE"
fi
fi
# /bin/bash
/bin/poweroff -f
如果希望在计算机关闭前具有一个调试外壳,请删除 /bin/bash 前的注释符号。
通过命令 chmod 755 boot/92-install.sh 使此脚本可执行。
使用以下命令创建新的初始 ram 文件系统:
mkdir -p /srv/tftpboot find . | cpio --quiet -H newc -o | gzip -9 -n > \ /srv/tftpboot/initrd.boot
将内核复制到此目录:
cp ../vmlinuz /srv/tftpboot/linux.boot
初始 ram 文件系统现已准备采用两个新的内核命令行参数。参数 rawimage=<URL> 用于标识预装载映像的位置。可使用 wget 能理解的任何 URL。参数 rawdevice=<device> 用于标识目标计算机上硬盘的块设备。
在若干不同章节中详细描述了引导服务器的配置,如第 22.2.1 节 “设置引导并安装服务器”中所列。本节提供了一个核对清单,涵盖了配置系统所必需的步骤。
设置 dhcp 服务器。安装有计算机的子网需要以下附加行:
filename "pxelinux.0"; next-server 192.168.1.115;
在此示例中,192.168.1.115 是 PXE 服务器 pxe.example.com 的 ip 地址。
按照第 14.3.3 节 “使用 PXE 引导”中的描述配置 PXE 服务器。编辑 /srv/tftpboot/pxelinux.cfg/default 时,添加以下项:
default bootinstall label bootinstall kernel linux.boot append initrd=initrd.boot \ rawimage=ftp://192.168.1.115/preload/preloadimage.raw rawdevice=/dev/sda
安装 ftp 服务器并将准备好的预装载映像复制到 /srv/ftp/preload/preloadimage.raw。
通过使用 PXE 网络引导来引导目标系统以测试安装。这会自动将准备好的预装载映像复制到硬盘并在就绪时关闭计算机。