Centos7 PXE+kickstart批量装机

 什么是PXE

  • PXE,全名Pre-boot Execution Environment,预启动执行环境;
  • 通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
  • 由Intel和Systemsoft公司于1999年9月20日公布的技术;
  • Client/Server的工作模式;
  • PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;
  • PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器

PXE的工作过程

  1. PXE Client向DHCP发送请求 PXE Client从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。

  2. DHCP服务器提供信息 DHCP服务器收到客户端的请求,验证是否来至合法的PXE Client的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。

  3. PXE客户端请求下载启动文件 客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。

  4. Boot Server响应客户端请求并传送文件 当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。

  5. 请求下载自动应答文件 客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

  6. 客户端安装操作系统 将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。 OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。

批量装机软件介绍

Redhat系主要有两种Kickstart和Cobbler。

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便会弹出对话框让安装者手工填写。所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装。

Cobbler集中和简化了通过网络安装操作系统需要使用到的DHCP、TFTP和DNS服务的配置。Cobbler不仅有一个命令行界面,还提供了一个Web界面,大大降低了使用者的入门水平。Cobbler内置了一个轻量级配置管理系统,但它也支持和其它配置管理系统集成,如Puppet,暂时不支持SaltStack。

 
1、安装环境
yum -y install dhcp vsftpd  tftp  tftp-server syslinux xinetd
 
2、拷贝镜像文件到 ftp 服务器目录
  cd /var/ftp/pub
    mkdir dvd
    chown ftp:ftp dvd
    cp -rf /mnt/cdrom/*  dvd/
 
3、配置 DHCP 服务
cp  /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  /etc/dhcp/dhcpd.conf
    vi /etc/dhcp/dhcpd.conf
        subnet 10.10.10.0 netmask 255.255.255.0 {
          range 10.10.10.1 10.10.10.254;
          option routers 10.10.10.10;
          next-server 10.10.10.10; #tftp server的ip
          filename "pxelinux.0";
        }
 
4、开启 tftp 服务
vi /etc/xinetd.d/tftp
        service tftp
        {
                socket_type             = dgram
                protocol                = udp
                wait                    = yes
                user                    = root
                server                  = /usr/sbin/in.tftpd
                server_args             = -s /tftpboot       设置默认工作目录
                disable                 = no         设置开机自启动
                per_source              = 11
                cps                     = 100 2
                flags                   = IPv4
        }
    mkdir /tftpboot 
 
5、创建相关目录并拷贝所需文件   
mkdir -p /tftpboot/pxelinux.cfg  
cp /var/ftp/pub/dvd/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
cp /usr/share/syslinux/pxelinux.0  /tftpboot/
chmod 644  /tftpboot/pxelinux.cfg/default
cp /var/ftp/pub/dvd/isolinux/* /tftpboot/
 
6、开启相关服务并设置为自动启动
systemctl start dhcpd.service
systemctl enable dhcpd.service
systemctl start xinetd.service
systemctl enable xinetd.service
systemctl start vsftpd.service
systemctl enable vsftpd.service
 
systemctl --failed     --- 查看自启失败的服务
systemctl list-unit-files | grep enabled    查看开机自启服务
 
[root@chenyun ~]# systemctl list-unit-files | grep xinetd
xinetd.service                                enabled
 
7、配置 kisckstart 无人值守安装脚本
yum -y install system-config-kickstart
system-config-kickstart
cp ks.cfg    /var/ftp/pub/
 
vi /tftpboot/pxelinux.cfg/default(添加)
    default linux
 
    label linux
        menu label ^Install CentOS 7
        menu default
        kernel vmlinuz
        append initrd=initrd.img  ks=ftp://10.10.10.10/pub/ks.cfg --kopts='net.ifnames=0 biosdevname=0'
 
Kickstart配置程序
 
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
 
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$.MSSAnFP$8iIIoqoKQvb9zDwsRGUpO/
# System language
lang en_US
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
 
 
# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=static --device=ens33 --gateway=10.10.10.1 --ip=10.10.10.100 --nameserver=114.114.114.114 --netmask=255.255.255.0
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="ftp://10.10.10.10/pub/dvd"
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=300
part swap --fstype="swap" --size=2048
part / --fstype="xfs" --grow --size=1
 
%packages
@system-management-snmp
@^minimal
@compat-libraries
@debugging
@development
net-tools
lsof
tree
nmap
sysstat
lrzsz
dos2unix
telnet
wget
vim
bash-completion
 
%end
 
 
posted @ 2020-03-25 00:01  向云而生(陈云)  阅读(208)  评论(0编辑  收藏  举报