PXE自动平台 搭建 银河麒麟 UEFI x86_64 ARM64

1. PXE自动化 原理

要实现PXE自动安装需要以下组件:

  1. DHCP服务:服务器通过网络启动时自动分配IP地址。
  2. TFTP服务:提供服务器启动下载启动引导EFI。
  3. HTTP服务:操作系统镜像下载。

各组件工作原理如下[1]:

  1. 开PXE后,主机启动时通过网口DHCP获取到IP,以及启动引导文件位置。
  2. 主机通过TFTP协议从从指定位置获取启动引导文件EFI。
  3. 主机上通过引到程序启动系统安装程序。
  4. 系统安装程序通过HTTP协议下载操作系统镜像中所需的内容,例如内核、软件安装包等。
  5. 系统安装完成。
    在这里插入图片描述

2. 安装

2.1 系统配置

关闭selinux

setenforce 0

在这里插入图片描述

关闭开机启动

vi /etc/selinux/config

设置 SELINUX=disabled
在这里插入图片描述

关闭防火墙

或开放端口:

  • TFTP TCP 69
  • HTTP TCP 80
  • DHCP UDP 67,68

2.2 系统镜像准备

请准备X86_64、ARM64 操作系统安装镜像,这里以 银河麒麟V10 举例。
在这里插入图片描述

我们将解压后镜像存储于 /var/www/html/ 中,创建相关目录

mkdir -p /var/www/html/kylin_x86_64
mkdir -p /var/www/html/kylin_aarch64

在这里插入图片描述

把x86_64镜像中的所有内容复制 /var/www/html/kylin_x86_64

mkdir -p cdrom
mount -o loop Kylin-Server-V10-SP3-General-Release-2212-X86_64.iso cdrom
cp -rf cdrom/. /var/www/html/kylin_x86_64
umount cdrom

在这里插入图片描述

把ARM64镜像中的所有内容复制 /var/www/html/kylin_aarch64

mkdir -p cdrom
mount -o loop Kylin-Server-V10-SP3-General-Release-2212-ARM64.iso cdrom
cp -rf cdrom/. /var/www/html/kylin_aarch64
umount cdrom

在这里插入图片描述

2.3 TFTP服务 安装配置

安装TFTP服务

yum install -y tftp-server xinetd

在这里插入图片描述

编辑/etc/xinetd.d/tftp 文件启动允许tftp

vi /etc/xinetd.d/tftp

disable 改为no

在这里插入图片描述
注意,tftp默认的服务目录是 /var/lib/tftpboot ,因此我们需要将我们的EFI启动引导文件放到该目录下。

在此之前我们需要将操作系统的镜像文件中EFI文件拷贝到该目录中。

首先创建不同CPU指令集的目录用于容纳不同的启动文件,这里以 x86_64、aarch64(arm64)、为例:

mkdir -p /var/lib/tftpboot/x86_64
mkdir -p /var/lib/tftpboot/aarch64

ls -l /var/lib/tftpboot

在这里插入图片描述

