Kickstart无人值守安装系统

Kickstart无人值守安装系统

1.导言

已经或将来将从事Linux系统运维工做的读者,常常会遇到一些机器式的重复的共走,例如:有时间同时上线几十甚至上百台服务器,并且须要咱们在短期内完成系统安装。html

q  光盘安装系统===>一个的服务器DVD内置光驱百千块,百台服务器都配光驱就浪费了,由于一台服务器也就开始装系统能用的上,之后用的机会屈指可数。用USB外置光驱,插来插去也是醉了。linux

q  U盘安装系统===>仍是一样的问题,要一台一台服务器插U盘。web

q  网络安装系统(ftp,http,nfs) ===>这个方法不错,只要服务器能联网就能够安装系统了,可是还须要一台台服务器去敲键盘点鼠标。时刻想着偷懒的咱们,有没有更好的方法!apache

1.1什么是PXE

严格来讲,PXE并非一种安装方式,而是一种引导方式。进行PXE安装的必要条件是在要安装的计算机中必须包含一个PXE支持的网卡(NIC)即网卡中必需要有PXE ClientPXE(Pre-boot Execution Environment)协议可使计算机经过网络启动。此协议分为Client端和Server端,而PXE Client则在网卡的ROM中。当计算机引导时,BIOSPXE Client调入内存中执行,而后由PXE Client将放置在远端的文件经过网络下载到本地运行。运行PXE协议须要设置DHCP服务器和TFTP服务器。DHCP服务器会给PXE Client(将要安装系统的主机)分配一个IP地址,因为是给PXE Client分配IP地址,因此在配置DHCP服务器时须要增长2PXE设置。此外,在PXE ClientROM中,已经存在了TFTP Client,那么它就能够经过TFTP协议到TFTP Server上下载所需的文件了。centos

1.2什么是KickStart

KickStart是一种无人值守的安装方法。它的工做原理时在安装过程当中记录典型的须要人工干预填写的各类参数,并生成一个名为ks.cfg的文件。若是在安装过程当中(不仅局限于生成KickStart安装文件的机器)出现要填写参数的状况,安装程序首选会去查找KickStart生成的文件,若是找到合适的参数,就采用所找到的参数;若是没有找到合适的参数,便须要安装着手工干预了。因此若是KickStart文件涵盖了安装过程当中可能出现的全部须要填写的参数,那么安装着彻底能够只告诉安装程序从何处去ks.cfg文件,而后就去忙本身的事情。等安装完毕,安装程序会根据ks.cfg中设置重启系统,并结束安装。服务器

2.DHCP工做过程的六个主要步骤

     对于学习 DHCP来讲,很重要的一部分就是对于DHCP工做过程的理解。那么首先DHCP分为两个部分:一个是服务器端,另外一个是客户端。全部客户机的IP地址设 定资料都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;而客户端则会使用从服务器分配下来的IP地址。网络

    DHCP服务器提供三 IP分配方式:自动分配(Automatic Allocation)、动态分配(Dynamic Allocation)和手动分配。自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址以后,就永远使用这个地址。动态分配是 DHCP客户端第一次从DHCP服务器分配到IP地址后,并不是永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,以给其余客户端使 用,而手动分配是由DHCP服务器管理员专门指定IP地址。app

    DHCP客户机在启动时,会搜寻网络中是否存在DHCP服务器。若是找到,则给 DHCP服务器发送一个请求。DHCP服务器接到请求后,为DHCP客户机选择TCP/IP配置的参数,并把这些参数发送给客户端。若是已配置冲突检测设置,则 DHCP 服务器在将租约中的地址提供给客户机以前会试用Ping测试做用域中每一个可用地址的连通性。这可确保提供给客户的每一个IP地址都没有被使用手动 TCP/IP配置的另外一台非 DHCP 计算机使用。运维

    根据客户端是否第一次登陆网络,DHCP的工做形式会有所不一样。客户端从DHCP服务器上得到IP地址的整个过程分为如下六个步骤:dom

2.1寻找DHCP服务器

    DHCP客户端第一次登陆网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会 介绍这个广播信息,但只有DHCP服务器才会作出响应。

4.2分配IP地址

    在网络中接收到DHCP discover发现信息的DHCP服务器都会作出相应,它从还没有分配的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含分配的IP地址和其余设置的DHCP offer提供信息。

2.3接受 IP地址

    DHCP客户端接受到DHCP offer提供信息以后,选择第一个接收到的提供信息,而后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。

2.4IP地址分配确认

    DHCP服务器收到DHCP客户端回答的DHCP request请求信息以后,便向DHCP客户端发送一个包含它所提供的IP地址和其余设置的DHCP ack确认信息,告诉DHCP客户端可使用它提供的IP地址。而后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的 服务器外,其余的DHCP服务器将收回曾经提供的IP地址。

2.5从新登陆

    之后DHCP客户端每次从新登陆网络时,就不须要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。若是此IP地址已没法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个DHCP nack否定信息。当原来的DHCP客户机收到此DHCP nack否定信息后,它就必须从新发送DHCPdiscover发现信息来请求新的IP地址。

