PXE+Kickstart无人值守安装操作系统

文章目录

      • 什么是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

新建一个自定义虚拟机,以下是大致步骤
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

下面的都是下一步即可。这里不在放截图。

下面去开启虚拟机,模拟新机器通电就自动安装系统。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

现在就完成拉模拟,举一反三,使用同样的原理就可以对成百上千台主机去安装,只要主机一通电,就可以进行安装系统,无须人来看管。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/632722.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

接口自动化框架篇:接口框架中的常归断言封装!

在接口自动化测试中&#xff0c;断言&#xff08;Assertion&#xff09;是非常重要的一部分。通过对接口的返回结果进行断言&#xff0c;我们可以确认接口是否返回了正确的数据&#xff0c;从而验证接口的正确性。 为了提高代码的可读性和可维护性&#xff0c;我们通常会将常用…

前沿动态 | 关于AI大模型,你知道多少?

AI大模型含义 AI 大模型是人工智能预训练大模型的简称&#xff0c;包含了“预训练”和“大模型”两层含义&#xff0c;二者结合产生了新的人工智能模式&#xff0c;即模型在大规模数据集上完成预训练后&#xff0c;仅需少量数据的微调甚至无需微调&#xff0c;就能直接支撑各类…

python高级爱心代码

python高级爱心代码实现&#xff1a; import turtle import random # 设置画布 screen turtle.Screen() screen.bgcolor("black") # 创建画笔 pen turtle.Turtle() pen.speed(0) pen.color("red") pen.penup() # 移动画笔到起始位置 pen.goto(0, -20…

伪头部校验

本章问题 UDP和TCP的伪首部只用于计算校验和&#xff0c;在UDP和TCP的报文中是不存在的&#xff0c;为什么要引入伪首部呢&#xff1f;为什么伪首部的要有这些字段&#xff1f;这里我们就先看一下TCP和UDP的首部格式。 TCP和UDP首部 源端口目的端口&#xff1a;是0-65535任…

代码随想录-算法训练营day41【动态规划04:01背包问题-滚动数组、分割等和子集】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第九章 动态规划part04● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集 正式开始背包问题,背包问题还是挺难的,虽然大家可能看了很多背包问题模板代码,感觉挺简单,…

2024汽车行业用户洞察与营销趋势白皮书

来源&#xff1a;小红书&寰球汽车&#xff1a;

晶振的振荡模式有哪些?

晶振&#xff0c;即晶体振荡器&#xff0c;是一种能够产生精确振荡频率的电子元件&#xff0c;它利用石英晶体的压电效应来产生稳定的振荡信号。晶振的振荡模式主要有以下几种&#xff1a;1. 串联谐振&#xff08;Series Resonance&#xff09;&#xff1a; 在这种模式下&am…

Moe 混合多专家模型 原理 + 大模型的有性繁殖 + DIY 自己的 Moe 专家系统

Moe 混合多专家模型 原理 大模型的有性繁殖 DIY 自己的 Moe 专家系统 MoE 介绍标准 Transformer 编码器MoE Transformer 编码器专家网络层 大模型的有性繁殖mergekit 合并 多个专家模型 的方式1. SLERP&#xff08;球面线性插值&#xff09;2. TIES3. DARE4. Passthrough5. L…

露营涮火锅小朋友不慎烫伤大腿 家长抱娃涮河急救获医生点赞

近日&#xff0c;陈女士一家三口在西安市长安区附近露营涮火锅&#xff0c;却不料小朋友在起身时不小心打翻了吃火锅的锅&#xff0c;导致腿被烫伤&#xff0c;陈女士急忙抱着孩子到临近河边&#xff0c;用河水来冲洗小朋友烫伤的腿&#xff0c;随后立刻赶至西安国际医学中心医…

Kroma宣布推出Spectrum:以太坊Layer-2的先进原生质押服务

