Kickstart+TFTP实现无人值守自动安装centos6.4

一.原理和概念
1.自动化安装好处
一般情况下,安装Linux需要从光驱用安装光盘启动机器,然后进入交互式安装界面输入安装所需的各种配置完成安装。在下面这些情况下,这种安装方式就会暴露出缺点:
1)机器无光驱、光驱坏了(这种情况在现实中频繁发生) 或光盘坏了,无法从光驱安装Linux。
2)软件测试人员在搭建测试环境时,需要安装大量的Red Hat Linux测试机器时。这时采用手工安装方式逐台机器安装效率会很低。
3)对IT支持人员来说,指导一个Red Hat Linux生手安装Red Hat Linux系统会耗费很多时间。日复一日重复这种工作会浪费宝贵的人力资源。
在一次性的环境配置工作完毕后,该套方案能达到非常高的自动化程度:用户只需要执行很少的手工步骤即可完成安装。安装过程中的手工步骤和自动步骤如下:
1)手工步骤:开机,选择从网络启动。
2)自动化步骤:剩余步骤,包括系统配置,硬盘分区,和程序包安装,将全部自动完成。

二. PXE讲解
(1)严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。
(2)PXE工作过程

第一步:首先,将支持PXE的网络接口卡(NIC)的客户端的BIOS设置成为网络启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向网络中的DHCP服务器索取IP地址等信息。
第二步:DHCP服务器收到客户端的请求,验证是否来自合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
第三步:客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
第四步:当服务器收到客户端的请求后,服务器会发送 pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img 这些文件给客户端
第五步:客户端会根据default文件中定义的引导顺序,启动Linux安装程序的引导内核。
第六步:客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置(通过default文件中制定的ks.cfg文件位置)。
注意:PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。
第七步:客户端成功定位到安装源位置,然后启动安装过程
三.什么是KickStart
KickStart是一种无人值守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
四.实验准备
1.一台server机作为安装服务器和引导服务器
IP:10.10.54.150
2.一台客户机client,用于测试自动化安装centos6.4
3.首先配置一台ftp服务器,匿名用户访问目录为/share,centos6.4安装源文件放在/share/centos6.4 目录下
挂载RHEL6的DVD光盘
shell> mount /dev/cdrom /mnt
shell> cd /mnt
shell> rpm -ivh vsftpd
shell> mkdir /share/centos6.4
shell> cp �Crf /mnt/* /share/centos6.4
shell> chmod 755 -R /share/centos6.4
配置ftp server主目录
anonymous_enable=yes
anon_root=/share
shell> chkconfig vsftpd on

.安装dhcp服务,同时修改配置

1.安装dhcp服务

shell> yum install dhcp -y

2.修改配置文件

shell> vi /etc/dhcp/dhcpd.conf

allow booting;
allow bootp;
next-server 10.10.54.150; #PXE服务器的IP
filename "pxelinux.0"; #文件位置,相对于tftp根目录
subnet 10.10.54.0 netmask 255.255.255.0 {
range 10.10.54.150 10.10.54.159; #动态分配的IP段
option routers 10.10.54.254;
}

3.启动dhcp服务

shell> service dhcpd restart

shell> chkconfig dhcpd on

六.安装tftp,并复制启动镜像到tftp根目录下

shell> yum install -y xinetd tftp-server

4.修改tftp配置文件

shell> vim /etc/xinetd.d/tftp
server_args =-s /tftpboot #这个目录可以不用改
disable = no #改成no

shell> service xinetd start

shell> chkconfig xinetd on

5.复制pxelinux.0文件到tftp根目录/tftpboot

#首先要安装syslinux 包和相应的软件包

shell> yum install -y perl-Crypt-PasswdMD5 perl-Digest-SHA1 syslinux

shell> cp /usr/share/syslinux/pxelinux.0 /tftpboot/          #PXE启动镜像文件

6.复制pxelinux.0配置文件到/tftpboot/pxelinux.cfg

shell> mkdir /tftpboot/pxelinux.cfg

shell> cp /share/centos6.4/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

7.复制内核文件到tftp根目录/tftpboot

shell> cp /share/centos6.4/images/pxeboot/initrd.img /tftpboot/

shell> cp /share/centos6.4/images/pxeboot/vmlinux /tftpboot/

8.复制菜单信息到tftp根目录/tftpboot

shell> cp /share/centos6.4/isolinux/boot.msg /tftpboot     #显示菜单信息

shell> cp /share/centos6.4/isolinux/splash.jpg /tftpboot    #背景图片

shell> cp /share/centos6.4/isolinux/vesamenu.c32 /tftpboot

9.修改default配置文件

shell> vim /tftpboot/pxelinux.cfg/default

default vesamenu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg #背景图片
menu title Welcome to linux
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 centos6.4.x86_64     #显示的标签
  menu default
  kernel vmlinuz6.4 #内核名称
  append initrd=initrd6.4.img ks=ftp://10.10.54.150/centos6.4/ks/ks.cfg
label centos5.9.x86_64 #告诉client ks.cfg配置文件路径

七.安装kickstart,同时在gnome环境下配置kickstart

shell> yum install -y deltarpm python-deltarpm device-mapper-mul device-mapper-multipath libhbaapi libhbalinux libconfig lldpad fcoe-utils isomd5sum iscsi-initiator-utils makebootfat pykickstart pyparted python-cryptsetup python-nss python-pyblock squashfs-tools tigervnc-server anaconda-yum-plugins anaconda system-config-language system-config-kickstart
shell> ssh -X user@IP       #虚拟机中调用
shell> system-config-kickstart         #图形界面调用
八.在图形界面配置安装参数,然后这些安装参数生成ks.cfg文件,放在/share/centos6.4/ks目录
shell> mkdir /share/centos6.4/ks
shell> vim /share/centos6.4/ks/ks.cfg #生成的安装配置文件
firewall --disabled
install
url --url="ftp://10.10.54.150/centos6.4" #安装镜像ftp路径
rootpw --iscrypted $1$kAc6NmF9$Y8p73wGrSTUGtJx10y50N/
auth --useshadow --passalgo=sha512
text
firstboot --disable
keyboard us
lang en_US
selinux --disabled
skipx
logging --level=info
reboot
timezone --isUtc Asia/Shanghai
network --bootproto=dhcp --device=eth0 --onboot=on
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /--fstype="ext4"--size=10000
part /home --fstype="ext4"--size=10000
part /boot --fstype="ext4"--size=200
part swap --fstype="swap"--size=2000
%packages
@chinese-support
%end

八测

待测试主机boot order顺序把network调到第一项,表示首先从网络引导,然后开机测试

九.一些文件作用
1.pxelinux.0
启动镜像pxelinux.0可以在syslinux安装包里获得
cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
2./tftpboot/pxelinux.cfg/default
#启动镜像pxelinux.0文件在执行过程中,会读取配置文件以确定它应该载入什么Linux内核文件来运行。所有的配置文件都放在启动服务器的/tftpboot/pxelinux.cfg/目录下,对于一台需要支持很多安装机器的安装服务器来说,把所有配置都集中在default文件中可以减轻配置文件维护负担。
cp share/centos6.4/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
3.ks.cfg
配置kickstart安装
自从 5.2 版开始,centos/red hat开始支持一个称为 kickstart 的功能,其主要目的是为了减少安装过程中的人机交互,提高安装效率。使用这种方法,只需事先定义好一个配置文件(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了繁琐的人机交互,实现无人值守的自动化安装。
要使用 kickstart ,你必须:
1) 创建 kickstart 配置文件。
2) 部署kickstart配置文件,即将kickstart配置文件放置到安装服务器上,并在安装程序的kernel参数中指定kickstart配置文件的位置。
创建kickstart配置文件
kickstart 配置文件是一个简单的文本文件,包含一个安装项目列表。每个项目对应于一个安装选择,都用关键字标明。
有如下几种方法生成kickstart配置文件:
Red Hat提供了一个样例文件。在Red Hat Linux 文档光盘中 RH-DOCS 目录里的 sample.ks 文件。你可以基于该样例来创建你自己的配置kickstart文件。
每当你安装好一台Red Hat Linux机器,Red Hat Linux 安装程序都会创建一个 kickstart 配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。
Red Hat Linux提供了一个图形化的kickstart配置工具。在任何一个安装好的Red Hat Linux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。kickstart配置工具命令为system-config-kickstart

参考文章:
http://wwdhks.blog.51cto.com/839773/852474


你可能感兴趣的:(TFTP,kickstart)