1.2 无人职守自动安装Linux操作系统
1.2.1 大规模部署案例
目前行业中普遍采用的解决方案是通过网络方式安装并结合自动应答文件,实现无人职守自动安装部署操作系统。这种安装方式需要我们配置至少一台安装服务器,所有需要安装系统的客户端通过网络的方式连接服务器端启动安装程序,再根据服务器中存放的自动应答文件实现大规模自动安装部署系统。整体环境的拓扑结构如图所示。
这种无人职守的解决方案需要提前部署一台包括DHCP、TFTP、NFS等服务的安装服务器。
安装部署流程为:客户端首先需要在BIOS中设置通过网络启动,当客户端启动后,就会通过发送广播包的方式寻找DHCP服务器,如果找到DHCP服务器,即可向该服务器申请获得包括IP地址在内的网络参数等,并通过DHCP获得TFTP的位置,当客户端获得TFTP服务器的地址后,即可从TFTP服务
器上将启动文件下载至本机内存并运行,最终实现无盘启动的功能。我们可以在启动文件中设置Kickstart文件共享的位置,这样客户端启动后,即可自动寻找Kickstart文件实现无人职守安装系统。注意,Kickstart文件事先需要通过网络共享。在Kickstart文件中描述了如何安装设置操作系统,运行部署脚本等。
1.2.2 PXE简介
PXE是由Intel公司开发的基于客户端/服务器模式的一种技术,其核心功能是让客户端通过网络从远端服务器下载启动镜像,从而实现网络启动。整个过程中,客户端要求服务器分配IP地址,再用TFTP协议下载位于服务器上的启动镜像到本机内存中并执行,由这个启动文件完成客户端基本软件的设置。
1.2.3 Kickstart技术
Kickstart安装是目前主要的一种无人职守自动部署安装操作系统的方式,使用这种技术,我们可以很轻松地实现自动安装及配置操作系统。这种技术的核心是自动应答文件(Kickstart文件),即将本来在安装过程中需要我们手动设置的语言、密码、网络参数等通过读取自动应答文件实现自动设置。
Kickstart文件可以通过如下三中方式生成:手动书写;通过System-config-Kickstart图形工具;通过红帽的安装程序Anaconda自动生成。
1.2.4 配置安装服务器
1. DHCP服务
DHCP服务器主要实现在企业内部网络为客户端分配IP地址等网络参数。在我们的无人职守环境中,当客户端选择从网络启动后,就会通过发送广播数据包的形式寻找DHCP服务器,从DHCP服务器获得IP地址等参数后才可以通过TFTP共享读取启动文件。
2. TFTP服务
TFTP服务器为客户端提供一种简单的文件共享。
3. NFS服务
NFS是Network File System的简写,即网络文件系统。
1.2.5 自动化安装案例
安装服务器的IP地址为192.168.0.254,主机名为instructor.example.com
1.安装部署DHCP服务器
[root@instructor ~]# yum -y install dhcp [root@instructor ~]# vim /etc/dhcp/dhcpd.conf # dhcpd.conf # Sample configuration file for ISC dhcpd # option definitions common to all supported networks... log-facility local7; # A slightly different configuration for an internal subnet. subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.0.100; option domain-name "example.com"; option domain-name-servers 192.168.0.254; option routers 192.168.0.254; default-lease-time 600; max-lease-time 7200; next-server 192.168.0.254; filename "pxelinux.0"; } [root@instructor ~]# service dhcpd restart [root@instructor ~]# chkconfig dhcpd on
Subnet指定为哪个网段分配网络参数,range设置为客户端分配的IP地址池(一个地址区间),domain-name-server设置为客户端分配的DNS服务器地址,routers设置为客户端分配的网关地址,对网络启动至关重要的参数是next-server和filename,从安装部署流程可以看出,客户端启动计算机通过DHCP获得IP地址后,还需要从TFTP下载启动文件,而next-server设置的即TFTP服务器的地址,filename设置的是在该TFTP文件服务器上共享的启动文件名称,客户端通过这两个参数连接TFTP服务器,并从中下载启动文件。
2.安装部署TFTP服务器
[root@instructor ~]# yum -y install tftp-server [root@instructor ~]# vim /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
默认的TFTP配置文件为/etc/xinetd.d/tftp,在该文件中,disable的默认值为yes,即该服务为禁用状态,需要手动修改其值为no来启动TFTP服务。另外,该配置文件中server_args的值定义了共享的目录,也就是我们的共享文件要放置的目录路径。
3.将客户端所需启动文件复制到TFTP服务器
[root@instructor ~]# yum -y install syslinux [root@instructor ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
从光盘中复制启动镜像文件和启动配置文件至TFTP共享目录(此实验光盘文件路径为/123)
[root@instructor ~]# cp /123/isolinux/{vmlinuz,initrd.img,vesamenu.c32,splash.jpg} /var/lib/tftpboot/ [root@instructor ~]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@instructor ~]# cp /123/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default [root@instructor ~]# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
修改启动配置文件如下:
[root@instructor ~]# vim /var/lib/tftpboot/pxelinux.cfg/default default vesamenu.c32 #prompt 1 timeout 600 display boot.msg menu background splash.jpg menu title Welcome to CentOS 6.3! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label linux menu label ^Install or upgrade an existing system menu default kernel vmlinuz append initrd=initrd.img ks=nfs:192.168.0.254:/ks/ks.cfg label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append - [root@instructor ~]# service xinetd restart [root@instructor ~]# chkconfig xinetd on
配置说明:default指定默认引导方式。
4.创建kickstart自动应答文件
[root@instructor ~]# yum -y install system-config-kickstart [root@instructor ~]# mkdir /ks/ [root@instructor ~]# system-config-kickstart
配置说明:配置语言为英文,键盘设置为美式键盘,时区为亚洲/上海,root管理员密码。
配置说明:配置安装方式可以选择为全新安装或升级安装,本例选择全新安装,设置安装过程中所需安装文件(centos 6.3 系统光盘里的内容)通过NFS共享读取,这里的NFS服务器为192.168.0.254,共享目录为/123。
配置说明:此处配置系统引导程序,安装方式选择全新安装GRUB引导程序,GRUB引导密码未设置,将系统引导程序安装于MBR区域,内核参数未设置任何特殊参数。
配置说明:分区选择移除所有的现有分区后重新分区,并初始化磁盘标签。(这里通过图形生成的Kickstart文件无法使用LVM逻辑卷分区,如果需要使用LVM逻辑卷分区,则要手动修改生成后的Kickstart文件)
配置说明:单击Add Network Device按钮添加网络设备eth0,并设置为通过DHCP获得网络参数。
配置说明:这里是认证设置,所以的用户密码都使用SHA512算法加密。(如果需要将本机加入活动目录,可以修改LDAP参数加入活动目录)
配置说明:这里的SELinux与防火墙均被设置为激活状态,并设置防火墙开放HTTP与SSH服务。
配置说明:显示配置项目,这里勾选安装图形环境。
配置说明:安装软件时需要根据实际需要有选择地安装,每个软件包组里有很多丰富的软件,可以通过Optional packages查看详细信息。
配置说明:Pre-Installation Script可以写入在安装前需要运行的脚本。
配置说明:Post-Installation Script可以写入在安装后需要运行的脚本,常用脚本为创建YUM源、初始化用户帐号、部署软件服务等。所以配置选项设置完成后,通过File菜单中的Save保存生成Kickstart文件,本例将其保存至/ks目录下,取名为ks.cfg。
5.部署NFS服务器
[root@instructor ~]# vim /etc/exports /ks 192.168.0.0/24(sync,ro) /123 192.168.0.0/24(sync,ro) [root@instructor ~]# service rpcbind restart [root@instructor ~]# chkconfig rpcbind on [root@instructor ~]# service nfs restart [root@instructor ~]# chkconfig nfs on
系统安装完成后会生成安装文件/root/anaconda-ks.cfg