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

相关推荐
七夜zippoe40 分钟前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy6482 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满2 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠2 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9033 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技4 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀4 小时前
Linux环境变量
linux·运维·服务器
zzzsde4 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º6 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~6 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化