一、PEX概述

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

1.PXE批量部署的优点

  规模化:同时装配多台服务器。

  自动化:安装系统、配置各种服务。

  远程实现:不需要光盘、U 盘等安装介质。

在这里插入图片描述

2.搭建PXE网络体系所需条件

客户端:

  • 客户机的网卡要支持Pxz协议(集成BOOTROM芯片),且主板支持网络引导。一般大多数服务器主机都支持,只需在BIos设置中允许从Network或LAN启动即可。

服务端:

  • 网络中有一台 DHCP 服务器,以便为客户机自动分配地址、指定引导文件位置。
  • 服务器要通过TFTP服务(简单文件传输协议)来提供系统内核和引导镜像文件的下载。

二、部署PXE远程安装服务

1.搭建PXE远程安装服务器

PXE远程安装服务器

  (预启动执行环境,在操作系统之前运行)

  PXE远程安装服务器集成了 CentOs7 安装源、TFTP 服务、DRCP 服务、FTP 服务,能够向客户机裸机发送PXE 引导程序、Linux内核、启动菜单等数据,以及提供安装文件。

服务名称作用配置文件位置
tftp用于传输vmlinuz、initrd.img、pxelinux.0、pxelinux.cfg/default/etc/xinetd.d/tftpd
xinetd管理tftp服务的后台守护程序
dhcp用于给客户端自动分配IP地址,并指定pxelinux.0文件所在位置的/etc/dhcp/dhcpd.conf
vsftpd用于给客户端传输安装源软件包根目录/var/lib/tftpboot
文件名称作用来源地址目的地址
vmlinuz内核文件/mnt/images/pxeboot//var/lib/tftpboot/
initrd.img系统镜像引导文件/mnt/images/pxeboot//var/lib/tftpboot/
pxelinux.0PXE程序引导文件syslinux程序提供 /usr/share/syslinux//var/lib/tftpboot/
pxelinux.cfg/defaultPXE启动菜单文件自建文件/var/lib/tftpboot/pxelinux.cfg/

