PXE网络装机

一、PXE相关概念

PXE(pre-boot execution environment 预启动执行环境)

当需要为多台主机同时安装操作系统时,可用pxe网络装机来实现,根据需求来搭建半自动安装系统的pxe服务器和全自动安装的pxe服务器。
半自动安装需手动设置区域、语言、root密码、分区、安装的系统方式(最小化、图形化等),设置完成后,手动安装即可。
自动安装无需手动操作主机,会根据ks.cfg自动应答文件来完成系统选择,等待片刻安装完成后即可进入系统。

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

PXE服务端使用的服务:
FTP(flie transfer protocol,文件传输协议。) 为客户机提供rpm软件包和repodata仓库数据的下载。

TFTP(trivial file transfer protocol,简单文件传输协议。) 为客户机提供内核和初始化镜像的下载。

DHCP(dynamic host configuration protocol,动态主机配置协议。) 为客户机提供IP地址。

PXE客户端的网卡需支持pxe协议(现在的都支持),主板支持网络引导(现在的都支持)。

PXE半自动装机实现过程:

首先,pxe客户端通过rarp协议来告诉dhcp服务器自己的mac地址,dhcp服务器为客户机的mac地址绑定一个IP地址,这样pxe客户端就有了IP地址。从dhcp服务器处获取到IP地址后,其中也包含一条信息(next-server)下一个服务器的地址,指向ftp服务器,这样客户机就可以从ftp中寻找到repodata并下载系统安装所需的软件包,同时也会从tftp中下载内核文件和初始化镜像文件,再加载tftp中的启动菜单文件(default)根据里面的prompt设置项(半自动安装系统设置为1,表示等待用户命令。)来引导用户输入启动命令,进入安装系统界面,自行选择语言、输入法、时区、硬盘分区情况、root用户密码等等选择后,开始安装系统。

PXE自动装机实现过程:

首先,pxe客户端通过rarp协议来告诉dhcp服务器自己的mac地址,dhcp服务器为客户机的mac地址绑定一个IP地址,这样pxe客户端就有了IP地址。从dhcp服务器处获取到IP地址后,其中也包含一条信息(next-server)下一个服务器的地址,指向ftp服务器,这样客户机就可以从ftp中寻找到repodata并下载系统安装所需的软件包,同时也会从tftp中下载内核文件和初始化镜像文件,再加载tftp中的启动菜单文件(default)根据里面的prompt设置项(自动安装系统设置为0,表示不等待用户命令自动开始),此时会读取到ftp下的ks.cfg文件,开始自动安装系统,等待片刻即安装完毕。


rarp(reverse address resolution protocol,反向地址转换协议。)


iso文件(/dev/cdrom内)内每级目录都有TRANS.TBL文件,该记录当前目录下都有什么文件。
[root@localhost cdrom]# cat TRANS.TBL 
F .DISCINFO;1                                                                                                                                                                                                         .discinfo
F .TREEINFO;1                                                                                                                                                                                                         .treeinfo
D DOCS                                                                                                                                                                                                                docs
D EFI                                                                                                                                                                                                                 EFI
D IMAGES                                                                                                                                                                                                              images
D ISOLINUX                                                                                                                                                                                                            isolinux
D KS                                                                                                                                                                                                                  ks
D PACKAGES                                                                                                                                                                                                            Packages
D REPODATA                                                                                                                                                                                                            repodata
F RPM_GPG_KEY_OPENEULER;1                                                                                                                                                                                             RPM-GPG-KEY-openEuler

###记录iso文件当前目录下都有什么文件。
 

二、搭建pxe半自动安装和pxe全自动安装

1.实验环境
euler101
IP 192.168.10.101
系统 OpenEuler24.03
服务 tftp、ftp、dhcp

2.安装并配置ftp和tftp
systemctl stop firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 
## 关闭防火墙以及禁用内核保护机制