Kroma宣布推出备受期待的Spectrum&#xff0c;这是一项先进的原生质押服务&#xff0c;旨在彻底改变以太坊 Layer-2格局。Spectrum将于2024年5月14日开始运营&#xff0c;为用户提供利用质押ETH、stETH和eETH的奖励机会&#xff0c;助力用户在去中心化金融&#xff08;DeFi&…

Python 海龟画图(Turtle)命令大全

移动和绘制 forward() | fd() 使用语法&#xff1a; ​​turtle.forward(距离)​​ ​​turtle.fd(距离)​​ 参数说明: 距离 一个数字 (整数 或者 浮点) &#xff08;注&#xff1a;单位是像素&#xff09; 代码示例&#xff1a; import turtle turtle.forward(200) …

docker镜像中搭建FastDfs

docker镜像中搭建FastDfs 一、搭建过程二、docker端口映射三、映射的方法三、配置Tracker 和 Storage 环境&#xff1a;腾讯云服务器上 ubuntu20.04镜像 一、搭建过程 正常直接在云服务器上搭建过程参考博客&#xff1a; https://blog.csdn.net/qq_38531706/article/details/…

分享如何通过定时任务调用lighthouse前端测试脚本+在持续集成测试中调用lighthouse前端测试脚本

最近写了个小工具来优化lighthouse在实际工作中的使用&#xff0c;具体实现了&#xff1a;通过定时任务调用前端测试脚本在持续集成测试中调用前端测试脚本。由于在公司中已经应用&#xff0c;所以就不能提供源码了&#xff0c;这里简单说一下实现思路&#xff0c;希望可以帮助…

武汉星起航:亚马逊跨境电商助力全球贸易:卖家轻松触达全球市场

作为全球最大的电子商务平台之一&#xff0c;亚马逊以其强大的品牌影响力和完善的服务体系&#xff0c;为全球卖家提供了一个展示和销售各类商品的广阔舞台。亚马逊跨境电商业务的快速发展&#xff0c;不仅为卖家打开了通向全球市场的大门&#xff0c;也为买家带来了更多元化、…

JS+JQ+Layui菜单栏点击URL跳转后保持选中状态

目录 一.问题描述 二.问题分析 三.问题解决 3.1JQuery解决 3.2原生JS解决 四.衍生问题 五.衍生问题解决方式 5.1JQ解决 5.2JS解决 六.效果 七.建议 一.问题描述 后端使用“Flask”开发 最近在开发个人网站&#xff0c;其中使用了“Layui”组件库来做“菜单导航栏…

Nginx日志格式配置

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 Nginx(“engine x”…

数据库SQL语言实战(九)(索引)

目录 1实战目标 2前提知识 2.1索引失效的情况 2.1.1数据准备 2.1.2插入数据 2.1.3失效情况 3练习题(利用索引提高查询速度&#xff09; 题目一 题目二​ 题目三​ 题目四​ 题目五​ 总结 1实战目标 对比有无索引情况下数据检索速度,学会如何能够使用索引,掌握如何…

130.哈希表:赎金信(力扣)

题目描述 代码解决 class Solution { public:bool canConstruct(string ransomNote, string magazine) {// 创建一个大小为26的整数数组&#xff0c;用于存储每个字母在magazine中的出现次数int hash[26] {0};// 遍历magazine&#xff0c;将每个字母的出现次数记录在hash数组…

The 13th Shandong ICPC Provincial Collegiate Programming Contest

The 13th Shandong ICPC Provincial Collegiate Programming Contest The 13th Shandong ICPC Provincial Collegiate Programming Contest A. Orders 题意&#xff1a;有n个订单&#xff0c; 每日可生产k个产品&#xff0c;每个订单给出交付日和交付数量&#xff0c;是否能…

谈谈【软件测试的基础知识,基础模型】

关于软件测试的基本概念和基本模型 前言一个优秀的测试人员具备的素质关于需求测试用例软件错误(BUG)概念开发模型瀑布模型&#xff08;Waterfall Model&#xff09;螺旋模型&#xff08;Spiral Model&#xff09; 前言 首先,什么是软件测试? 通俗来讲:软件测试就是找BUG&…