1.PXE 的全称是 preboot execute environment,中文名预引导执行环境
它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统
背景作用:
几台电脑系统可以一个个装,如果上百台呢,这时用到pxe
用 PXE+DHCP+TFTP+VSAod+Kickstat 部署出无人值守安装系统,这种系统能够实现自动化运维
避免了重复性劳动,帮助提升工作效率。
pxe是通过网卡引导启动
2.实现的硬件条件
(1).BIOS支持
(2)网卡支持(现在基本都已支持)
(3)需要在bios中开启开关,服务器一般没打开(bmc界面里打开)
(4).网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置 网卡自带DHCP功能 dhcp 指明分配的ip地址
3.实现的过程:
(1).网卡需要查找相关的dhcp服务器(获取地址时间)
(2).找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)
(3).网卡使用tftp客户端吧引导程序加载到内存中来
(4).bios执行引导程序
(5).引导程序会去TFTP去查找配置文件
(6).根据配置文件去引导安装系统
(7).系统安装过程
initrd.img(驱动) vmlinuz(内核) pxelinux.cfg/default(引导文件) pxelinux.0(小型的grub程序
DHCP服务
用于自动分配IP地址、子网掩码、默认网关、DNS服务器等网络参数给启动的客户端计算机。在PXE场景下,DHCP服务器还会提供一个特殊选项,其中包含TFTP服务器的IP地址以及引导文件名,这样客户端就知道去哪里下载引导程序。
TFTP服务
TFTP是一种简单且安全的文件传输协议,适用于无盘工作站或者系统初始化环境。PXE客户端根据DHCP获取到的信息,通过TFTP从指定的服务器下载预启动执行环境的引导程序(pxelinux.0)及后续的内核镜像、initrd等安装所需文件
FTP服务
因为TFTP不支持断点续传等高级功能,对于大文件传输效率较低,而HTTP(S)或FTP则更稳定高效
syslinux
在PXE环境中,TFTP服务器上通常会提供一个由Syslinux提供的名为pxelinux.0的引导加载程序。当客户端通过PXE启动时,会下载这个文件并执行
vsftp:安装系统镜像文件获取方式 可以使用http ftp等方式,ftp文件传输的一种
4.pxe 优点
规模化:同时装配多台服务器
自动化:安装系统、配置各种服务
远程实现:不需要光盘、U盘等安装介质
5.操作过程
分配给同一局域网内新加机器的地址(配置文件) dhcp 分配地址 指明tftp 服务器的地址
tftp服务端开启 udp 配置 默认关闭
安装syslinux 取得 pxelinux.0 文件
安装vsftpd服务挂载软件安装源(mount /dev/sr0 /var/ftp/centos7)
将四大文件拷入 (/var/lib/tftpboot )
initrd.img
pxelinux.0 (类似grub)
pxelinux.cfg/default (手写)
vmlinuz
将服务开启,关闭防火墙,selinux
6.具体操作
搭建PXE服务器
首先准备两台机器,关闭服务器的防火墙与核心防护
PXE服务器 | 192.168.6.88 |
客户端 | 未安装任何系统 |
下载dhcp、ftp、tftp、syslinux服务程序
yum install dhcp vsftpd tftp-server.x86_64 syslinux -y
配置dhcp
首先复制一些模板配置文件
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
再去修改/etc/dhcp/dhcpd.conf 文件
subnet 192.168.6.0 #分配的子网
netmask 255.255.255.0 #子网掩码
range 192.168.6.100 192.168.6.200; #分配的IP地址范围
option routers 192.168.6.2; #网关
next-server 192.168.6.88; #指定tftp服务地址
filename "pxelinux.0; #指定启动文件
启动dhcp服务
3.修改tftp服务 可以通过rpm -ql 去查找配置文件位置
先来修改配置文件
分析 vsftpd 服务程序时发现,FTP 服务器为了随时能够回应客户端的请求必需运行一个长期驻扎在系统中的守护进程,但这样也意味着会有一定的资源浪费,网络守护进程服务程序 xinetd 便是为了解决资源浪费问题而设计的,因为xinetd 服务程序会同时监听多个系统端口,依据客户端请求的端口再转发给指定的服务程序,而 tftp 便是由 xinetd服务程序来管理的。
vim /etc/xinetd.d/tftp
启动tftp服务
配置vsftpd程序
在/var/ftp/下新建一个目录,并将光盘挂载到该目录下,供客户端下载
启动ftp服务
现在,我们将光盘中的initrd.img vmlinuz 两个文件复制到启动文件的存放位置,即/var/lib/tftpboot
配置syslinux服务程序
syslinux是用于提供引导加载的服务程序,目的是筒化安装 Linux 系统的时间,安装 syslinux 服务程序
还记得在配置dhcp时指定了一个pxelinux.0的启动文件,就是由syslinux服务提供的,现在需要找到它,并将它复制到/var/lib/tftpboot/目录下
tftpboot目录下已经有了三个文件了,分别是:
initrd.imd:初始化镜像文件
pxelinux.0:用于网络启动的引导加载器,当客户端通过PXE启动时首先会下载并执行这个文件。
vmlinuz:内核文件,用于加载操作系统并开始安装过程。
现在,还需要建立一个叫做pxelinux.cfg的目录文件
手写配置文件
pxelinux.cfg目录下的需要手写一个配置文件default,这个文件定义了引导菜单、内核选项、initrd映像等安装参数
default linux:#设置默认的引导项为“linux”
timeout 300: #超时等待时间。此处设置为300秒即5分钟。
label linux: #定义一个名为“linux”的引导标签,该标签描述了一组用于启动Linux操作系统的命令行参数
kernel vmlinuz:#指定了内核映像文件
#append initrd=initrd.img method=ftp://192.168.6.88/cdrom:添加了一系列传递给内核的启动参数:
initrd=initrd.img:#指示要使用的初始化RAM磁盘映像文件。
method=ftp://192.168.6.88/cdrom:#设置安装介质来源为FTP服务器上的CD-ROM目录。
这意味着在启动 Linux后,操作系统会通过FTP
协议从指定IP地址的服务器获取安装所需的资源
到这里,我们的配置参数就设置好了,再次提醒注意防火墙与和核心防护
此时,在/var/lib/tftpboot/目录下,应该会有四大文件:
initrd.img
vmlinuz (光盘内 images)
pxelinux.0(安装syslinux)
pxelinux.cfg (手动创建文件夹)/创建 default 的文件
初步测试
去客户机测试一下吧,新建一台客户机
可以看到,直接就可以跳到这一步,不需要去添加映像文件,配置信息,但是还需要手动设置一些信息,想要彻底一键安装,还需要设置kickstart(无人值守)
kickstart无人值守
安装图形化工具
yum install system-config-kickstart.noarch -y
在应用程序里打开kickstart工具,或者使用命令
system-config-kickstart
useradd -u 1100 kysw:创建一个名为kysw的用户,并指定uid号为1100
echo "123" | passwd kysw --stdin:免交互设置密码为123
必须保存在/var/ftp目录下,因为是通过FTP服务来传输文件的
回到Xshell或者虚拟机当中查看/var/ftp目录,会有一个名为ks.cfg的文件
此时,需将该目录写道配置文件中
vim /var/lib/tftpboot/pxelinux.cfg/defautl
再次打开客户机,从网络环境中进入,就可以直接安装到字符界面,中间不需要在手动操作