Centos7下无人值守安装部署(PXE + DHCP+TFTP+ Kickstart+FTP)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos7下无人值守安装部署(PXE + DHCP+TFTP+ Kickstart+FTP)相关的知识,希望对你有一定的参考价值。

一、PXE服务简介:

PXE(preboot execute environment)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。在Linux中有多种的安装方式:HD、USB、CDROM、PXE及远程管理卡等。在我们的系统运维的生涯中,经常要安装操作系统,然而我们维护的机器不是一两台而已,一般的企业服务器数量都在几十、几百、几千、甚至上万台。这么多的机器,如果人工的一台一台去安装,那我们这些运维人员,可能要把大部分时间都花费在了安装系统上,所以,我们一般都会建立一个PXE服务器,通过网络来批量部署系统。

二、PXE部署系统自动化安装流程

(1) 设置拥有pex功能的客户端主机开机启动项为网络启动,一般默认都此选项,如果没有可自行设置bios启动项
(2) 客户端开机之后进入网络启动,此时客户端没有IP地址需要发送广播报文(pxe网卡内置dhcp客户端程序),dhcp服务器相应客户端请求,分配给客户端相应的IP地址与掩码等信息
(3) 客户端得到IP地址之后,与tftp通信,下载pxelinux.0,default文件,根据default指定的vmlinuz,initrd.img启动系统内核,并下载指定的ks.cfg文件
(4) 根据ks.cfg文件去文件共享服务器(http/ftp/nfs)上面下载RPM包开始安装系统,注意此时的文件服务器是提供yum服务器的功能的。

环境搭建部署:

环境:Centos7.0 (VM)

关闭防火墙systemctl stop firewalld,临时关闭selinuxsetenforce 0
首先我们在服务端一次性装完所需要用到的包,配置本地yum源我参考我之前写的文章centos7配置本地yum源

yum install dhcp vsftpd xinetd tftp tftp-server syslinux -y

技术图片
如图显示,安装完毕
接下来我们配置DHCP服务

cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf  ##覆盖,然后y
vim /etc/dhcp/dhcpd.conf
#以下是配置的内容,按照自己的环境配置
    subnet 10.30.40.0 netmask 255.255.255.0 
      range 10.30.40.95 10.30.40.100;
      option domain-name-servers 10.30.40.4;
      option routers 10.30.40.1;
      option broadcast-address 10.30.40.255;
      default-lease-time 600;
      max-lease-time 7200;
      next-server 10.30.40.4;  #本机ip
      filename "pxelinux.0"; #必填,最后别忘记分号啊
    

systemctl restart dhcpd #重启dhcp服务


配置完了DHCP,我们接下来配置TFTP

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 #修改这里,yes改为no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4

接下来就是引导文件的一些操作了

#我们需要将引导文件复制到tftp目录下(这里我使用的是tftp默认路劲)
#注意:下面的mnt目录是我本地光盘挂载的目录,你们如果跟我挂载的目录不一样,也需要修改成你们自己所挂载的目录
[root@localhost ~] cd /var/lib/tftpboot/
[root@localhost tftpboot] cp /usr/share/syslinux/pxelinux.0 .
[root@localhost tftpboot] cp /mnt/images/pxeboot/vmlinuz,initrd.img .    
[root@localhost tftpboot] cp /mnt/isolinux/vesamenu.c32,boot.msg .
[root@localhost tftpboot] mkdir pxelinux.cfg
[root@localhost tftpboot] cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default

然后我们修改我们刚刚复制的default文件

vim pxelinux.cfg/default
    default linux #第一行
    label linux
      menu label ^Install CentOS 7
      kernel vmlinuz
      append initrd=initrd.img text ks=ftp://10.30.40.4/ks.cfg #64行

技术图片
修改完成以后,我们把本地的自动安装文件复制到ftp的默认目录下

[root@localhost ~] cd /var/ftp/
[root@localhost ~] cp /root/anaconda-ks.cfg ks.cfg
[root@localhost ~] vim ks.cfg ##编辑五六行
        # Use CDROM installation media
    url --url="ftp://10.30.40.4/pub" #必须修改,跟下面挂载目录对应
    ------------
    %packages
    @core
    @base #加个包
    %end

技术图片
接下来我们将我们的镜像挂载到/var/ftp/pub目录(可以同时挂到两个目录)

[root@localhost ftp] mount /dev/cdrom /var/ftp/pub/
    mount: /dev/sr0 is write-protected, mounting read-only

然后重启所有的服务

[root@localhost ~] systemctl restart dhcpd
[root@localhost ~] systemctl restart xinetd
[root@localhost ~] systemctl restart tftp.socket #重要!!!
[root@localhost ~] systemctl restart tftp
[root@localhost ~] systemctl restart vsftpd

测试

技术图片
获取IP的过程,一闪而过
技术图片
大概也就是怎么个情况
技术图片

以上是关于Centos7下无人值守安装部署(PXE + DHCP+TFTP+ Kickstart+FTP)的主要内容,如果未能解决你的问题,请参考以下文章

VMware实现PXE+kickstart无人值守安装Centos7系统

VMware实现PXE+kickstart无人值守安装Centos7系统

VMware实现PXE+kickstart无人值守安装Centos7系统

PXE部署装机与Kiskstart无人值守安装

企业必备———Linux Centos7 无人值守自动化装机(PXE部署)

PXE无人值守安装