TFTP协议

  TFTP(简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP协议的69号端口

  xinetd是新一代的网络守护进程服务程序,又叫超级服务器,常用来管理多种轻量级Internet服务。

守护进程

  守护进程也称精灵进程(Deamon),是运行在后台的一种特殊进程。守护进程独立于控制终端,它们常常跟随系统启动时启动,在系统关闭时才结束。守护进程周期性的执行某些任务或者等待处理某些事件,Linux上的大多数服务器都是用守护进程实现的。

  在系统启动中默认的守护进程的父进程ID全都是init,守护进程特征就是在程序运行名后加了一个d,但不是所有的尾字母是d的进程都是守护进程。

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客户机进入到安装提示向导界面,用户需要手动来完成系统安装的操作。

3.完整部署PEX远程安装服务器过程

安装并启用TFTP服务

[root@host ~]# yum -y install tftp-server.x86_64 xinetd.x86_64 				##安装tftp软件包和xinetd
[root@host ~]# vim /etc/xinetd.d/tftp 										##修改tftp配置文件
service tftp
{
        socket_type             = dgram										#
        protocol                = udp										#TFT服务使用是UDP协议	
        wait                    = no										#no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接
        user                    = root										#
        server                  = /usr/sbin/in.tftpd						#
        server_args             = -s /var/lib/tftpboot						#指定TFTP根目录(文件存储路径),默认设置选项,不需要修改
        disable                 = no										#no表示开启TFTP服务
        per_source              = 11										#
        cps                     = 100 2										#
        flags                   = IPv4										#
}
[root@host ~]# systemctl enable --now tftp									##设置开机自启动tftp服务,并立即启动服务
[root@host ~]# systemctl enable --now xinetd								##设置开机自启动xinetd服务,并立即启动服务

安装并启用DHCP 服务

[root@host ~]# yum -y install dhcp											##安装dhcp软件包
[root@host ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@host ~]# vim /etc/dhcp/dhcpd.conf
 ddns-update-style none;													#取消注释,禁用 DNS 动态更新
 next-server 192.168.145.15;												#指定 TFTP 服务器的地址
 filename "pxelinux.0";														#指定 PXE 引导程序的文件名
subnet 192.168.145.0 netmask 255.255.255.0 {								#声明要分配的网段地址
  range 192.168.145.100 192.168.145.200;									#设置地址池
  option routers 192.168.145.2;												#默认网关地址指向TFTP服务器的IP地址
}
[root@host ~]# systemctl enable --now dhcpd									##设置开机自启动dhcp服务,并立即启动服务
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.

准备Linux内核、初始化镜像文件

[root@host ~]# df -Th														#查看光盘是否挂载,若没有挂载可以使用mount挂载
文件系统       类型      容量  已用  可用 已用% 挂载点
devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs          tmpfs     1.9G   13M  1.9G    1% /run
tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda2      xfs        35G  4.7G   30G   14% /
tmpfs          tmpfs     378M   28K  378M    1% /run/user/0
/dev/sr0       iso9660   4.4G  4.4G     0  100% /mnt
[root@host ~]# cd /mnt/images/pxeboot/										#
[root@host pxeboot]# ls														#查看文件内容
initrd.img  TRANS.TBL  vmlinuz		
[root@host pxeboot]# cp vmlinuz /var/lib/tftpboot/							#复制 Linux系统的内核文件 到TFTP根目录下
[root@host pxeboot]# cp initrd.img /var/lib/tftpboot/						#复制 初始化镜像文件(linux引导加载模块)到TFTP根目录下

准备PXE引导程序

[root@host pxeboot]# yum -y install syslinux								#PXE引导程序由软件包 syslinux 提供
[root@host pxeboot]# cd /usr/share/syslinux
[root@host syslinux]# ls
altmbr.bin     ethersel.c32  isohdpfx.bin        mbr_c.bin     sanboot.c32
altmbr_c.bin   gfxboot.c32   isohdpfx_c.bin      mbr_f.bin     sdi.c32
altmbr_f.bin   gptmbr.bin    isohdpfx_f.bin      memdisk       sysdump.c32
cat.c32        gptmbr_c.bin  isohdppx.bin        memdump.com   syslinux64.exe
chain.c32      gptmbr_f.bin  isohdppx_c.bin      meminfo.c32   syslinux.com
cmd.c32        gpxecmd.c32   isohdppx_f.bin      menu.c32      syslinux.exe
config.c32     gpxelinux.0   isolinux.bin        pcitest.c32   ver.com
cpuid.c32      gpxelinuxk.0  isolinux-debug.bin  pmload.c32    vesainfo.c32
cpuidtest.c32  hdt.c32       kbdmap.c32          poweroff.com  vesamenu.c32
diag           host.c32      linux.c32           pwd.c32       vpdtest.c32
disk.c32       ifcpu64.c32   ls.c32              pxechain.com  whichsys.c32
dmitest.c32    ifcpu.c32     lua.c32             pxelinux.0    zzjson.c32
dosutil        ifplop.c32    mboot.c32           reboot.c32
elf.c32        int18.com     mbr.bin             rosh.c32
[root@host syslinux]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/	#复制 PXE引导程序 到TFTP根目录下

安装FTP服务,准备Centos 7安装源

[root@host syslinux]# yum -y install vsftpd									#安装vsftpd软件包
[root@host tftpboot]# cd /var/ftp/											#进入ftp配置文件目录
[root@host ftp]# ls
pub
[root@host ftp]# mkdir /var/ftp/centos7										#
[root@host ftp]# ls
centos7  pub
[root@host ftp]# cp -r /mnt/* /var/ftp/centos7/								#
[root@host ftp]# systemctl enable --now vsftpd								##设置开机自启动ftp服务,并立即启动服务
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

配置启动菜单文件

[root@host ~]# cd /var/lib/tftpboot/
[root@host tftpboot]# ls
initrd.img  pxelinux.0  vmlinuz
[root@host tftpboot]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@host tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz
[root@host tftpboot]# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto																#指定默认入口名称
prompt 1																	#设置是否等待用户选择,“1”表示等待用户控制

label auto																	#图形安装(默认)引导入口,label 用来定义启动项	
kernel vmlinuz																#kernel 和 append用来定义引导参数
append initrd=initrd.img method=ftp://192.168.145.15/centos7				

label linux text															#文本安装引导入口,label 用来定义启动项
kernel vmlinuz																#kernel 和 append用来定义引导参数
append text initrd=initrd.img method=ftp://192.168.145.15/centos7

label linux rescue															#救援模式引导入口,label 用来定义启动项
kernel vmlinuz																#kernel 和 append用来定义引导参数
append rescue initrd=initrd.img method=ftp://192.168.145.15/centos7

关闭防火墙

[root@host ftp]# systemctl stop firewalld.service 
[root@host ftp]# setenforce 0

验证PXE 网络安装

使用 VMware创建的虚拟机进行测试,虚拟机内存至少需要 2GB,否则在启动安装时可能会报错。
开启虚拟机,在提示字符串“boot:”后直接按Enter键(或执行“auto”命令),将会自动通过网络下载安装文件,并进入默认的图形安装入口;
若执行“linux text”命令,则进入文本安装入口;若执行 “linux rescue”命令,则进入救援模式。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D996ZYPK-1682353457762)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230424192016190.png)]

