Linux之PXE高效批量网络装机

1 PXE 概念

​PXE 是由 Intel 公司开发的网络引导技术,工作在 Client/Server 模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。

​ PXE 严格来说并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。

协议分为 Client(客户端)和 Server(服务端),PXE 客户端在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE 客户端调入内存执行,由 PXE 客户端将放置在远端的文件通过网络下载到本地运行。
运行 PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE 客户端(将要安装系统的主机)分配一个 IP 地址,于是给 PXE 客户端分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。

此外,在 PXE 客户端的 ROM 中,已经存在了 TFTP 客户端。PXE 客户端通过 TFTP 协议到 TFTP 服务端上下载所需的文件。

1.1 PXE 优点

  • 规模化:同时装配多台服务器
  • 自动化:安装系统、配置各种服务
  • 远程实现:不需要光盘、U 盘等安装介质

1.2 前提条件

  • 客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。需要在BIOS 中开启开关,服务器一般没打开( BMC 界面里打开)
  • 网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置(网卡自带 DHCP 功能)
  • 服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议,使用的端口:udp 69)提供引导镜像文件的下载(网卡自带tftp服务不支持其他的远程共享服务).
  • 其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可。

2 PXE 服务的构建过程

  • PXE 客户机发出 DHCP 请求,向 DHCP 服务器申请 IP 地址
  • DHCP 服务器响应 PXE 客户机的请求,自动从 IP 地址池中分配一个 IP 地址给 PXE 客户机,并且告知 PXE 客户机: TFTP 服务器的 IP 地址和 PXE 引导程序文件 pxelinux.0,默认在 TFTP 共享目录 /var/lib/tftpboot/ 下
  • PXE 客户机向 TFTP 服务器发起获取 pxelinux.0 引导程序文件的请求
  • TFTP 服务器响应 PXE 客户机的请求,将其共享的 pxelinux.0 文件传输给 PXE 客户机
  • PXE 客户机通过网络来启动到系统安装主界面
  • PXE 客户机向文件共享服务器(ftp、http、nfs等)发起获取 centos 或 windows 系统安装文件的请求
  • 文件共享服务响应 PXE 客户机的请求,将共享的系统安装文件传输给 PXE 客户机
  • PXE 客户机进入到安装提示向导界面,用户需要手动来完成系统安装的操作
    在这里插入图片描述

2.1 搭建 PXE 远程安装服务器所需安装包

vsftpd    //用来放置安装镜像,通过ftp访问镜像安装
dhcp.x86_64 12:4.2.5-7pd-3.0.2-27.el7.x86_64.r9.el7.centos  //用来给客户机分配ip
syslinux-4.05-15.el7.x86_64.rpm    //用来提供pxe的引导程序
tftp-server.x86_64 0:5.2-22.el7.rpm    //用来提供引导镜像文件的下载
xinetd.x86_64 2:2.3.15-14.el7     //用来托管tftp
system-config-kickstart.noarch 0:2.9.7-1.el7.rpm     //用来无人值守安装

2.2 环境准备

​ 一台作为 PXE 服务器,一台作为裸金属客户机,绑定同一块网卡,裸金属客户机 VMnet1 网卡取消勾选 DHCP 配置

(1)关闭selinux和防火墙
(2)主机服务器地址:192.168.25.25  主机名:localhost
(3)一台主机:
	a. 配置双网卡 一个作用是dhcp,一个是使用网络源安装环境包
	b. DHCP部署
	c. tftp-server 服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
	d. syslinux       //用来提供pxe的引导程序
	e. xinetd       //用来托管tftp
	f. vsftpd        //用来放置安装镜像,通过ftp访问镜像安装
	g. kickstart        //用来无人值守安装

3 搭建 PXE 远程安装服务器

① 安装 dhcp 并修改 dhcp 服务的配置文件

[root@localhost ~]# yum install dhcp tftp-server.x86_64 vsftpd syslinux -y  //安装dhcp、tftp、vsftpd服务(这里我把服务一次性都安装了)
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example    /etc/dhcp/dhcpd.conf    //将dhcp配置模板复制到dhcp配置文件中
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf   //修改dhcp服务的配置文件
subnet 192.168.25.0 netmask 255.255.255.0 {   //声明要分配的网段地址
  range 192.168.25.10 192.168.25.50;   //设置地址池
  option routers 192.168.25.25;        //配置网关
  next-server 192.168.25.25;         //默认网关地址指向TFTP服务器的IP地址
  filename "pxelinux.0";            //指定pxe引导程序的文件名
}  

在这里插入图片描述
在这里插入图片描述
② 修改 TFTP 服务的配置文件

