当前位置: 首页 > news >正文

【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.imgramfs文件(精简版的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依赖&#xff1a; <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.2.1</ve…...

Java的XWPFTemplate word生成列表

Java的XWPFTemplate工具类导出word.docx的使用_xwpftemplate 语法_youmdt的博客-CSDN博客 如果是表格的列表参考上面这篇文章即可&#xff0c;比较复杂的列表遍历暂时还没找到方法&#xff0c;只能手动创建表格了 上面是模板&#xff0c;非常简单&#xff0c;以为我们是要自己创…...

基于RFID的自动化仓储设备研发项目可行性研究报告

一、项目概况 基于RFID的自动化仓储设备研发项目&#xff0c;是深圳市飞鸟国际供应链股份有限公司在公司有色金属供应链一站式服务的基础上&#xff0c;针对有色金属供应链的仓储环节进行的研发。 多年来&#xff0c;公司一直坚持以“科技金融”为核心的未来发展战略&#xf…...

ajax异步传值以及后端接收参数的几种方式

异步传值 第一种呢&#xff0c;也是最简单的一种&#xff0c;通过get提交方式&#xff0c;将参数在链接中以问号的形式进行传递 // 前台传值方法 // 触发该方法调用ajaxfunction testAjax(yourData) {$.ajax({type: "get", // 以get方式发起请求url: "/yo…...

千年TGS服务器日志报错如何解决

大家在修改sdb文件&#xff0c;建议使用sdb修改器。注意&#xff1a;每个文件&#xff0c;每个逗号都很重要&#xff1b;只要其中哪部分少一个逗号或多一个逗号&#xff0c;都很容易发生错误。 一常见 TGS1000.LOG 错误类型&#xff0c;因不同的错误&#xff0c;错误中括号“&…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...