【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的服务器上,让其自动获取

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超详细~25考研规划~感恩现在努力的你!!!

25考研规划 俄语,翻译过来叫我爱你 考试时间 第一天 8.30-11.30政治——100分 2.00-5.00英语——100分 第二天 8.30-11.30数学——150分 2.00-5.00专业课——150分 1.什么是25考研 将在2024年12月参加考研,2025年本科毕业,9月读研究…

探索Scrapy中间件:自定义Selenium中间件实例解析

简介 Scrapy是一个强大的Python爬虫框架,可用于从网站上抓取数据。本教程将指导你创建自己的Scrapy爬虫。其中,中间件是其重要特性之一,允许开发者在爬取过程中拦截和处理请求与响应,实现个性化的爬虫行为。 本篇博客将深入探讨…

SpringCloud 微服务全栈体系(十四)

第十一章 分布式搜索引擎 elasticsearch 四、RestAPI ES 官方提供了各种不同语言的客户端,用来操作 ES。这些客户端的本质就是组装 DSL 语句,通过 http 请求发送给 ES。官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/…

Python 自动化(十八)admin后台管理

admin后台管理 什么是admin后台管理 django提供了比较完善的后台数据库的接口,可供开发过程中调用和测试使用 django会搜集所有已注册的模型类,为这些模型类提供数据管理界面,供开发使用 admin配置步骤 创建后台管理账号 该账号为管理后…

程序员带你入门人工智能

随着人工智能技术的飞速发展,越来越多的程序员开始关注并学习人工智能。作为程序员,我们可能会对如何开始了解人工智能感到困惑。今天,我将向大家介绍一些如何通过自学了解人工智能的经验和方法,帮助大家更好地入门这个充满挑战和…

李沐的学习Pytorch环境配置

https://github.com/Miraclelucy/dive_into_deep_learning/tree/main 上面是别人的笔记 可以学一下。 如果没有梯子,按照清华源配置 清华源conda配置 最好下载 1.11版本torch那一套 然后装d2l版本可以装 pip install d2l0.17.6然后可以用 http://localhost:8889/…

学习笔记6——垃圾回收

学习笔记系列开头惯例发布一些寻亲消息 链接:https://baobeihuijia.com/bbhj/contents/3/190801.html java垃圾回收(stop the world) 专注于堆和方法区的垃圾回收,年轻代,老年代,永久代判断对象是否还存…

Linux shell编程学习笔记26:stty(set tty)

之前我们探讨了Linux中的tty,tty命令的主要功能是显示当前使用的终端名称。 如果我们想进一步对tty进行设置,就要用到stty。 stty的功能:显示和修改终端特性(Print or change terminal characteristics)。 1 stty -…

关于新能源汽车的英语翻译

近年来,随着全球对环保和可持续发展的重视,新能源汽车已经成为汽车产业的重要发展方向。各国政府和企业都在加大投入,推动新能源汽车的技术研发和产业化发展,进而促进了新能源汽车翻译的需求不断提升 。那么,关于新能源…

智慧城市安全监控的新利器

在传统的城市管理中,井盖的监控一直是一个难题,而井盖异动传感器的出现为这一问题提供了有效的解决方案。它具有体积小、重量轻、安装方便等特点,可以灵活地应用于各种类型的井盖,实现对城市基础设施的全方位监控。 智能井盖监测终…

Android图片涂鸦,Kotlin(1)

Android图片涂鸦,Kotlin(1) import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.graphics.PointF import android.…

RobotFramework之用例执行时添加命令行参数(十三)

学习目录 引言 标签tag 设置变量 随机执行顺序 设置监听器 输出日志目录和文件 引言 Robot Framework 提供了许多命令行选项,可用于控制测试用例的执行方式以及生成的输出。本节介绍一些常用的选项语法。 标签tag 之前文章我们介绍过,在测试套件…

Appium自动化测试:通过appium的inspector功能无法启动app的原因

在打开appium-desktop程序,点击inspector功能,填写app的配置信息,启动服务提示如下: 报错信息: An unknown server-side error occurred while processing the command. Original error: Cannot start the cc.knowyo…

分库分表

分库,分表,分库分表 “只分库“,“只分表“,“既分库又分表" 何时分库 在面对高并发的情况下,数据库连接成为性能瓶颈。当数据QPS过高导致数据库连接数不足时,考虑分库。在读多写少的场景下&#x…

window上Clion配置C++版本的opencv

window上Clion配置opencv 注意版本一定要对的上,否则可能会出错,亲测 widnows 11mingw 8.1.0opencv 4.5.5 mingw8.1下载地址https://sourceforge.net/projects/mingw/ 配置环境变量 cmake下载 安装完添加环境变量 来到官网,下载 windows 对…

性能测试学习——项目环境搭建和Jmete学习二

项目环境搭建、Jmeter学习二 环境的部署虚拟机的安装虚拟机中添加项目操作步骤 使用环境的注意事项Jmeter的安装和简单使用Jemter的使用的进阶Jemter元件 Jmeter属性执行顺序和作用域作用域以自定义用户变量和用户参数(前置处理器)为例如何解决用户变量和线程组同级时&#xff…

字符串函数详解

一.字母大小写转换函数. 1.1.tolower 结合cppreference.com 有以下结论&#xff1a; 1.头文件为#include <ctype.h> 2.使用规则为 #include <stdio.h> #include <ctype.h> int main() {char ch A;printf("%c\n",tolower(ch));//大写转换为小…

【Rust】快速教程——从hola,mundo到所有权

前言 学习rust的前提如下&#xff1a; &#xff08;1&#xff09;先把Rust环境装好 &#xff08;2&#xff09;把VScode中关于Rust的插件装好 \;\\\;\\\; 目录 前言先写一个程序看看Rust的基础mut可变变量let重定义覆盖变量基本数据类型复合类型&#xff08;&#xff09;和 [ …

前端面试:如何实现并发请求数量控制?

题目&#xff1a;实现一个并发请求函数concurrencyRequest(urls, maxNum) 要求如下&#xff1a; 要求最大并发数 maxNum;每当有一个请求返回&#xff0c;就留下一个空位&#xff0c;可以增加新的请求;所有请求完成后&#xff0c;结果按照 urls 里面的顺序依次打出&#xff1b;…

openGauss学习笔记-127 openGauss 数据库管理-设置账本数据库-修复账本数据库

文章目录 openGauss学习笔记-127 openGauss 数据库管理-设置账本数据库-修复账本数据库127.1 前提条件127.2 背景信息127.3 操作步骤 openGauss学习笔记-127 openGauss 数据库管理-设置账本数据库-修复账本数据库 127.1 前提条件 系统中需要有审计管理员或者具有审计管理员权…