从镜像文件中的/EFI/BOOT/*/images/pxeboot/ 中的所有内容复制 相应目录中。

x86_64 启动引导复制

\cp -rf /var/www/html/kylin_x86_64/EFI/BOOT/* /var/lib/tftpboot/x86_64/
\cp -rf /var/www/html/kylin_x86_64/images/pxeboot/* /var/lib/tftpboot/x86_64/

ls -l /var/lib/tftpboot/x86_64/

在这里插入图片描述

ARM64 启动引导复制

\cp -rf /var/www/html/kylin_aarch64/EFI/BOOT/* /var/lib/tftpboot/aarch64/
\cp -rf /var/www/html/kylin_aarch64/images/pxeboot/* /var/lib/tftpboot/aarch64/

ls -l /var/lib/tftpboot/aarch64/

在这里插入图片描述

命令前缀\cp 中的\是用于放置覆盖确认提示。

设置开机启动并启动服务

systemctl enable --now xinetd
systemctl enable --now tftp

在这里插入图片描述

查看xinted 服务状态:

systemctl status xinetd

在这里插入图片描述
查看tftp 服务状态:

systemctl status tftp

在这里插入图片描述

2.4 DHCP服务 安装配置

安装dhcp服务:

yum install -y dhcp

在这里插入图片描述

创建DHCP配置文件 /etc/dhcp/dhcpd.conf

DHCP配置文件关键信息如下:

  • 网段:192.168.50.0/24
  • 网关:192.168.50.1 (也就是PXE服务器IP作为网关)
  • DNS:223.5.5.5
  • 分配IP范围:192.168.50.50 ~ 192.168.50.250
  • 启动引导服务地址:192.168.50.1 (也就是PXE服务器IP)
  • 指令集引导文件位置(相对TFTP服务的位置/var/lib/tftpboot):
    • x86_64:x86_64/BOOTX64.EFI
    • aarch64(ARM64):aarch64/BOOTAA64.EFI
vi /etc/dhcp/dhcpd.conf

/etc/dhcp/dhcpd.conf 修改自 /usr/share/doc/dhcp-server/dhcpd.conf.example

/etc/dhcp/dhcpd.conf 配置文件内容如下:

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
ddns-update-style interim;
allow booting;
allow bootp;
ignore client-updates;
set vendorclass = option vendor-class-identifier;
option pxe-system-type code 93 = unsigned integer 16;
#配置要分配的地址段及netmask, 需要修改为自己的网段
subnet 192.168.50.0 netmask 255.255.255.0 { 
    # 配置网关,网络里不要出现多个DHCP服务否则可能会无法正常引导。
    option routers 192.168.50.0;
    # 配置dns
    option domain-name-servers 223.5.5.5; 
    # 配置netmask
    option subnet-mask 255.255.255.0;
    # 分配的ip范围
    range dynamic-bootp 192.168.50.50 192.168.50.250;
    # 缺省租约时间
    default-lease-time 21600;
    # 最大租约时间
    max-lease-time 43200;
    # 指定引导装机的ip
    next-server 192.168.50.1; 

    class "pxeclients" {
        # 根据系统类型选择不同EFI引导文件
        # - 07和09 为x86_64 
        # - 0b 为ARM64
        # - 27 为LoongArch64
        # - 其他: legacy 方式引导
        # EFI引导采用TFTP下载,文件位置为TFTP目录相对位置
        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
        
        if option pxe-system-type = 00:07 {
            # x86_64 引导
            filename "x86_64/BOOTX64.EFI";
        } else if option pxe-system-type = 00:09 {
            # x86_64 引导
            filename "x86_64/BOOTX64.EFI";
        } else if option pxe-system-type = 00:0b {
            # arm64引导
            filename "aarch64/BOOTAA64.EFI";
        } else {
            # legacy引导 该文件需要安装 syslinux,
            filename "pxelinux.0";
        }
    }
}

注意:x86_64引导文件名为 BOOTX64.EFI ,ARM64引导文件名为 BOOTAA64.EFI

设置开机启动并启动服务

systemctl enable --now dhcpd

在这里插入图片描述

查看DHCP服务启动状态

systemctl status dhcpd

在这里插入图片描述

2.5 HTTP服务 安装配置

yum install -y httpd

在这里插入图片描述
httpd默认映射的目录为/var/www/html 也就是我们之前创建用于存储镜像的目录。

设置httpd开机启动并启动

systemctl enable --now httpd

在这里插入图片描述
查看服务状态

systemctl status httpd

在这里插入图片描述
通过浏览器访问httpd映射的ARM64目录

http://192.168.50.1/kylin_aarch64/

在这里插入图片描述

到此为止PXE的准备工作完成。

3. 系统自动化安装

请参考 CSDN . 定制银河麒麟镜像 . Cliven_ . 2024.06 . https://blog.csdn.net/q1009020096/article/details/138839062

参考文献

[1]. CSDN . 麒麟kylinV10实现arm和x86无人值守安装PXE(实施篇) . 九分横 . 2021.08 . https://blog.csdn.net/qq_40742007/article/details/120015910
[2]. 博客园 . KylinV10SP2实现ARM和x86架构系统PXE部署(S3) . 道观猫 . 2024.05 . https://www.cnblogs.com/daoguanmao/p/18192065
[3]. CSDN . CentOS 7下PXE+Kickstart无人值守安装操作系统 . 云改变世界 . 2023.11 . https://blog.csdn.net/w12345jl/article/details/134482860
[4]. Github . PXE+kickstart无人值守安装CentOS 7 . 骏马金龙 . 2019.07 . https://junmajinlong.github.io/linux/pxe_centos7/index.html

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

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

相关文章

最新版ChatGPT对话系统源码 Chat Nio系统源码

最新版ChatGPT对话系统源码 Chat Nio系统源码 支持 Vision 模型, 同时支持 直接上传图片 和 输入图片直链或 Base64 图片 功能 (如 GPT-4 Vision Preview, Gemini Pro Vision 等模型) 支持 DALL-E 模型绘图 支持 Midjourney / Niji 模型的 Imagine / Upscale / Variant / Re…

Redis-数据类型-Geospatial(地理空间索引)

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到db5数据库4、将地理位置信息(经度和纬度)添加到 Redis 的键(key)中4.1、添加大江商厦4.2、添加西部硅谷 5、升序返回有序集key,让分数一起和值返回的结果…

Doris连接超时问题排查记录

文章目录 一、现象描述二、问题排查1、分析驱动包2、分析Mysql客户端(问题解决) 一、现象描述 先上官网部署地址,按照官网上一步步进行部署 https://doris.apache.org/zh-CN/docs/get-starting/quick-start 基本到最后都挺顺利的&#xff0c…

2022年大作业参考报告-使用C++语言开发小学生成绩管理系统、中学生成绩管理系统、大学生成绩管理系统【240621更新】

背景: 目录 第一章 需求分析 2 1.1 问题描述 2 6.1 功能需求 2 6.2 开发环境 2 6.3 开发过程 2 第二章 概要设计 3 2.1 总体设计 3 2.2 类的定义 3 2.3 接口设计 5 2.4 运行界面设计 6 第三章 详细设计 …

【滚动哈希 二分查找】1044. 最长重复子串

本文涉及知识点 滚动哈希 二分查找算法合集 LeetCode 1044. 最长重复子串 给你一个字符串 s ,考虑其所有 重复子串 :即 s 的(连续)子串,在 s 中出现 2 次或更多次。这些出现之间可能存在重叠。 返回 任意一个 可能具…

vs2022 studio控制台出现中文乱码解决

vs2022 studio控制台出现中文乱码解决 问题解决 问题 这里cout中间的中文,但控制台出现的是乱码对此需要进行修改 解决 打开运行的主文件,也就是整个程序的入口,对他另存为 之后点击编码保存 接着将编码保存的格式变为图片对应的这种 记…

ArcGIS定义1.5度带坐标系与投影转换

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 对于ArcGIS如何定义高斯克吕格3度带、6度带,我相信大部分人都是比较清楚的&#xff0…

ArcGIS批量投影转换的妙用(地理坐标系转换为平面坐标系)

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 这次文章我们来介绍一下,如何巧妙用要素数据集来实现要素的批量投影。不需要ArcGIS的模型构建器与解决。 例如,有多个要素要将CGCS_2000地理坐标系投…

gitlab升级16.11.3-ee

背景 这是事后一段时间补充记录的博客。 升级目的:修补漏洞CVE-2024-4835 未经认证的威胁攻击者能够利用该漏洞在跨站脚本 (XSS) 攻击中,轻松接管受害者账户。 gitlab版本为14.6.2-ee升级至16.11.3-ee 思路 翻阅文档找升级方法及升级版本路径。使用…

Python酷库之旅-第三方库openpyxl(02)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

Leetcode 第 401 场周赛题解

Leetcode 第 401 场周赛题解 Leetcode 第 401 场周赛题解题目1:3178. 找出 K 秒后拿着球的孩子思路代码复杂度分析 题目2:3179. K 秒后第 N 个元素的值思路代码复杂度分析 题目3:3180. 执行操作可获得的最大总奖励 I思路代码复杂度分析 题目4…

leetcode 二分查找·系统掌握 寻找旋转排序数组中的最小值II

题目: 题解: 本题比普通的寻找旋转排序数组中的最小值多了一个数组中的元素可以重复这一点。 这会时原来的思路出现一个漏洞(大家感兴趣可以看看我做普通版寻找旋转排序数组最小值的思路),就是旋转后的数组中的第二个…

AI在线免费视频工具2:视频配声音;图片说话hedra

1、视频配声音 https://deepmind.google/discover/blog/generating-audio-for-video/ https://www.videotosoundeffects.com/ (免费在线使用) 2、图片说话在线图片生成播报hedra hedra 上传音频与图片即可合成 https://www.hedra.com/ https://www.…

论文浅读之Mamba: Linear-Time Sequence Modeling with Selective State Spaces

介绍 这篇论文提出了一种新型的"选择性状态空间模型"(Selective State Space Model, S6)来解决之前结构化状态空间模型(SSM)在离散且信息密集的数据(如文本)上效果较差的问题。 Mamba 在语言处理、基因组学和音频分析等领域的应用中表现出色。…

读AI新生:破解人机共存密码笔记08超级智能

1. 发现动作 1.1. 时间跨度长的智能行为,需要具备在多个抽象层次上分层规划和管理活动的能力,从攻读博士学位(可能涉及1万亿个动作),到给一根手指发送一个运动控制指令,从而键入求职信的字符,无…

JavaWeb——Mysql的启动/登录/卸载

目录 1.Mysql服务器 2.Mysql的简单使用 2.1 启动Mysql: 2.2 登录Mysql 2.3 退出 3. 连接别人的数据库 4.卸载mqsql 1.Mysql服务器 安装了Mysql的计算机都成为Mysql服务器 2.Mysql的简单使用 2.1 启动Mysql: 第一种方法:搜索服务&am…

用户态协议栈05—架构优化

优化部分 添加了in和out两个环形缓冲区&#xff0c;收到数据包后添加到in队列&#xff1b;经过消费者线程处理之后&#xff0c;将需要发送的数据包添加到out队列。添加数据包解析线程&#xff08;消费者线程&#xff09;&#xff0c;架构分层 #include <rte_eal.h> #inc…

【Redis】List的常用命令以及常用场景

Redis List 是一个简单的链表&#xff0c;支持在两端进行插入和删除操作。这种数据结构在许多场景下非常有用&#xff0c;例如任务队列、消息队列等。Redis 提供了一系列针对 List 的操作命令&#xff0c;帮助我们更高效地操作链表。 1. List常用命令 操作类型命令时间复杂度…

Redis-使用 jedis 操作数据

文章目录 1、Jedis简介2、环境准备3、创建maven普通项目,导入如下依赖4、测试JAVA程序和Redis之间的通信 1、Jedis简介 "Jedis" 通常是作为 "Java Redis" 的缩写或简称来理解的。Java Embedded Data Structures Interface 表示 Java嵌入式数据结构接口 2、…

如何生成protobuf文件

背景 protobuf是一种用于序列化结构数据的工具&#xff0c;实现数据的存储与交换&#xff0c;与编程语言和开发平台无关。 序列化&#xff1a;将结构数据或者对象转换成能够用于存储和传输的格式。 反序列化&#xff1a;在其他的计算环境中&#xff0c;将序列化后的数据还原为…