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初始化磁盘影像文件

二、PXE工作原理示意图及说明

注: 图中的vmlinux应该为vmliuz

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正式进入自动化安装模式开始安装系统直到完成

三、安装准备

#关闭防火墙和selinux
systemctl stop firewalld
systemctl disable  firewalld
setenforce 0
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config   #把文件里所有SELINUX替换


#配置ip地址 静态ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPADDR=10.20.157.100   #改为自己的当前ip
PREFIX=24
GATEWAY=10.20.157.1    
DNS2=8.8.8.8
DEVICE="ens33"
ONBOOT="yes"


#重启网卡
systemctl restart network 

#配置yum源并安装软件包
rm -rf  /etc/yum.repos.d/*

#配置阿里云yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

#清除缓存、生成缓存
yum clean all
yum  makecache fast

#安装软件
yum install -y dhcp tftp tftp-server syslinux wget vsftpd pykickstart

四、dhcp服务器配置

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 10.20.157.0 netmask 255.255.255.0      #10.20.157.0改为自己的ip的网段
{
   range 10.20.157.110 10.20.157.200;          #ip分配范围110------200
   option domain-name-servers 8.8.8.8;         #DNS/也可以改为自己的网关地址
   option domain-name "server1.example.com";
   option routers 10.20.157.1;                 #改为自己的网关地址
   option broadcast-address 10.20.157.255;     #改为自己的广播地址
   default-lease-time 600;
   max-lease-time 7200;
 
   # PXE SERVER IP
   next-server 10.20.157.100;     # DHCP 服务端ip
   filename "pxelinux.0";
 }

五、TFTP服务准备

#vim  /etc/xinetd.d/tftp
#修改内容如下:
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
 }

cp /usr/share/syslinux/{pxelinux.0,menu.c32,memdisk,mboot.c32,chain.c32} /var/lib/tftpboot/

mkdir /var/lib/tftpboot/pxelinux.cfg

mkdir /var/lib/tftpboot/netboot

六、VSftpd服务准备

mount  /dev/cdrom  /mnt    #挂载

cp -rf  /mnt/*  /var/ftp/pub   #拷贝系统启动时需要的镜像文件

cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot/netboot/

cp /var/ftp/pub/images/pxeboot/initrd.img /var/lib/tftpboot/netboot/

#创建ks.cfg文件
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
 url --url="ftp://10.20.157.100/pub/"           #将10.20.157.100改为自己ip
 rootpw --plaintext 123456
#root的密码设为123456
 # Use graphical install
 graphical
 firstboot disable
 # System keyboard
 keyboard us
 # System language
 lang en_US
 # SELinux configuration
 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

#检查语法是否有错误
ksvalidator /var/ftp/pub/ks.cfg

七、PXE菜单

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 xjm   #xjm可以替换成自己的名字,装系统的时候会显示
 KERNEL /netboot/vmlinuz
 APPEND  initrd=/netboot/initrd.img inst.repo=ftp://10.20.157.100/pub ks=ftp://10.20.157.100/pub/ks.cfg

八、重启服务

systemctl enable dhcpd vsftpd tftp

systemctl restart dhcpd vsftpd tftp

九、创建虚拟机自动安装系统

注意:内存必须大于2G

相关推荐
学Linux的语莫3 分钟前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器
黑牛先生10 分钟前
【Linux】进程-PCB
linux·运维·服务器
Karoku06616 分钟前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql
打码人的日常分享2 小时前
商用密码应用安全性评估,密评整体方案,密评管理测评要求和指南,运维文档,软件项目安全设计相关文档合集(Word原件)
运维·安全·web安全·系统安全·规格说明书
追风赶月、3 小时前
【Linux】线程概念与线程控制
linux·运维·服务器
CP-DD3 小时前
Docker 容器化开发 应用
运维·docker·容器
丁总学Java4 小时前
ARM 架构(Advanced RISC Machine)精简指令集计算机(Reduced Instruction Set Computer)
arm开发·架构
努力的悟空4 小时前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
周末不下雨5 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu