【Linux网络】从原理到实操,感受PXE无人值守自动化高效批量网络安装系统
一、PXE网络批量装机的介绍
1、常见的三种系统安装方式
2、回顾系统安装的过程,了解系统安装的必要条件
3、什么是pxe
4、搭建pxe的原理
5、Linux的光盘镜像中的isolinux中的相关文件学习
二、关于实现PXE无人值守装机的四大文件与五个软件的对应关系详解
5个程序的使用原因:
1、DHCP服务器:
2、TFTP服务器:
3、syslinux程序:
4、FTP服务器:
5、kickstart程序:
三、实操PXE批量安装详解
做任何动作之前先关闭selinux和防火墙,以及安装五个软件
第一步:dhcp服务器搭建
第二步:准备好vsftpd服务,挂载光盘镜像
第三步:开启tftp开机自启,配置好tftp传输的文件,内核和驱动
第四步:找到grub小程序——也就是syslinux提供的pxelinux.0程序
第五步:手写grub.cfg配置文件——default文件
第六步:生成ks.cfg配置文件
第七步:启动所有服务,见证奇迹
第八步:实现自动化装机过程
四、总结
一、PXE网络批量装机的介绍
1、常见的三种系统安装方式
第一种:u启动安装,在优盘中下载相关的安装系统和镜像文件,优盘插入即可安装,将想要的操作系统安装进自己的硬盘(需要将优盘设置u启动或者把镜像烧录进去)
第二种:光驱安装,将相关的安装系统镜像放入光盘,插入电脑服务器中,即可按照引导进行装机,将操作系统安装进自己的硬盘
第三种:网卡安装,需要通过网络下载,在网上的某个服务器上去下载相关镜像系统,来进行安装
2、回顾系统安装的过程,了解系统安装的必要条件
这是硬盘启动的过程:开机自检(bios主板)——mbr引导(主要是去找grub菜单)——找到grub配置文件(找到内核的位置)——加载内核到内存——初始化启动
光驱安装系统的过程:bios引导选择光驱——boot.cat引导(通过isolinux.bin程序找到配置文件)——读取isolinux.cfg配置文件知道内核和光驱的位置——加载光驱里面的内核vmlinuz和驱动initrd.img到内存——再通过光驱里面找到各种初始化程序安装包,启动进程并开机
那么我们想要裸机通过网络来能够完成这样的过程,那么得有哪些必要条件呢?
①裸机主板需要支持网络引导(现在大多数的服务器主机都支持,需要在bios设置中可以允许network或者lan启动)

②需要有一个引导程序能找到grub配置文件(类似mbr引导)
③需要有一个类似grub配置文件指引找到内核(类似于grub.cfg)

④需要有vmlinuz内核程序和initrd.img驱动,加载到内存中(类似于vmlinuz-3.10.0-693.el7.x86_64和initramfs-3.10.0-693.el7.x86_64.img)

3、什么是pxe
PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。
pxe是通过网卡引导启动需要的条件:
1.BIOS支持
2.网卡支持(现在基本都已支持)
3.需要在bios中开启开关,服务器一般没打开(bmc界面里打开)
4.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置,网卡自带DHCP功能,dhcp 指明分配的ip地址
4、搭建pxe的原理

| 第一步 | 网卡需要查找相关的dhcp服务器,来获取ip地址和时间; |
| 第二步 | dhcp服务器,通过offer报文传给裸机客户端,不仅提供了ip地址,还提供了引导程序(boot loader,这里是pxelinux.0)的地址,以及tftp-server的地址(指向dhcp服务器自己); |
| 第三步 | 客户机通过tftp服务器获取引导程序pxelinux.0,将其加载到内存中; |
| 第四步 | 引导程序pxelinux.0通过tftp服务器获取pxelinux.cfg中的default配置文件; |
| 第五步 | 配置文件指明内核和驱动的位置,通过tftp服务器获取vmlinuz和initrd.img; |
| 最后 | 启动内核; |
5、Linux的光盘镜像中的isolinux中的相关文件学习

| boot.cat | 相当于grub的第一阶段 |
| isolinux.bin | 光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目 |
| isolinux.cfg | 启动菜单的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件(相当于boot里面的grub.cfg) |
| vesamenu.c32 | 是光盘启动后的启动菜单图形界面,也属于SYSLINUX项目,menu.c32提供纯文本的菜单(指明背景图位置) |
| memtest | 内存检测程序 |
| splash.png | 光盘启动菜单界面的背景图(这是一张图片) |
| vmlinuz | 是内核映像 |
| initrd.img | ramfs文件(精简版的linux系统,文件系统驱动等) |
二、关于实现PXE无人值守装机的四大文件与五个软件的对应关系详解
TFTP服务器的家目录/var/lib/tftpboot的四大文件一定是这样,标点符号都要一模一样:

5个程序的使用原因:
1、DHCP服务器:
在这里DHCP服务器是用来动态分配客户端ip地址以及指明TFTP服务器的ip地址和引导程序“pxelinux.0”的位置
DHCP服务端是udp的67端口,客户端是udp的68端口
2、TFTP服务器:
这是网卡自带的功能,基于udp协议实现客户机和服务端之间进行简单的文件传输协议,适用于小型文件传输。TFTP服务默认由xinetd服务进行管理,使用UDP69端口。

这里的TFTP服务器是用来提供传输四大文件,一共52M

3、syslinux程序:
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。
这里的syslinux提供pxelinux.0程序

4、FTP服务器(使用HTTP也是一样的功能):
TFTP用来传输小文件,这里的FTP用来传输大文件,提供镜像和安装包,以及存放传输ks.cfg文件,能够让系统自动化安装完以后重启并开机直接使用
5、kickstart程序:
通过图形化配置记录想要安装的方式,生成ks.cfg配置文件,放入在FTP服务器中(/var/ftp)
三、实操PXE批量安装详解
做任何动作之前先关闭selinux和防火墙,以及安装五个软件
![]()
![]()
第一步:dhcp服务器搭建
40 subnet 192.168.20.0 netmask 255.255.255.0 {41 range 192.168.20.80 192.168.20.100;42 option routers 192.168.20.2;43 next-server 192.168.20.18;44 filename "pxelinux.0";45 }


第二步:准备好vsftpd服务,挂载光盘镜像
[root@localhost isolinux]#cd /var/ftp/
[root@localhost ftp]#ls
ks.cfg pub
[root@localhost ftp]#mkdir centos7
[root@localhost ftp]#mount /dev/sr0 centos7/

第三步:开启tftp开机自启,配置好tftp传输的文件,内核和驱动
[root@localhost boot]#rpm -qc tftp-server
/etc/xinetd.d/tftp
[root@localhost boot]#vim /etc/xinetd.d/tftp14 disable = no ##改为no,改为不关闭


[root@localhost isolinux]#ll -h
总用量 53M
-r--r--r-- 1 root root 2.0K 9月 6 2017 boot.cat
-rw-r--r-- 1 root root 84 9月 5 2017 boot.msg
-rw-r--r-- 1 root root 281 9月 5 2017 grub.conf
-rw-r--r-- 1 root root 47M 9月 5 2017 initrd.img
-rw-r--r-- 1 root root 24K 9月 5 2017 isolinux.bin
-rw-r--r-- 1 root root 3.0K 9月 5 2017 isolinux.cfg
-rw-r--r-- 1 root root 187K 11月 6 2016 memtest
-rw-r--r-- 1 root root 186 10月 1 2015 splash.png
-r--r--r-- 1 root root 2.2K 9月 6 2017 TRANS.TBL
-rw-r--r-- 1 root root 150K 11月 6 2016 vesamenu.c32
-rwxr-xr-x 1 root root 5.7M 8月 23 2017 vmlinuz
[root@localhost isolinux]#cp initrd.img vmlinuz /var/lib/tftpboot/