在这里插入图片描述

三、实现Kickstart无人值守安装

  PXE安装介质不在受限于光盘,移动硬盘等设备,大大提高了系统安装的灵活性。然而,安装期间仍需要手动选择语言,键盘类型,指定安装源等一系列交互操作,当需要批量安装时非常不方便。通过使用Kickstart工具配置安装应答文件,自动完成安装过程中的各种设置,从而无需手动干预,提高网络装机效率。

1.准备安装应答文件

安装system-config-kickstart 工具

[root@host ~]# yum install -y system-config-kickstart.noarch 

打开“Kickstart 配置程序”窗口

通过桌面菜单“应用程序”-->“系统工具”-->“Kickstart” 打开
或
执行 “system-config-kickstart” 命令打开

配置kickstart选项

基本配置

默认语言设为“中文(简体)”
时区设为“Asia/Shanghai”
设置root密码,勾选上给root密码加密
高级配置中勾选“安装后重启”。

在这里插入图片描述

安装方法

第一个安装方法选择“执行全新安装”
第二个安装方法选FTP
FTP服务器:ftp://192.168.145.30
FTP目录:centos7

在这里插入图片描述

引导装载程序选项

“安装类型”:安装新引导装载程序
“安装选项”:在主引导记录(MBR)中安装引导装载程序

在这里插入图片描述

分区信息

主引导记录:清除主引导记录
分区:删除所有现存分区
磁盘标签:初始化磁盘标签
布局:添加分区
挂载点:/boot,文件系统类型:xfs,固定大小:500M
文件系统类型:swap,固定大小:4096M
挂载点:/home,文件系统类型:xfs,固定大小:4096M
挂载点:/,文件系统类型:xfs,使用磁盘上全部未使用空间

在这里插入图片描述

网络配置

添加网络设备“ens33”
网络类型设为“DHCP”

在这里插入图片描述

防火墙配置

禁用 SELinux
禁用防火墙

在这里插入图片描述

安装后脚本

勾选“使用解释程序”:/bin/bash
在下面键入您的%post脚本
mkdir /etc/yum.repos.d/repo.bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak

echo '[local]
name=local
baseurl=ftp:///mnt
enabled=1
gpgcheck=0' > /etc/yum.repos.d/local.repo

在这里插入图片描述

保存自动应答文件

选择“Kickstart 配置程序”窗口的“文件”-->“保存”命令,选择指定保存位置,文件名为ks.cfg(默认保存在/root/ks.cfg)
[root@host ~]# ls														#ks.cfg文件主要包含之前配置的所有操作
anaconda-ks.cfg       ks.cfg  模板  图片  下载  桌面
initial-setup-ks.cfg  公共    视频  文档  音乐

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JOIaq0Uw-1682353457766)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230424223643457.png)]

2.实现批量自动装机

配置需要安装的软件包

[root@host ~]# ls														#ks.cfg是PXE服务器中生成的自动应答文件,anaconda-ks.cfg 是当前系统的自动应答文件
anaconda-ks.cfg       ks.cfg  模板  图片  下载  桌面
initial-setup-ks.cfg  公共    视频  文档  音乐
[root@host ~]# vim anaconda-ks.cfg							#可以根据需要将/root/anaconda-ks.cfg 的软件包安装脚本复制到 ks.cfg文件中,只需要复制%packages 到%end 部分即可,实现图形化界面的脚本数据。
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony

%end
[root@host ~]# vim ks.cfg 									#将图形化脚本文件加入到ks.cfg文件中
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony

%end
[root@host ~]# cp /root/ks.cfg /var/ftp/ks.cfg				#将生成的自动应答文件ks.cfg文件复制到ftp的根目录中

  如要求最小化安装,可复制下面内容:

vim ks.cfg
%packages
@^minimal
%end

编辑引导菜单文件 default,添加 ks 引导参数

[root@host ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto													
prompt 0													#设置是否等待用户选择,“0”表示不等待用户控制

label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.145.30/centos7 ks=ftp://192.168.145.30/ks.cfg		#添加 ks 引导参数以指定 ks.cfg 应答文件的 URL 路径

新建虚拟机测试

在这里插入图片描述

所有配置项无需手动操作,全部自动化完成,安装完成后会自动重启系统

在这里插入图片描述

[root@localhost ~]# cd /etc/yum.repos.d/							#进入新的虚拟机查看本地yum源是否配置成功
[root@host yum.repos.d]# ls
local.repo repo.bak

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