mdkir /media/cdrom		# 创建yum仓库挂载点
mount /dev/cdrom /media/cdrom   # 挂载
dnf -y install vsftpd		# 安装ftp
mkdir /var/ftp/euler		# 创建共享目录
cp -rf /media/cdrom/* /var/ftp/euler 	# 将yum仓库内容复制到共享目录

vim /etc/vsftpd/vsftpd.conf	# 编写ftp配置文件	
anonymous_enable=YES	 	# 开启匿名访问
systemctl start vsftpd		# 开启ftp服务

dnf -y install tftp-server	# 安装tftp
vim /etc/xinetd.d/tftp		
##省略部分信息
disable = no
##省略部分信息
				# 将禁用关闭即可
systemctl start tftp		# 开启tftp服务
systemctl enable tftp		# 开机自启动tftp服务

3.准备linux内核、初始化镜像文件
cd /media/cdrom/images/pxeboot
cp vmlinuz initrd.img /var/lib/tftpboot # 将初始化镜像文件复制到tftp根目录下

cd /media/cdrom/isolinux/
cp ldlinux.c32 libcom32.c32 /var/lib/tftpboot/ # 复制到tftp根目录
下

###注释 ldlinux.c32是syslinux引导加载程序的一部分,用于在pxe网络引导过程中加载linux内核和其他必要的初始化文件。它提供了从网络加载内核和初始化ram文件系统(initramfs)所需的基础引导功能。在pxe引导流程中,ldlinux.c32负责处理引导菜单的配置,并根据用户的选择或默认设置加载相应的内核和参数。
libcom32.c32是syslinux提供的一组常用函数的库文件,这些函数被ldlinux.c32和其他引导程序所使用。它包含了处理文件系统、内存分配、字符串操作等底层功能的实现。libcom32.c32使得syslinux引导程序能够更高效地执行其任务,而无需在每个引导程序中重复实现这些基础功能。
###

dnf -y install syslinux			# 安装syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot # 复制pxe的引导程序到tftp根目录

4.安装和配置dhcp
dnf -y install dhcp			# 安装dhcp
vim /etc/dhcp/dhcpd.conf
subnet 192.168.10.0 netmask 255.255.255.0 {
  option routers 192.168.10.254;
  option subnet-mask 255.255.255.0;
  option domain-name "ooos.com";
  option domain-name-servers 192.168.10.254,202.106.0.20;
  default-lease-time 21600;
  max-lease-time 43200;
  range 192.168.10.200 192.168.10.250;
  next-server 192.168.10.101;		# 指定下一个服务器(ftp)的地址
  filename "pxelinux.0";
}					# 修改配置文件
systemctl start dhcpd			# 开启dhcp服务
systemctl enable dhcpd			# 设置开机自启动

5.配置启动菜单文件(如何调用内核,如何加载初始化镜像)
mkdir /var/lib/tftpboot/pxelinux.cfg	# 创建启动菜单目录
vim /var/lib/tftpboot/pxelinux.cfg/default	# 编写启动菜单文件
default auto	# 指定默认入口名称,对应下面的label auto
prompt 1	# 设置是否等待用户选择,1表示等待用户控制

label auto	# 默认的图形安装
kernel vmlinuz
append initrd=initrd.img inst.repo=ftp://192.168.10.101/euler	# method必须指定的网络路径

6.验证
新建虚拟机,选择centos8 64位 内存4G 处理器2 硬盘200G 一路下一步
开机验证 获得到dhcp分配的地址 在boot:处输入auto 开始安装 出现选择语言界面 成功
####################pxe半自动安装系统成功!!!#################

7.通过kickstart实现自动安装系统
vim /var/ftp/ks.cfg
url --url="ftp://192.168.10.101/euler"  
# 指向安装源地址‌:ml-citation{ref="1,4" data="citationList"}

# 系统语言设置
lang zh_CN.UTF-8
keyboard us

# 网络配置(以DHCP为例)
network  --bootproto=dhcp --device=eth0 --activate

# 安全策略
authselect --enableshadow --passalgo=sha512
selinux --enforcing
rootpw --iscrypted $y$j9T$QqwtZ/njXxUpfvOfVbMCa99t$46wHHCdZ1EXPI8G8Ms9rE20JnYOkuLkXzyrq4nbwS98
# 时区设置
timezone Asia/Shanghai

# 分区方案(自动分区示例)
autopart --type=lvm --fstype=ext4
bootloader --location=mbr

# 清除旧系统并初始化磁盘
clearpart --all --initlabel

# 软件包选择,最小化安装
%packages --nocore
@^minimal-environment
kernel
grub2
efibootmgr
%end

# 后安装脚本
%post
# 关闭防火墙(根据实际需求选择)
systemctl disable firewalld
# 配置SSH允许root登录(按需启用)
# sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
%end

# 重启配置
reboot
					## 编写安装应答文件
vim /var/lib/tftpboot/pxelinux.cfg/default	
default auto
prompt 0 # 为零表示不等待用户控制且自动执行ks.cfg文件(无人值守)

label auto
kernel vmlinuz
append initrd=initrd.img inst.ks=ftp://192.168.10.101/ks.cfg inst.repo=ftp://192.168.10.101/euler #增加ks文件的位置
					# 编写引导菜单文件
8.验证自动安装
无需任何操作即可进入安装进度页面!!!
注意:无论是CentOS8或是CentOS7还是其他LINUX内核5.x 64位都可以成功自动安装 若出现未成功自动安装 说明文件没更改对,再核对核对即可。
可登录验证,root的密码为aptech1!

你可能感兴趣的:(网络,linux)