文章目录
- 什么是PXE?
- PXE工作原理示意图说明
- 一、环境
- 二、安装前准备
- 三、DHCP服务器配置
- 四、TFTP服务准备
- 五、VSftpd服务准备
- 六、PXE菜单
- 七、重启服务
- 八、创建虚拟机-自动安装系统
什么是PXE?
PXE,全名Pre-boot Execution Environment,预启动执行环境;
通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统;
由Intel和Systemsoft公司于1999年9月20日公布的技术;
Client/Server的工作模式;
PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;
PXE客户端(client)这个术语是指机器在PXE启动过程中的角色。一个PXE客户端可以是一台服务器、笔记本电脑或者其他装有PXE启动代码的机器(我们电脑的网卡)
pxe+kickstart 全自动安装操作系统,(不包括win)
pxe是网卡上的芯片
kickstart软件 pylickstart 用来配置操作系统安装过程的配置文件ks.cfg
initrd初始化磁盘影像文件
图中的vmlinux应该为vmliuz
PXE(Preboot ExecutionEnvironment)装机是一种通过网络从远程服务器加载操作系统安装文件并完成安装过程的技术。以下是PXE装机的基本步骤:
启动过程: 客户机(待安装的计算机)通过网络启动,并发送DHCP请求以获取IP地址和其他配置信息。
DHCP响应: DHCP服务器响应请求,提供一个IP地址和PXE启动服务的相关配置。这些配置包括PXE引导文件(如pxelinux.0)的位置。
下载引导程序: 客户机使用TFTP(Trivial File Transfer Protocol)从PXE服务器下载引导程序(如pxelinux.0)。
引导程序加载与启动: 引导程序加载并启动,提供菜单和选项,允许用户选择所需的操作系统安装。
下载操作系统安装文件: 客户机选择安装选项后,引导程序从PXE服务器下载适当的操作系统安装文件(如内核、初始化内存盘(initrd)和安装程序)。
操作系统安装: 客户机使用下载的文件进行操作系统安装过程。在这个过程中,可能涉及到分区、格式化、复制文件、配置系统等步骤。
配置与完成: 根据安装程序的要求和用户的配置选项,操作系统完成安装并进行必要的配置。 安装完成后,客户机可以重新启动并正常加载新的操作系统。
除了上述的基本步骤外,PXE装机还需要一些额外的配置和准备工作,例如:
设置DHCP服务器:DHCP服务器需要配置以支持PXE启动,并分配适当的IP地址和PXE引导文件的位置。
设置PXE服务器:PXE服务器需要存储操作系统安装文件,并提供TFTP服务以便客户机下载引导程序。
创建Kickstart配置文件:Kickstart是一个自动化安装工具,可以通过配置文件来定义操作系统的安装选项和配置。在PXE装机中,可以使用Kickstart配置文件来自动化安装过程。
验证与测试:在正式部署之前,应该进行充分的验证和测试以确保PXE装机过程的正确性和可靠性。
请注意,具体的PXE装机步骤可能因不同的操作系统、网络环境和硬件配置而有所差异。因此,在实际操作中,应根据具体情况进行调整和修改。
PXE工作原理示意图说明
1. Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client。
2. Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。
3. Client执行接收到的pxelinux.0文件。
4. Client向TFTP发送针对本机的配置信息(记录在TFTP的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。
5. Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发 送给Client。
6. Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件 系统。
7. Client启动Linux内核(启动参数已经在4中的配置文件中设置好了)。
8. Client通过NFS下载镜像文件,读取autoyast自动化安装脚本。 至此,Client正式进入自动化安装模式开始安装系统直到完成
一、环境
名称 | 值 |
---|---|
软件 | vmware17.5.1 |
系统 | centos7.9 |
网络 | NAT模式 |
ip地址 | 192.168.226.134 |
二、安装前准备
# 关闭防火墙、selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
# 配置ip地址
[root@localhost ~]# sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=static/g' /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# sed -i 's/^ONBOOT=.*/ONBOOT=yes/' /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# cat >> /etc/sysconfig/network-scripts/ifcfg-ens33 <<EOF
IPADDR=192.168.226.134 #这里IP,网关dns修改成你的
NETMASK=255.255.255.0
GATEWAY=192.168.226.2
DNS1=192.168.226.2
EOF
[root@localhost ~]# systemctl restart network
# 配置yum源并安装软件包
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache fast
[root@localhost ~]# yum install -y dhcp tftp tftp-server syslinux wget vsftpd pykickstart
三、DHCP服务器配置
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
#确保配置文件内容如下,进去初始页面就几行注释的,不用管,直接新增如下有效内容
ddns-update-style interim;
ignore client-updates;
authoritative;
allow booting;
allow bootp;
allow unknown-clients;
# A slightly different configuration for an internal subnet.
subnet 192.168.226.0 netmask 255.255.255.0 #这里是你的网段和子网掩码,网段记得修改成你的
{
range 192.168.226.3 192.168.226.254; #这里是分配IP的范围,你要修改成你的
option domain-name-servers 192.168.226.2; #这里IP是dns服务器,一般是网关,可可以是公网dns服务器例如8.8.8.8
#在虚拟机里使用ip r 命令可以查看当前主机的网关
option domain-name "server1.example.com";
option routers 192.168.226.2; #这个就是网关IP
option broadcast-address 192.168.226.255; #这个是广播地址,一般就是以255结尾的ip
default-lease-time 600;
max-lease-time 7200;
# PXE SERVER IP
#DHCP服务在分配ip后就是要带个消息告诉下一步要找tftp,这里填写自然指向tftp>的ip
#由于我们这些服务都在一个主机里部署的,自然就是本机IP
next-server 192.168.226.134;
filename "pxelinux.0";
}
四、TFTP服务准备
[root@localhost ~]# vim /etc/xinetd.d/tftp
#对照如下内容,将这个配置文件里的东西进行修改,一般没动过的话也就修改disable为no就没拉
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
[root@localhost ~]# cp /usr/share/syslinux/{pxelinux.0,menu.c32,memdisk,mboot.c32,chain.c32} /var/lib/tftpboot/
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# mkdir /var/lib/tftpboot/netboot
五、VSftpd服务准备
在VMware中将cd驱动器链接
[root@localhost ~]# mount /dev/cdrom /mnt
[root@localhost ~]# cp -rf /mnt/* /var/ftp/pub/
# 拷贝系统启动时需要的镜像文件
[root@localhost ~]# cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot/netboot/
[root@localhost ~]# cp /var/ftp/pub/images/pxeboot/initrd.img /var/lib/tftpboot/netboot/
# 创建ks.cfg 文件
[root@localhost ~]# vim /var/ftp/pub/ks.cfg
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use NFS installation media
#这里的ip也要改
url --url="ftp://192.168.226.134/pub/"
rootpw --plaintext 123456
#root的密码设为123456
# Use graphical install
graphical
firstboot disable
# System keyboard
keyboard us
# System language
#设置语言的地方
lang en_US
# SELinux configuration
#seliunx设置成装机就是关闭的
selinux disabled
# Installation logging level
logging level=info
# System timezone
#这是时区的地方
timezone Asia/Shanghai
# System bootloader configuration
bootloader location=mbr
clearpart --all --initlabel
part swap --asprimary --fstype="swap" --size=1024
part /boot --fstype xfs --size=200
part pv.01 --size=1 --grow
volgroup rootvg01 pv.01
logvol / --fstype xfs --name=lv01 --vgname=rootvg01 --size=1 --grow
reboot
%packages
@core
#这里指定安装系统时要自带的包,当时原来的镜像默认是国外的比较慢,所以一般不会进行预装包
wget
%end
%post
%end
# 检查语法是否有错误,正确的话是没有提示的
[root@localhost ~]# ksvalidator /var/ftp/pub/ks.cfg
六、PXE菜单
#下面内容倒数第三行GGbang就是在菜单上显示的一个标识名字,也可以自定义,用来确认是不是自己配置的
#下面内容的最后一行的IP是ftp的IP,要修改成你的,本文都是部署在一个主机上,IP就是本机
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
prompt 0
timeout 30
MENU TITLE Togogo.net Linux Training
LABEL centos7_x64
MENU LABEL CentOS 7 X64 for GGbang
KERNEL /netboot/vmlinuz
APPEND initrd=/netboot/initrd.img inst.repo=ftp://192.168.226.134/pub ks=ftp://192.168.226.134/pub/ks.cfg
七、重启服务
[root@localhost ~]# systemctl enable dhcpd vsftpd tftp
[root@localhost ~]# systemctl restart dhcpd vsftpd tftp
八、创建虚拟机-自动安装系统
现在去新建一个虚拟机用来模拟新机器,通电后自动安装操作系统
注意:内存必须大于2G
新建一个自定义虚拟机,以下是大致步骤
下面的都是下一步即可。这里不在放截图。
下面去开启虚拟机,模拟新机器通电就自动安装系统。
现在就完成拉模拟,举一反三,使用同样的原理就可以对成百上千台主机去安装,只要主机一通电,就可以进行安装系统,无须人来看管。