PXE高效批量网络装机

embedded/2024/10/19 4:32:53/

文章目录

  • 一、系统装机过程
  • 二、PXE
    • 什么是PXE?
    • 实现过程详解
    • PXE优点
    • 操作过程
    • 配置过程截屏
  • 三、kickstart无人值守安装


一、系统装机过程

Linux启动操作系统有三种方式:1.硬盘2.光驱(u盘)3.网络启动(pxe)
系统安装过程

  • 加载boot loader

Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境

  • 加载启动安装菜单
  • 加载内核和initrd系统
  • 加载根系统
  • 运行anaconda的安装向导

在这里插入图片描述
在系统光盘的isolinux目录下有和安装相关的文件

  • boot.cat: 相当于grub的第一阶段
  • isolinux.bin:光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目
  • isolinux.cfg:启动菜单的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件
  • vesamenu.c32:是光盘启动后的启动菜单图形界面,也属于SYSLINUX项目,menu.c32提供纯文本的菜单
  • memtest:内存检测程序
  • splash.png:光盘启动菜单界面的背景图
  • vmlinuz:是内核映像
  • initrd.img:ramfs文件(精简版的linux系统,文件系统驱动等)

二、PXE

什么是PXE?

PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。

实现过程详解

1.网卡需要查找相关的dhcp服务器

2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)

3.网卡使用tftp客户端把引导程序加载到内存中来

4.bios执行引导程序

5.引导程序会去TFTP去查找配置文件

6.根据配置文件去引导安装系统

7.系统安装过程
在这里插入图片描述

安装过程中涉及到的服务
PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能 够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。
1.TFTP(简单文件传输协议):获取内核和引导文件
2.vsftp:获取系统镜像文件
3.syslinux;syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。
4.DHCP服务:网卡获取地址通信

PXE优点

1.规模化:同时装配多台服务器
2.自动化:安装系统、配置各种服务
3.远程实现:不需要光盘、U盘等安装介质

操作过程

  1. dhcp 服务:分配地址同时指明tftp 服务器的地址目的是分配给同一局域网内新加机器的地址以及指明配置文件位置并获取配置文件
  2. 确保tftp服务端开启
  3. 安装syslinux 获取 pxelinux.0 文件
  4. 安装vsftpd服务挂载软件安装源(mount /dev/sr0 /var/ftp/centos7)
  5. 将四大文件拷入 (/var/lib/tftpboot )
  • initrd.img
  • pxelinux.0 (类似grub)
  • pxelinux.cfg/default (手写)
  • vmlinuz

6.将服务开启,关闭防火墙,selinux
第五步是重点。

配置过程截屏

1.服务端安装相应程序
yum install tftp-server vsftpd syslinux dhcp -y
在这里插入图片描述
2.首先配置dhcp
在该目录下有dhcp的配置模板
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
在这里插入图片描述
2.去配置tftp服务器
在这里插入图片描述
vim /etc/xinetd.d/tftp
在这里插入图片描述

{socket_type             = dgramprotocol                = udpwait                    = no    //wait no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接,表示是否开启多线程一起工作,否则需要等待user                    = rootserver                    = /usr/sbin/in.tftpdserver_args             = -s /var/lib/tftpboot    //指定TFTP根目录(引导文件的存储路径) -c允许上传disable                 = no   //disable no表示开启TFTP服务 per_source              = 11    //通过限制一个主机的最大连接数,从而防止某个主机独占某个服务,这里每个IP地址的连接数是11个cps                     = 100 2   //表示服务器最多启动100个连接,如果达到这个数目将停止启动新服务2秒。在此期间不接受任何请求flags                   = IPv4
}

3.配置syslinux
在这里插入图片描述
找到配置文件并拷贝到站点文件里
4.配置ftp服务端
在这里插入图片描述
5.配置开机启动文件
在这里插入图片描述

配置文件准备完毕,启动服务即可完成
在这里插入图片描述
新建一台虚拟机测试一下,稍等几分钟,出现如下画面即可。在这里插入图片描述
但上述过程只能解决部分问题,并不能实现真正的无人化安装,故接下下介绍kickstart无人值守安装。

三、kickstart无人值守安装

1.安装图形化界面
yum install system-config-kickstart -y
在这里插入图片描述
2.进入虚拟机
在这里插入图片描述
在这里插入图片描述
3.完成个性化配置后,将配置文件保存至/var/ftp/
在这里插入图片描述
4.修改pxelinux.cfg/default 文件
在这里插入图片描述
6.新建虚拟机测试服务。
在这里插入图片描述
遇到此界面耐心等待。

在这里插入图片描述
成功自动化安装。


http://www.ppmy.cn/embedded/35406.html

相关文章

【Three.js基础学习】14.Galaxy Generator

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 课程知识点 1. 实现星际编辑器 2. 创建粒子 1000, 在随机位置 3. 创建材质 PointsMaterial 4. Points() 接收 5. 放到gui 中调试 但是会发现调整size 等 属…

CI/CD笔记.Gitlab系列.新用户管理

CI/CD笔记.Gitlab系列 新用户管理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_285502…

Go 语言(四)【常用包使用】

1、命令行参数包 flag flag 包就是一个用来解析命令行参数的工具。 1.1、os.Args import ("fmt""os" )func main() {if len(os.Args) > 0 {for index, arg : range os.Args {fmt.Printf("args[%d]%v\n", index, arg)}} } 运行结果&#…

算法训练营第二十天 | LeetCode 110平衡二叉树、LeetCode 257 二叉树的所有路径、LeetCode 404 左叶子之和

LeetCode 110 平衡二叉树 递归写法很简单,直接自底向上每个节点判断是否为空,为空说明该层高度为0。不为空用一个int型变量l记录左子树高度(递归调用该函数自身),一个int型变量r记录右子树高度(同样递归调…

NFS服务器(linux-linux)

目录 简介 NFS背景介绍 生产应用场景 NFS工作原理 示例图 流程 NFS的使用 安装 配置文件 主配置文件分析 实验1 NFS账户映射 实验2: 实验3 autofs自动挂载服务 产生原因 安装 配置文件分析 实验4 实验5 简介 NFS背景介绍 NFS是一种古老的用于…

「C/C++ 01」volatile关键字 和 修改const修饰的变量

目录 一、修改const修饰的局部变量 二、无法修改const修饰的全局变量 三、volatile关键字 面试题】 一、修改const修饰的局部变量 可以通过指针和强转来修改const修饰的局部变量。 #include <iostream> using namespace std;int main(void) {const int a 1;int* pa (in…

Android 拼音解析库 Pinyin4j 的介绍及其使用

拼音是汉语的一种辅助拼音文字&#xff0c;用于帮助人们学习汉语的读音和拼写。拼音解析库能够将汉字转换为拼音&#xff0c;并提供多种功能&#xff0c;例如声调标注、拼音格式转换、多音字处理等。 拼音解析库 Pinyin4j 是一个用于将汉字转换为汉语拼音的 Java 库。它提供了…

java中多线程的3种实现方法

1.继承Thread类 优点&#xff1a;代码简单&#xff0c;可以直接使用Thread类里面的方法。 缺点&#xff1a;扩张性较差&#xff0c;应为在java中&#xff0c;一个类只能继承一个父类。 2.实现Runnable接口 3.实现Callable接口 2和3的优缺点是一样的 优点&#xff1a;扩展性强&…