[root@localhost ~]# rpm -ql tftp-server
[root@localhost ~]# vim /etc/xinetd.d/tftp    //修改TFTP服务的配置文件
protocol            = udp		             #TFTP默认使用UDP协议	
wait                = no		             #no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接
server_args         = -s /var/lib/tftpboot	 #指定TFTP根目录(引导文件的存储路径)
disable             = no		             #no表示开启TFTP服务

在这里插入图片描述
③ 在根目录 /var/ftp 这里创建一个空目录 ,把光盘挂载到这个空目录中

[root@localhost ~·]# cd /var/ftp/
[root@localhost ftp]# ls
[root@localhost ftp]# mkdir centos7
[root@localhost ftp]# mount /dev/sr0 centos7/
[root@localhost ftp]# df
[root@localhost ftp]# cd centos7/

在这里插入图片描述
④ pexlinux.0 PXE引导程序文件

[root@localhost centos7]# cd isolinux/
[root@localhost isolinux]# ls
[root@localhost isolinux]# cp initrd.img vmlinuz /var/lib/tftpboot/
[root@localhost isolinux]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
[root@localhost tftpboot]# rpm -ql syslinux | grep pxelinux.0
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 ./
[root@localhost tftpboot]# ls

在这里插入图片描述
⑤ 准备启动菜单文件 /var/lib/tftpboot/pxelinux.cfg/default

[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default
default auto   //指定默认入口名称
prompt 1      //设置是否等待用户选择,“1”表示等待用户控制
label auto      //图形安装(默认)引导入口,label 用来定义启动项
        kernel vmlinuz   //kernel 和 append用来定义引导参数
        append initrd=initrd.img method=ftp://192.168.25.25/centos7
label linux text      //文本安装引导入口
        kernel vmlinuz
        append text initrd =initrd.img method=ftp://192.168.25.25/centos7
label linux rescue      //救援模式引导入口
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.25.25/centos7
      
[root@localhost pxelinux.cfg]# cd ..
[root@localhost tftpboot]# tree    //查看文件是否完成

在这里插入图片描述
在这里插入图片描述

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl start vsftpd

⑥ 将虚拟机Linux设置成仅主机模式,同时进入虚拟网络编辑器点击右下角更改设置,选择仅主机类型,将使用本地DHCP服务那一行勾掉,记住仅主机模式下的网段地址点击确定,此处的网段应该与真机VMnet1的网段设置为同一网段

[root@localhost tftpboot]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
IPADDR=192.168.25.25   //IP设置为同一网段的任意IP
NETMASK=255.255.255.0
GATEWAY=192.168.25.25   //网关设置成服务器的IP
#DNS1=8.8.8.8   //仅主机模式下不需要dns服务将其关闭

在这里插入图片描述
在这里插入图片描述

  • 检查真机中VMnet1中的网段
    在这里插入图片描述
    在这里插入图片描述
    ⑦ 关闭防火墙并开启配置的服务
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl start vsftpd

在这里插入图片描述
⑧ 新建一台仅主机模式的虚拟机作为客户机,客户端要求内存最少 2G在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
⑨ 验证PXE网络安装,启动客户机
在这里插入图片描述
安装成功
在这里插入图片描述
继续下一步就可以直接安装,但是如果使用kick start则可以实现无人值守安装

4 KickStart 概述

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

4.1 实现 Kickstart 无人值守安装

搭建 yum 仓库并安装kickstart图形化工具

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv *.repo bak/
[root@localhost yum.repos.d]# ls
[root@localhost yum.repos.d]# df   //查看光盘挂载位置
[root@localhost yum.repos.d]# vim local.repo
[local]
name=local
baseurl=file:///var/ftp/centos7
gpgcheck=0
enabled=1      

[root@localhost yum.repos.d]# yum clean all && yum makecache     //清除缓存并建立元数据
[root@localhost yum.repos.d]# yum install system-config-kickstart -y   //安装system-config-kickstart工具

在这里插入图片描述
在这里插入图片描述
进入服务端配置kickstart

打开"Kickstart配置程序”窗口
通过桌面菜单 “应用程序” –> “系统工具” –> “Kickstart” 打开或执行 “system-config-kickstart” 命令打开
在这里插入图片描述
配置kickstart选项
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
回到服务器终端查看是否保存成功ks.cfg文件

[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default 
default auto
prompt 1
label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.25.25/centos7 ks=ftp://192.168.25.25/ks.cfg
label linux text
        kernel vmlinuz
        append text initrd =initrd.img method=ftp://192.168.25.25/centos7
label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.25.25/centos7

在这里插入图片描述
关闭防火墙并开启配置的服务

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl start vsftpd

在这里插入图片描述
重启上个步骤安装的虚拟机或者新建一个仅主机模式的虚拟机
输入用户名
密码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值