客户端从新登陆.如图1-1

1-1

若是客DHCP request 内的IP地址在服器端没有被使用,DHCP器回复DHCP ACK继续使用IP。如1-2

 

1-2

若是客DHCP request 内的IP地址在服器端已被使用,DHCP器回复DHCP NACKIP已被使用。1-3

 

1-3

端从新开始DHCP流程。如图1-4

1-4

2.6更新租约

    DHCP 服务器向DHCP客户机出租的IP地址通常都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。若是DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

3.PXE+KickStart自动部署操做系统实战

执行PXE+KickStart安装须要的设备:

q  DHCP服务器

q  TFTP服务器

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

q  一台存放系统安装文件的服务器,如NFSHTTP、或FTP服务器

q  一个带有PXE支持网卡的主机。

经过Kickstart+Dhcp+tftp+httpd实现

3.1查看当前系统版本

[root@kickstart ~]# cat /etc/redhat-release

CentOS release 6.7 (Final)

3.2准备环境

必须关闭selinux防火墙,临时关闭会不生效,建议修改配置文件后,重启操做系统。

[root@kickstart ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

测试环境IP地址:外网eth0NAT模式,能够上网

[root@kickstart ~]# ifconfig eth0

eth0Link encap:Ethernet  HWaddr 00:1C:42:C4:75:DD 

          inet addr:10.0.0.3  Bcast:10.0.0.255  Mask:255.255.255.0

inet6 addr: fe80::21c:42ff:fec4:75dd/64 Scope:Link

UP BROADCAST RUNNING MULTICASTMTU:1500  Metric:1

RX packets:501 errors:0 dropped:0 overruns:0 frame:0

TX packets:216 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:61453 (60.0 KiB)  TX bytes:27706 (27.0 KiB)

3.3安装DHCP服务

[root@kickstart ~]# yum -y install dhcp

[root@kickstart ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf  #拷贝dhcp配置文件

#修改配置文件/etc/dhcpd/dhcpd.conf;添加以下

ddns-update-style none;           

ignore client-updates;            

subnet 10.0.0.0 netmask 255.255.255.0 {

  range 10.0.0.100 10.0.0.200;

  option subnet-mask 255.255.255.0;

  option domain-name "internal.example.org";

default-lease-time 600;

max-lease-time 7200;

  next-server 10.0.0.3;

  filename "/pxelinux.0";

}

[root@kickstart ~]# cat /etc/sysconfig/dhcpd  #修改/etc/sysconfig/dhcpd配置文件表示dhcp将只在eth0网络接口上提供DHCP服务。

# Command line options here

DHCPDARGS=eth0

[root@kickstart ~]# /etc/init.d/dhcpd start  #启动dhcpd服务

 

DHCP注释:

ddns-update-style none;  #设置与DHCP服务相关联的DNS数据动态更新模式,实际的DHCP应用中不多用改参数,设置为none便可。   

ignore client-updates;     #不容许客户机更新DNS记录

subnet 172.16.10.0 netmask 255.255.255.0 {

        range 172.16.10.100 172.16.10.200;  #可分配的起始IP-结束IP   

        option subnet-mask 255.255.255.0;   #设置netmask

        default-lease-time 21600;           #设置默认的IP租用期限   

        max-lease-time 43200;                       #设置最大的IP租用期限

        next-server 172.16.10.20;            #告知客户端TFTP服务器ip

        filename "/pxelinux.0";              #告知客户端从TFTP根目录下载pexlinux.0

}

3.4安装TFTP服务

TFTPTrivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69

[root@kickstart ~]# yum -y install tftp-server  #安装tftp-server服务

#修改配置文件/etc/xinetd.d/tftp   disabled修改成no

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

}

[root@kickstart ~]# /etc/init.d/xinetd start  #启动服务xinetd代理服务

3.5安装httpd服务

能够用ApacheNginx提供HTTPPython的命令web不行,会有报错

[root@kickstart ~]# yum -y install httpd  #安装httpd服务

[root@kickstart ~]#sed -i "277i ServerName 127.0.0.1:80" /etc/httpd/conf/httpd.conf #修改apache配置文件

[root@kickstart ~]# /etc/init.d/httpd start #启动apache服务

[root@kickstart ~]# mkdir /var/www/html/centos6/  #建立centos66目录

[root@kickstart ~]# mount /dev/cdrom /var/www/html/centos6/  #挂载镜像文件

无论怎么弄,只要把安装光盘内容能经过web发布便可。由于是演示,若是复制镜像就有点浪费时间。但生产环境就必定要复制了,光盘读取速度有限。

3.6PXE配置引导

syslinux是一个功能强大的引导加载程序,并且兼容各类介质。SYSLINUX是一个小型的Linux操做系统,它的目的是简化首次安装Linux的时间,并创建修护或其它特殊用途的启动盘。若是没有找到pxelinux.0这个文件,能够安装一下。

 [root@kickstart ~]# yum -y install syslinux  #安装syslinux

复制配置文件

[root@kickstart ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

[root@kickstart ~]# cp -a  /var/www/html/centos6/isolinux/*  /var/lib/tftpboot/

[root@kickstart ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg

[root@kickstart ~]# cp /var/www/html/centos6/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

添加以下,配置文件

[root@kickstart ~]# cat /var/lib/tftpboot/pxelinux.cfg/default

default ks

prompt 0

 

label ks

  kernel vmlinuz

  append initrd=initrd.img ks=http://10.0.0.3/config/Centos6-ks.cfg ksdevice=eth0

# ksdevice=eth0表明当客户端有多块网卡的时候,要实现自动化须要设置从eth0安装,不指定的话,安装的时候系统会让你选择,那就不叫全自动化了。

3.6.1PXE配置文件default解析

[root@kickstart ~]# cat /var/lib/tftpboot/pxelinux.cfg/default

default vesamenu.c32  #默认加载一个菜单

#prompt 1  #开启会显示命令行’boot:’ 提示符。prompt值为0时则不提示,将会直接启动’default’参数中指定的内容

timeout 600#timeout时间是引导等待用户手动选择的时间,设为1可直接引导,单位为1/10秒。

display boot.msg

#菜单背景图片、标题、颜色。

menu background splash.jpg

menu title Welcome to CentOS 6.7!

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

#lable指定在boot:提示符下输入的关键字,好比boot:linux[ENTER],这个会启动lable linux下标记的kernelinitrd.img文件

label linux#一个标签就是前面图片的一行选项。

  menu label ^Install or upgrade an existing system

  menu default

  kernel vmlinuz #指定要启动的内核。一样要注意路径,默认是/tftpboot目录

  append initrd=initrd.img #指定追加给内核的参数,initrd.img是一个最小的linux系统

label vesa

  menu label Install system with ^basic video driver

  kernel vmlinuz

  append initrd=initrd.img 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 -

3.7上传kscfg配置文件

[root@kickstart ~]# grub-crypt  #配置root使用密码,加入修改Centos6-ks.cfg文件

Password:

Retype password:

$6$006TOzR9rk18CPQw$t/xTyZEw60OWqAho.J1oj3PRo2ib93blCIlVuFCPc6/fuCADB02LKHfNV4x7jtpNAX98TK3K8Zpem8Qkv92111

[root@kickstart ]#mkdir /var/www/html/config  建立配置文件及优化脚本站点目录

[root@kickstart html]# cat /var/www/html/config/Centos6-ks.cfg

install  安装

url --url="http://10.0.0.3/centos6"  系统文件地址,这里使用http

text  文本界面安装

lang en_US.UTF-8语言

keyboard us键盘

zerombr  清空mbr

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"  引导加载程序参数

network --bootproto=dhcp --device=eth1 --onboot=yes --noipv6 --hostname=CentOS6eth1网络配置

timezone --utc Asia/Shanghai  时区

authconfig --enableshadow --passalgo=sha512  验证配置

rootpw--iscrypted $6$006TOzR9rk18CPQw$t/xTyZEw60OWqAho.J1oj3PRo2ib93blCIlVuFCPc6/fuCADB02LKHfNV4x7jtpNAX98TK3K8Zpem8Qkv92111root密码,使用grub-crypt生成

clearpart --all --initlabel  清空分区

part /boot --fstype=ext4 --asprimary --size=100  分区/boot 100M

part swap --size=1500  分区swap 1500M

part / --fstype=ext4 --grow --asprimary --size=200  分区全部

firstboot --disable  关闭一系列服务

selinux --disabled

firewall --disabled

logging --level=info  日志记录等级info级别

reboot  重启

%packages  包组-软件名

@base

@compat-libraries

@debugging

@development

tree

nmap

sysstat

lrzsz

dos2unix

telnet

 

%post  安装完执行脚本

wget -O /tmp/optimization.sh http://10.0.0.3/config/optimization.sh &>/dev/null   下载脚本,而后执行

/bin/sh /tmp/optimization.sh 执行脚本

%end

 

3.8准备全新服务器

须要和pxe服务器内网同网段,开机经过dhcp自动获取,而后自动开始装机

3.9kickstart错误汇总

 

解决办法:

1)咱们先证实安装源服务器是正常的,咱们用其余机器下载install.img文件,使用下面的命令:

wget spacer.gifhttp://192.168.0.3/centos6/p_w_picpaths/install.img

若能够正常的下载这个文件,说明安装源服务器(即kickstart服务器)正常。

2)查找install.img文件的前一阶段是配置网卡、网关阶段,检查你的ks文件的配置的网卡部分,是否与安装源的ip不是一个网段,若不是一个网段就会形成网络不通,产生这个错误。这个问题也是困扰了我好几个小时的问题,迷惑性很大。

 

报错缘由:selinux没关   解决法:关Selinux防火,而后重启,不生效

相关文章
相关标签/搜索