第四步:找到grub小程序——也就是syslinux提供的pxelinux.0程序

第五步:手写grub.cfg配置文件——default文件

第六步:生成ks.cfg配置文件






第七步:启动所有服务,见证奇迹
[root@localhost centos7]#systemctl restart dhcpd
[root@localhost ftp]#systemctl restart tftp
[root@localhost ftp]#systemctl restart vsftpd

第八步:实现自动化装机过程




四、总结
这一章有很多关于硬件的知识点,如果不理解就先放弃,明白pxe和kickstart的原理即可。
还有个优化方向:可以直接将DNS也一起放在DHCP的服务器上,让其自动获取
相关文章:
【Linux网络】从原理到实操,感受PXE无人值守自动化高效批量网络安装系统
一、PXE网络批量装机的介绍 1、常见的三种系统安装方式 2、回顾系统安装的过程,了解系统安装的必要条件 3、什么是pxe 4、搭建pxe的原理 5、Linux的光盘镜像中的isolinux中的相关文件学习 二、关于实现PXE无人值守装机的四大文件与五个软件的对应关系详解 5个…...
Pandas+Matplotlib 数据分析
利用可视化探索图表 一、数据可视化与探索图 数据可视化是指用图形或表格的方式来呈现数据。图表能够清楚地呈现数据性质, 以及数据间或属性间的关系,可以轻易地让人看图释义。用户通过探索图(Exploratory Graph)可以了解数据的…...
k8s ingress高级用法一
前面的文章中,我们讲述了ingress的基础应用,接下来继续讲解ingress的一些高级用法 一、ingress限流 在实际的生产环境中,有时间我们需要对服务进行限流,避免单位时间内访问次数过多,常用的一些限流的参数如下&#x…...
C语言--从键盘输入10个数字放在数组中,并输出
用scanf读取数字的时候要注意,可以输入一个数字,按一下回车,输入一个数字,按一下回车,也可以一次性输入完10个数据。(中间可以用空格隔开,系统会自动识别) 输出一:每按下一个数字&am…...
SSL加密
小王学习录 今日摘录前言HTTP + SSL = HTTPSSSL加密1. 对称加密2. 非对称加密 + 对称加密3. 证书今日摘录 但愿四海无尘沙,有人卖酒仍卖花。 前言 SSL表示安全套接层,是一个用于保护计算机网络中数据传输安全的协议。SSL通过加密来防止第三方恶意截取并篡改数据。在实际应用…...
一个美观且功能丰富的 .NET 控制台应用程序开源库
推荐一个美观且功能丰富的 .NET 控制台应用程序开源库,从此告别黑漆漆的界面。 01 项目简介 Spectre.Console 是一个开源的 .NET 库,用于创建美观、功能丰富的控制台(命令行)应用程序。它提供了一组易于使用的 API,…...
DispatcherSynchronizationContext and Dispatcher
https://www.cnblogs.com/liangouyang/archive/2008/11/20/1337907.html SynchronizationContext提供一个自由线程的同步上下文,一个常用的用法是把UI线程的同步上下文保存起来,传给另一个线程,因为UI只能再UI线程中操作,在另外一…...
java类型属性set方法无法被赋值
前言 遇到一个基础的问题 方法设置属性值 失败 问题代码 有个内部类的User对象 分别使用 方式一和 方式二 设置User的属性值 发现方式一的属性并不能被设置成功 可以自行测试下 public class Test{public static void main(String[] args) {#方式一 User user new User();u…...
【2】SM2验签工具和RSA验签工具
0X01 前言 最近看了好多验签工具,感觉不是很好用,就自己造了个。 0x02 工具功能介绍 对SM2算法进行验签和RSA算分进行验签,签名值可以是base64,也可以是十六进制。 兼容各种输入。 0x03 工具使用 RSA 验签 SM2 验签 0x04 工具…...
Python (十一) 迭代器与生成器
迭代器 迭代器是访问集合元素的一种方式,可以记住遍历的位置的对象 迭代器有两个基本的方法:iter() 和 next() 字符串,列表或元组对象都可用于创建迭代器 字符串迭代 str1 Python str_iter iter(str1) print(next(str_iter)) print(next(st…...
通过maven命令手动上传jar私服Nexus
Nexus3在界面上传组件时报: Ext.JSON.decode(): Youre trying to decode an invalid JSON String: 查找了很多资料,都没有解决。有哪位大佬知道的评论告诉一下,万分感谢。 于是换成maven命令上传: mvn deploy:deploy-file -Dgr…...
记一次用jlink调试正常,不进入调试就不能运行的情况
一、概述 我开机会闪烁所有指示灯,但是重新上电时,指示灯并没有闪烁,就像"卡死"了一样。 使用jlink的swd接口进行调试,需要多点几次运行才能跳转到main函数里面。 调试模式第一次点击运行,暂停查看函数堆栈…...
搞科研、写论文,如何正确使用GPT?AIGC技术解析、提示词工程高级技巧、AI绘图、ChatGPT/GPT4应用
目录 专题一 OpenAI开发者大会最新技术发展及最新功能应用 专题二 AIGC技术解析 专题三 提示词工程高级技巧 专题四 ChatGPT/GPT4的实用案例 专题五 让ChatGPT/GPT4成为你的论文助手 专题六 让ChatGPT/GPT4成为你的编程助手 专题七 让ChatGPT/GPT4进行数据处理 专题八 …...
Java实现的插件化策略模式
Java实现的插件化策略模式 目录结构实现BaseDealAnno.java(注解)BasePluginEnum.java(枚举)BaseDealFactory.javaContextBaseDealListener.java(核心类)BaseDealHandler.java(接口)BaseAudioService.java(可扩展多个)验证目录结构 com.demo.mytest ├── strategy │ ├──…...
【jvm】MinorGC、MajorGC和FullGC
目录 一、说明二、年轻代GC(Minor GC)触发机制三、老年代GC (Major GC/Full GC)触发机制四、Full GC触发机制 一、说明 1.jvm调优的主要目的是GC的时间少一些,用户线程执行的时间多一些 2.主要侧重于MajorGC和FullGC,这两块的GC产生的暂停时间比MinorGC产…...
Redis:java和SpringBoot中使用Redis
目录 Jedis操作Redis6SpringBoot整合Redis Jedis操作Redis6 Jedis是java开发的操作redis的工具包。 引入maven依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.2.1</ve…...
Java的XWPFTemplate word生成列表
Java的XWPFTemplate工具类导出word.docx的使用_xwpftemplate 语法_youmdt的博客-CSDN博客 如果是表格的列表参考上面这篇文章即可,比较复杂的列表遍历暂时还没找到方法,只能手动创建表格了 上面是模板,非常简单,以为我们是要自己创…...
基于RFID的自动化仓储设备研发项目可行性研究报告
一、项目概况 基于RFID的自动化仓储设备研发项目,是深圳市飞鸟国际供应链股份有限公司在公司有色金属供应链一站式服务的基础上,针对有色金属供应链的仓储环节进行的研发。 多年来,公司一直坚持以“科技金融”为核心的未来发展战略…...
ajax异步传值以及后端接收参数的几种方式
异步传值 第一种呢,也是最简单的一种,通过get提交方式,将参数在链接中以问号的形式进行传递 // 前台传值方法 // 触发该方法调用ajaxfunction testAjax(yourData) {$.ajax({type: "get", // 以get方式发起请求url: "/yo…...
千年TGS服务器日志报错如何解决
大家在修改sdb文件,建议使用sdb修改器。注意:每个文件,每个逗号都很重要;只要其中哪部分少一个逗号或多一个逗号,都很容易发生错误。 一常见 TGS1000.LOG 错误类型,因不同的错误,错误中括号“&…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

