玄子Share-PXE高效批量网络装机

玄子Share-PXE高效批量网络装机

部署PXE远程安装服务

PXE 概述

PXE(Preboot eXcution Environment)

  • 预启动执行环境,在操作系统之前运行

服务端

  • 运行DHCP服务,用来分配地址、定位引导程序
  • 运行TFTP服务,提供引导程序下载

客户端

  • 网卡支持PXE协议
  • 主板支持网络引导

对于无盘工作站,服务器端需要提供可运行的完整系统镜像;

对于远程安装,只要提供引导程序和安装源就可以了

PXE 批量部署的优点

  • PXE批量部署的优点规模化:同时装配多台服务器
  • 自动化:安装系统、配置各种服务
  • 远程实现:不需要光盘、U盘等安装介质

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

基本部署过程

  • 准备CentOS 7 安装源(YUM仓库)
  • 安装并启用TFTP服务
  • 提供Linux内核、PXE引导程序等
  • 安装并启用DHCP服务
  • 配置启动菜单

准备CentOS 7 安装源

CentOS 7 安装源支持HTTP、FTP、NFS等协议发布

[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# cp -rf /media/cdrom/* /var/ftp/centos7/
[root@localhost ~]# systemctl start vsftpd

安装并启用TFTP服务

  • 安装tftp-server软件包,启用tftp服务
  • 配置文件位于/etc/xinetd.d/tftp
[root@localhost ~]# yum -y install tftp-server
[root@localhost ~]# vi /etc/xinetd.d/tftp
    server_args  	= -s /var/lib/tftpboot
    disable       	= no
# 修改配置值
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl enable tftp

准备Linux内核、PXE引导程序

  • Linux内核、初始化镜像文件分别为vmlinuz和initrd.img
  • 引导程序为pxelinux.0,由软件包syslinux提供
[root@localhost ~]# cd /media/cdrom/images/pxeboot
# 位于系统镜像文件夹images/pxeboot下
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
# 也拷贝到tftp的根目录

DHCP服务的PXE设置

[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
subnet 192.168.4.0 netmask 255.255.255.0 {
    ......
    option routers 192.168.4.254;
    option domain-name-servers 192.168.4.254,202.106.0.20;
    range 192.168.4.100 192.168.4.200;
    next-server 192.168.4.254; 
    filename "pxelinux.0";
}
# next-server:指定TFTP服务器地址
# filename:指定要下载的引导程序文件
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd

配置启动菜单文件

[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
# 确保pxelinux.cfg目录已存在
default auto		
prompt 1
label auto
    kernel vmlinuz
    append initrd=initrd.img method=ftp://192.168.4.254/centos7
# 图像界面
label linux text
    kernel vmlinuz
    append text initrd=initrd.img method=ftp://192.168.4.254/centos7
#文本模式安装
label linux rescue
    kernel vmlinuz
    append rescue initrd=initrd.img method=ftp://192.168.4.254/centos7
# 进入救援模式

验证PXE网络安装

  • 为客户机安装系统

    • 调整BIOS设置,以便从网络引导

    • 自动获取IP地址,并指定CentOS 7 安装源

    • 其余过程与本地安装相同

若用VMware虚拟机测试,虚拟内存至少2G

实现 Kickstart 无人值守安装

关于 kickstart

  • kickstart无人值守技术

    • 创建应答文件,预先定义好各种安装设置

    • 免去交互设置过程,从而实现全自动化安装

准备应答文件

应答文件的来源

  • 编辑CentOS 7 系统中现有的应答文件
    • /root/anaconda-ks.cfg
  • 使用system-config-kickstart工具创建新的应答文件
    • 需要安装system-config-kickstart软件包

修改各项来对应答文件进行配置

执行各种后续配置任务的脚本语句

应答文件的内容

……
url --url="ftp://192.168.4.254/centos7"
# 网络安装源
……
%post --interpreter=/bin/bash
rm -f /etc/yum.repos.d/*
echo -e '[base]\nname=CentOS7.3\nbaseurl=ftp://192.168.4.254/centos7\nenabled=1\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7'>/etc/yum.repos.d/centos7.repo
%end
%packages
# 定制的软件包组
@^minimal
%end

PXE+kickstart 自动安装

PXE 与 kickstart 结合使用

  • 将应答文件部署在客户机可访问的位置
  • 修改启动菜单文件,调用应答文件
[root@localhost ~]# cp /root/ks.cfg /var/ftp/ks.cfg
[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 0
# 取消用户等待
label auto
    kernel vmlinuz
    append initrd=initrd.img   method=ftp://192.168.4.254/centos7 ks=ftp://192.168.4.254/ks.cfg
# 应答文件的URL地址

验证自动安装

  • 将客户机以PXE方式引导
  • 系统会自动完成安装,并配置好软件仓库
  • 整个安装过程无需手动干预

手动 PXE 部署

服务端命令

[root@xuanzi ~]# mkdir /media/cdrom/                    
# 创建一个目录来挂载 CDROM
[root@xuanzi ~]# mount /dev/cdrom /media/cdrom/         
# 挂载 CDROM 到刚刚创建的目录
[root@xuanzi ~]# mkdir /var/ftp/centos7/               
# 创建一个目录来存放 CentOS 7 的文件
[root@xuanzi ~]# cp -rf /media/cdrom/* /var/ftp/centos7/  
# 将 CDROM 中的文件复制到 CentOS 7 目录中
[root@xuanzi ~]# cd /etc/yum.repos.d/                 
# 切换到存储库配置文件的目录
[root@xuanzi yum.repos.d]# mkdir bak                          
# 创建备份目录
[root@xuanzi yum.repos.d]# mv C* bak/                         
# 移动以 'C' 开头的文件到备份目录
[root@xuanzi yum.repos.d]# cp bak/CentOS-Media.repo ./
# 复制备份目录中的 CentOS-Media.repo 到当前目录
[root@xuanzi yum.repos.d]# vim CentOS-Media.repo
# 使用 vim 编辑 CentOS-Media.repo 文件
# enabled=1                                                      
# 启用该仓库,改这一个就行了
[root@xuanzi ~]# yum -y install vsftpd dhcp syslinux tftp-server  
# 使用 yum 安装 vsftpd、dhcp、syslinux 和 tftp-server 软件包
[root@xuanzi yum.repos.d]# vim /etc/xinetd.d/tftp  
# 使用 vim 编辑 TFTP 服务配置文件,修改  disable = no
[root@xuanzi yum.repos.d]# systemctl start tftp  
# 启动 TFTP 服务
[root@xuanzi yum.repos.d]# cd /media/cdrom/images/pxeboot/  
# 切换到 CDROM 中 PXE 引导文件的目录
[root@xuanzi pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/  
# 将 initrd.img 和 vmlinuz 文件复制到 TFTP 服务器的目录中
[root@xuanzi pxeboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/  
# 将 pxelinux.0 文件复制到 TFTP 服务器的目录中
[root@xuanzi pxeboot]# ll /var/lib/tftpboot/  
# 显示 TFTP 服务器目录中的文件列表
# -rw-r--r--. 1 root root 52584760 4月  12 22:13 initrd.img
# -rw-r--r--. 1 root root    26759 4月  12 22:15 pxelinux.0
# -rwxr-xr-x. 1 root root  6639904 4月  12 22:13 vmlinuz
[root@xuanzi pxeboot]# vim /etc/dhcp/dhcpd.conf 
subnet 192.168.254.0 netmask 255.255.255.0 {
  range 192.168.254.13 192.168.254.254;
  option domain-name-servers 192.168.254.2;
  option domain-name "test.com";
  option routers 192.168.60.2;
  option broadcast-address 192.168.60.255;
  default-lease-time 21600;
  max-lease-time 43200;
  next-server 192.168.254.12;
  # 指定了PXE启动时TFTP服务器的IP地址
  filename "pxelinux.0";
  # 指定了PXE启动时使用的引导文件名
}
[root@xuanzi pxeboot]# systemctl enable dhcpd  
# 启用 DHCP 服务,使其在系统启动时自动启动
[root@xuanzi pxeboot]# systemctl start dhcpd  
# 启动 DHCP 服务
[root@xuanzi pxeboot]# netstat -anpu | grep dhcp  
# 使用 netstat 命令查看当前系统中的 DHCP 相关端口
[root@xuanzi pxeboot]# mkdir /var/lib/tftpboot/pxelinux.cfg  
# 创建 PXE 引导配置文件存放目录
[root@xuanzi pxeboot]# vim /var/lib/tftpboot/pxelinux.cfg/default  
# 使用 vim 编辑 PXE 引导的默认配置文件
default auto
prompt 1
label auto
    kernel vmlinuz
    append initrd=initrd.img method=ftp://192.168.254.12/centos7
label linux text
    kernel vmlinuz
    append text initrd=initrd.img method=ftp://192.168.254.12/centos7
label linux rescue
    kernel vmlinuz
    append rescue initrd=initrd.img method=ftp://192.168.254.12/centos7
[root@xuanzi pxeboot]# systemctl restart vsftpd
[root@xuanzi pxeboot]# systemctl restart tftp
[root@xuanzi pxeboot]# systemctl restart dhcpd
[root@xuanzi pxeboot]# systemctl status vsftpd
[root@xuanzi pxeboot]# systemctl status tftp
[root@xuanzi pxeboot]# systemctl status dhcpd
# 在最终安装之前,请一定确保 以上三个服务均已启动

然后,新建一个 CentOS7 系统,内存至少 2G,并且关闭 VM 自带 DHCP 服务

自动 PXE 部署

服务端命令

[root@xuanzi pxelinux.cfg]# yum -y install system-config-kickstart
# 安装 system-config-kickstart 自动生成脚本文件
[root@xuanzi ~]# system-config-kickstart 
# 打开 system-config-kickstart

然后安装如下图进行配置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后在头部添加与底部添加配置

unsupported_hardware
rm -rf /etc/yum.repos.d/*
echo -e '[base]\nname=CentOS7\nbaseurl=ftp://192.168.254.12/centos7\nenabled=1\ngpgcheck=1\ngpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7'
[root@xuanzi ~]# cp ks.cfg /var/ftp/centos7/
# 将 应答文件 复制到 centos7 下
[root@xuanzi ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 
# 修改 default 启动文件
default auto
prompt 0
label auto
    kernel vmlinuz
    append initrd=initrd.img method=ftp://192.168.254.12/centos7 ks=ftp://192.168.254.12/centos7/ks.cfg
label linux text
    kernel vmlinuz
    append text initrd=initrd.img method=ftp://192.168.254.12/centos7
label linux rescue
    kernel vmlinuz
    append rescue initrd=initrd.img method=ftp://192.168.254.12/centos7                                                   
[root@xuanzi pxeboot]# systemctl restart vsftpd
[root@xuanzi pxeboot]# systemctl restart tftp
[root@xuanzi pxeboot]# systemctl restart dhcpd
[root@xuanzi pxeboot]# systemctl status vsftpd
[root@xuanzi pxeboot]# systemctl status tftp
[root@xuanzi pxeboot]# systemctl status dhcpd
# 在最终安装之前,请一定确保 以上三个服务均已启动

然后,新建一个 CentOS7 系统,内存至少 2G,并且关闭 VM 自带 DHCP 服务


玄子Share-PXE高效批量网络装机 2024.04.12

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

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

相关文章

计算机网络——应用层协议(1)

在这篇文章初识网络中,我介绍了关于计算机网络的相关知识,以及在这两篇文章中Socket编程和Socket编程——tcp,介绍了使用套接字在两种协议下的网络间通信方式。本篇文章中我将会进一步介绍网络中网络协议的部分,而这将会从应用层开…

基于SpringBoot+Vue乡村养老服务管理系统

项目介绍: 使用旧方法对乡村养老服务管理系统登录的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在乡村养老服务管理系统登录的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误…

[笔试训练](十)

目录 028:最长回文子串 029:买卖股票的最好时机(一) 030:过河卒 028:最长回文子串 最长回文子串_牛客题霸_牛客网 (nowcoder.com) 题目: 题解: 1.中心扩展算法: 每…

Docker镜像和容器操作

目录 一.Docker镜像创建与操作 1. 搜索镜像 2. 获取镜像 3. 镜像加速下载 4. 查看镜像信息 5. 查看下载的镜像文件信息 ​编辑6. 查看下载到本地的所有镜像 7. 根据镜像的唯一标识ID号,获取镜像详细信息 8. 为本地的镜像添加新的标签 9. 删除镜像 10. 存入…

Linux 第十一章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

BUUCTF-WEB2

[SUCTF 2019]EasySQL1 1.启动靶机 2.寻找注入点和注入方法 随便输入一个字母,没有回显 随便输入一个数字,发现有回显,并且回显结果一样 3.堆叠注入 1; show databases; #查看数据库 1; show tables; #查看数据表 里面有个flag 1;set …

Three.js和Cesium.js中坐标

在了解Three.js和Cesium.js前先了解并弄清楚图形学关于空间的基本概念流程: 计算机图形学 图形学中涉及到多个坐标空间,这些空间之间的变换是图形渲染中的核心部分。下面是一些常见的图形学空间及其变换顺序: 对象空间(Object Sp…

【完整指南】如何在Visual Studio Code中轻松运行Llama 3模型?

Meta 发布了最新的开源语言模型Llama 3。因为它是开源的,你可以下载这个模型,并在自己的电脑上运行。 我清楚,你可能会想,在个人笔记本上运行一个拥有80亿参数的AI模型似乎只有技术高手才能做到。但别担心!这篇文章会…

MATLAB 运算符

MATLAB 运算符 运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。MATLAB设计为主要在整个矩阵和数组上运行。因此,MATLAB中的运算符既可以处理标量数据,也可以处理非标量数据。MATLAB允许以下类型的基本运算- 算术运算符 关系运算符…

前端复习资料

前端复习资料 落叶的位置,谱出一首诗,时间在消逝,我们的故事。 这篇文章呢,整理写给需要的前端同学的。 核心知识,必须掌握的,也是最基础的,譬如浏览器模型,渲染原理,JS…

网页模版如何用

现在的网页模版已经得到了许多人的喜爱和使用。随着人们对互联网的需求不断增加,更多的公司和组织需要拥有自己的网站,以推广他们的品牌和服务。而网页模版为他们提供了一个简单而高效的方法来创建自己的网站。 网页模版是预先设计好的网站模板&#xff…

【数据分析】NumPy

文章目录 [toc]ndarray的创建np.array()方法np.arange()方法np.zeros()方法np.ones()方法np.full()方法np.eye()方法np.random模块np.random.random()方法np.random.randint()方法np.random.choice()方法np.random.shuffle()方法 ndarray的属性ndarray.dtypendarray.ndimndarra…

初识BootStrap

目录 前言: 1.Bootstrap的特点包括: 1.1响应式设计: 1.2组件丰富: 1.3易于定制: 1.4兼容性良好: 1.5强大的社区支持: 1.6一致的样式和布局: 1.7 插件和扩展性 2.初识Ajax: 2.1同步请求…

Linux——(关于权限常见的3个问题)

文章目录 1.修改文件或者目录的拥有者和所属组1.1chown指令1.2chgrp指令 2.常见的权限三个问题2.1对应一个目录,如果要进入,需要什么权限?2.2为什么我们创建的文件默认权限不是7772.2.1关于Linux下的权限掩码 2.3文件能否被删除取决于什么2.3…

Paddle OCR v4 微调训练文字识别SVTRNet模型实践

文字识别步骤参考:https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/recognition.md 微调步骤参考:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7.1/doc/doc_ch/finetune.md 训练必要性 原始模型标点符号和括号容易识别不到 数据…

【kettle004】kettle访问本地MySQL数据库并处理数据至execl文件

一直以来想写下基于kettle的系列文章,作为较火的数据ETL工具,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 熟悉、梳理、总结下MySQL关系数据库相关知识体系 3.欢迎批评指正,跪谢一键三连&…

大模型微调:技术迭代与实践指南

在人工智能领域,大模型(LLM)的微调是一个关键过程,它使模型能够适应特定的任务和数据集。微调是深度学习中用于改进预训练模型性能的重要技术。通过在特定任务的数据集上继续训练,模型的权重被更新以更好地适应该任务。…

揭秘工业大模型:从人工智能小白到技术先锋

工业大模型的五个基本问题 信息化时代,数字化转型成为企业提升营运效率、应对经营风险和提升核心竞争力的重要途径。在此过程中,数据作为一种客观存在的资源,所产生的价值日益凸显。党的十九届四中全会从国家治理体系和治理能力现代化的高度将…

详解Qt绘图机制

Qt框架以其强大的图形界面功能著称,其中绘图机制是构建丰富视觉效果的关键。本文将详细介绍Qt中的绘图机制,包括绘图基础、绘图设备、绘图工具及高级特性,并通过实战C代码示例,带你领略Qt绘图的魅力。 绘图基础 Qt的绘图操作主要…

vs2019 - release版中_DEBUG宏生效的问题

文章目录 vs2019 - release版中_DEBUG宏生效的问题概述笔记总结END vs2019 - release版中_DEBUG宏生效的问题 概述 在加固程序,需要去掉PE的字符串表中和逻辑相关的字符串。 编译成release版后,用IDA看,还是发现有debug版才有的字符串。 那…