您的位置:首页 > 理论基础 > 计算机网络

Kickstart+PXE定制网络批量自动安装

2012-11-22 16:11 691 查看
什么是KickStart

KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

什么是PXE

PXE(preboot execute environment)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

网络拓扑图:





在机房中批量上线安装服务器通常会使用如上图所示的结构批量安装,由于我们的工作电脑通常都是windows系统(office需要),所以再装个VMware虚拟机,在虚拟机中架设PXE server不失为一种好方法。

VMware workstation虚拟机的设置:安装好CentOS并且虚拟机网络连接方式为桥接(bridge)

以下所有配置都在虚拟机中的CentOS完成:

使用PXE+Kickstart就可以制作网络多机器自动安装,网络安装的方式有三种:NFS、HTTP和FTP。综合起来看,部署这样的自动安装环境需要的条件是:

1.DHCP 服务器

2.TFTP 服务器

3.KickStart所生成的ks.cfg配置文件

4.一台存放系统安装文件的服务器,如 NFS、HTTP 或 FTP 服务器

5.带有一个 PXE 支持网卡的将安装的主机

把系统安装光盘mount到主机上

#mount /dev/cdrom /mnt/cdrom

安装所需要的服务

yum -y install dhcp dhcp-devel nfs-utils nfs-utils-lib tftp tftp-server syslinux

配置TFTP,制定可供下载文件的目录。

1、编辑TFTP配置文件
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
disable = no    #找到disable,修改其值为no
socket_type             = dgram
protocol                = udp
wait                    = yes
user                    = root
server                  = /usr/sbin/in.tftpd
server_args             = -s /tftpboot #此处为TFTP提供下载的位置
per_source              = 11
cps                     = 100 2
flags                   = IPv4
}

2,TFTP目录建立与设置
#mkdir /tftpboot
#cp /usr/share/syslinux/pxelinux.0 /tftpboot/
#mkdir /tftpboot/pxelinux.cfg
#cp /mnt/cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
#cp /mnt/cdrom/isolinux/* /tftpboot #把光盘中isolinux里的所有文件复制到/tftpboot下
重启动TFTP:service xinetd restart


DHCP服务器设置

# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
#
#
ddns-update-style interim;
ignore client-updates;

subnet 10.20.30.0 netmask 255.255.255.0 {
option routers          10.20.30.1;
option subnet-mask      255.255.255.0;
option domain-name-servers 10.20.30.2;

range dynamic-bootp 10.20.30.2 10.20.30.100;
default-lease-time 21600;
max-lease-time 43200;
next-server 10.20.30.2;  ###重要
filename "pxelinux.0";   ###重要
}

单就网络安装来说,只要在已经安装配置好的DHCP服务器上添加指定服务器IP和指定pxelinux.0便可。
重启动DHCP:service dhcpd restart

编辑/tftpboot/pxelinux.cfg/default

default vesamenu.c32
#prompt 1
timeout 10    #超时时间

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 ks=ftp://10.20.30.2/pub/ks.cfg initrdinitrd=initrd.img  ## 设置重点
append ks=nfs:10.20.30.2:/tftpboot/ks.cfg initrdinitrd=initrd.img ##设置重点
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrdinitrd=initrd.img xdriver=vesa nomodeset
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrdinitrd=initrd.img rescue
label local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append -

############FTP、NFS、HTTP三种安装方式的配置路径写法##########
############主要是为了让安装引导程序找到ks.cfg配置文件########
##############################################################
#  append ks=ftp://10.20.30.2/pub/ks.cfg initrdinitrd=initrd.img
#  append ks=nfs:10.20.30.2:/tftpboot/ks.cfg initrdinitrd=initrd.img
#  append ks=http://10.20.30.2/linux/ks.cfg initrdinitrd=initrd.img
##############################################################


对安装光盘的定制

#
#/root/anaconda-ks.cfg . 安装系统时由anaconda自动生成的ks.cfg文件
#vi anaconda-ks.cfg

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
#cdrom
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6  #这里我把它设置为开机DHCP自动获取IP,默认为--onboot no。
rootpw  --iscrypted $6$FLLlvfqZKzvs/9bu$oflTVbcg8ZDgfCvBCDeyIBrgswymV7.W6ZoKc0Ona0GT/SCmBvMokbD2Ty86GH.qMOzXKlh6fTUQJRq4C50FC1
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
#url --url=ftp://10.20.30.2/pub ###FTP 的方式
#nfs --server=10.20.30.2 --dir=/mnt/cdrom  ###NFS的方式
#url --url=http://10.20.30.2/linux   ###HTTP的方式
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
zerombr  #注意此处,清空MBR
clearpart --all --initlabel #重新初始化硬盘分区

part /boot --fstype=ext4 --size=200  #/boot分区,200M
part swap --size=1024                #swap 分区,1024M
part / --fstype=ext4 --grow --size=1 #根分区/,意为剩下所有的空闲空间都留给/

#repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100  #暂未明白这是什么意思,先注释掉

reboot  #安装完成后自动重启

%packages --nobase   #这里定义需要安装的包
@core                #最小化安装只有一个core就够了。

%post                #%post后面可以接一些命令、脚本。如/bin/touch /root/test.cfg,安装完成后会在/root目录下看到test.cfg文件
/bin/touch /root/test.cfg

#######################################################
#下面是我创建SSH 公钥的脚本
#######################################################
if [ ! -d /root/.ssh ]; then
mkdir /root/.ssh/
fi

if [ ! -f /root/.ssh/authorized_keys ]; then
touch /root/.ssh/authorized_keys
fi

cat <<EOF > /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDDZCIIaD6lCRhmRY4wwdhLcqfstvd0aT90Py9g0RTtZxkh7NcJuR/+zupmQ0Bet3UW2sGfiP3JSviQvi82QK9+orh0IC+cCboE0usgSH89nra0LLc0y2Iv816lhjh5Dmn9ubfT5uCkgnJMIu10qUqZbu2b/ypMwMe/5jEFBdG89
w
EOF

%end  #必须的结束标志


安装方式之一:FTP

安装vsftpd之后默认允许匿名访问FTP公共目录/var/ftp/pub,所以无需对vsftd配置文件进行修改。
只需要把ks.cfg文件和光盘中的所有文件复制到/var/ftp/pub就可以了。
#cp /root/anaconda-ks.cfg /var/ftp/pub/ks.cfg
#cp -a /mnt/cdrom/* /var/ftp/pub
#分别修改ks.cfg和/tftpboot/pxelinux.cfg/default文件对应的方式

安装方式之二:NFS

编辑NFS的配置文件,添加以下两句
/tftpboot *(ro,sync)  #/tftpboot 可被网络上任何主机读取
/mnt/cdrom *(ro,sync) #/mnt/cdrom 可被网络上任何主机读取
分别修改ks.cfg和/tftpboot/pxelinux.cfg/default文件对应的方式


安装方式之三:HTTP

1,把ks.cfg和/mnt/cdrom里的所有文件复制到apache指定的目录下
2,分别修改ks.cfg和/tftpboot/pxelinux.cfg/default文件对应的方式


本文出自 “枫之歌” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: