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

联想服务器-HTTP boot安装Linux系统

HTTP boot与传统PXE的主要差异

HTTP不再需要使用UDP协议的tftp服务(连接不可靠、不支持大文件)了,只需要dhcp 和http 两个服务即可,支持较稳定的大文件传输。

实验环境

ThinkSystem服务器SR650V2 SR660V2 通过HTTP boot安装CentOS8.1

基本步骤

HTTP boot三剑客

剑眼 制作http boot 的NBP文件

剑魂 HTTP boot服务器的搭建

剑灵 服务器端开启http boot

制作http boot 的NBP文件

使用ipxe编译制作支持http boot的NBP文件(根据了解,目前CentOS自带的NBP不支持http boot,网络上的其他tips,基本上都是使用SLES的NBP文件,对于使用者来说,很难理解其内部的文件嵌套调用情况,所以本文描述的实验是基于ipxe自己编译NBP文件,这样的话我们能很清楚地了解文件调用情况,便于根据实际需求制定方案)

获取ipxe源

从ipxe.org官网获取ipxe的源码

git clone https://github.com/ipxe/ipxe.git

创建ipxe自定义脚本

切换目录到ipxe/src/, 然后创建自定义ipxe脚本myipxe.script

#ipxe

:retry\_dhcp

dhcp || goto retry\_dhcp

chain http://${next-server}/ipxe.txt

内容说明:

上述例子中文件名可以自己定义,第一行是ipxe脚本的语法,中间的两行是实现“当dhcp没获取到ip时,不断重试dhcp,直到获取到ip”,最后一行是指定调用的文件,其中变量${next-server}是由dhcp服务传递过来的(这个调用的机制与CentOS7.X官方ISO中的NBP文件BOOTX64.EFI默认调用grub.cfg文件的原理类似)

ipxe是一个强大的工具,如果需要ipxe支持https,nfs等其他文件传输方式,可以在编译前修改ipxe/src/config/general.h文件,将对应协议前的#undef替换为#define

编译基于ipxe的NBP文件

编译ipxe的NBP文件,因为http boot只支持UEFI启动模式,所以我们需要编译uefi版本的NBP文件,编译完成后,我们将生成的ipxe.efi文件拷贝到网络部署服务器上待用。

make bin-x86\_64-efi/ipxe.efi EMBED=myipxe.script

HTTP boot服务器的搭建

dhcp配置文件准备

以下是本实验中用到的dhcp配置文件,以下例子中dhcp会根据客户端发送请求的标志区分其发送的是pxe请求还是http boot请求,指定不同的NBP文件。

cat /etc/dhcp/dhcpd.conf

option space PXE;

option PXE.mtftp-ip code 1 = ip-address;

option PXE.mtftp-cport code 2 = unsigned integer 16;

option PXE.mtftp-sport code 3 = unsigned integer 16;

option PXE.mtftp-tmout code 4 = unsigned integer 8;

option PXE.mtftp-delay code 5 = unsigned integer 8;

option arch code 93 = unsigned integer 16;

allow booting;

allow bootp;

subnet 172.20.0.0 netmask 255.255.0.0 {

range 172.20.0.101 172.20.200.240;

default-lease-time 36000;

max-lease-time 36000;

next-server 172.20.0.1;

option routers 172.20.0.11;

option domain-name-servers 208.67.222.222,8.8.8.8;

class "pxeclients"{

match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";

filename "bootx64.efi";

}

class "httpclients" {

match if substring (option vendor-class-identifier, 0, 10) = "HTTPClient";

option vendor-class-identifier "HTTPClient";

filename "http://172.20.0.1/ipxe.efi";

}

}

内容说明

根据上面的dhcp服务的配置文件,http boot的机器会尝试获取http://172.20.0.1/ipxe.efi这个NBP文件,所以我们需要将前面编译好的ipxe.efi文件放到http服务相应的目录(本测试用的是默认的/var/www/html/目录)

在前面创建ipxe自定义脚本时,我们指定了NBP文件启动后会调用的脚本http://${next-server}/ipxe.txt,所以我们需要编辑这个文件,并放到http服务相应的目录/var/www/html/

ipxe 内容

cat ipxe.txt

#!ipxe 

:start

menu HTTP Boot CentOS8.1

item --key 1 http\_boot\_centos\_installer

:http\_boot\_centos\_installer

echo CentOS8.1 Installer

set server\_ip 172.20.0.1

kernel http://${server\_ip}/centos81/images/pxeboot/vmlinuz initrd=initrd.img inst.ks=http://${server\_ip}/dxl-ks.cfg rd.net.timeout.carrier=30 inst.ksdevice=link inst.ip=dhcp

initrd http://${server\_ip}/centos81/images/pxeboot/initrd.img

boot || goto failed

内容说明

上面的定义实际上类似于pxe部署时对grub.cfg文件的定义,按上面定义的路径在httpd服务的根/var/www/html/下创建好centos81目录并挂载CentOS8.1的安装镜像, 将kickstart文件(本实验中指定的kickstart文件是dxl-ks.cfg)复制到/var/www/html/目录。

总的来说,在ipxe中指定的kernel、initrd、ks文件要能被访问。

服务器端开启http boot

服务器端开启http boot,本实验中测试了联想服务器SR650V2和SR660V2,对应的设置项分别如下:

Thinkserver SR660V2的设置项

Bios.IPv4HTTPSupport=Enable

Thinksystem SR650V2的设置项

NetworkStackSettings.IPv4HTTPSupport=Enabled

HTTP Boot 验证

将服务器开机,根据提示按F12,然后选择“HTTP IP4”(注意不是PXE IP4)的启动项即可http boot

如果需要将http boot加入到启动项中,请参考如下链接的第19页

Using HTTP Boot to Install an Operating System on Lenovo ThinkSystem servers > Lenovo Press

ipxe引导成功

图片

图片

更多技术文档请访问365文档

相关文章:

联想服务器-HTTP boot安装Linux系统

HTTP boot与传统PXE的主要差异 HTTP不再需要使用UDP协议的tftp服务(连接不可靠、不支持大文件)了,只需要dhcp 和http 两个服务即可,支持较稳定的大文件传输。 实验环境 ThinkSystem服务器SR650V2 SR660V2 通过HTTP boot安装Cen…...

容器滚动更新过程中流量无损

应用在发布或重启的期间会出现少量的 5xx 异常,应该如何解决? 我们发现导致流量有损的原因有很多,比如: 上线时,应用在就绪前收到流量,导致请求无法被处理; 下线时,应用没有做优雅…...

深入理解JS中的this

1、浅谈this 1.1、调用位置 在学习this的绑定过程之前,首先要理解调用位置,即函数在代码中被调用的位置,因此我们需要分析调用栈,看以下代码 function baz(){// 当前调用栈是baz// 因此调用位置就是全局作用域console。log(&qu…...

rust 基础数据类型

默认类型 大部分情况下,rust 可以基于上下文自动推导出变量的类型。下面代码中,变量 x 没有显式,rust 默认是 i32 类型。 fn main() {let x 5; }但也有一些例外情况,比如,字符串类型的转换中变量 x 的类型&#xff…...

ELK极简上手

目录 引言 首先,下载相关的包 其次,安装启动elasticsearch 下一步,安装并启动logstash 最后,安装并启动kibana 进一步的,测试数据的流动 引言 最近整理电脑发现之前的一篇ELK极简入门笔记,现整理发出…...

在 JavaScript 中,变量的作用域是如何确定的?

在 JavaScript 中,变量的作用域是由作用域链(Scope Chain)来确定的。作用域链是指变量在执行期间访问的作用域的链式结构。 JavaScript 中的作用域分为全局作用域和局部作用域(函数作用域和块级作用域)。 全局作用域…...

常见面试题-TCP三次握手四次挥手

TCP 三次握手/四次挥手 参数用途SYN用于启动和建立连接时,同步设备之间的序列号。0到2^32 - 1的随机数。ACK向另一端确认已经收到 SYN,数值为收到 SYN 增一。SYN-ACK确认之前收到了 SYN,数值为自定义值。FIN终止连接。RST重置连接。 三次握…...

前端框架Vue学习 ——(六)Vue组件库Element

文章目录 Element 介绍快速入门常见组件表格分页Dialog 对话框组件表单 Container 布局容器 Element 介绍 Element:是饿了么团队研发的,一套为开发者、 设计师和产品经理准备的基于Vue 2.0的桌面端组件库。 组件:组成网页的部件,…...

第六章:Property-based Testing and Test Oracles

文章目录 Test OraclesActive and Passive Test OraclesTypes of Test OraclesFormal, executable specificationsSolved examplesMetamorphic oraclesAlternative implementations (备用实现)Heuristic oracles (启发式)The Golden Program!Oracle Deviation (Oracle偏差)T…...

react生命周期函数

React 组件的生命周期可分为三大阶段:挂载阶段(Mounting)、更新阶段(Updating)和卸载阶段(Unmounting)。 1.挂载阶段(Mounting) 在组件被插入到 DOM 中后,会…...

QSqlDatabase使用Sqlite

QSqlDatabase使用Sqlite Sqlite本身就可以被内嵌在程序中,QSqlDatabase也自带Sqlite驱动,无需任何第三方依赖,可以直接使用 QSqlDatabase _db QSqlDatabase::addDatabase("QSQLITE"); QString dbPath "/path/to/xxx.db&qu…...

宝马——使用人工智能制造和驾驶汽车

德国汽车制造商宝马(BMW)每年在全球制造和销售250万台汽车,其品牌包括宝马、MINI和劳斯莱斯。 宝马汽车以其卓越的性能和对新技术的应用而著名,它是道路上最精致的汽车之一,并且和其竞争对手戴姆勒(Daimler)一样,在将自动驾驶汽车…...

java入门,Map<? extends String, ?>

一、前言 是不是平时写业务代码的时候很少用到这个写法&#xff1a;Map<? extends String, ?>&#xff0c;这是Map类型&#xff0c;Map的键是? extends String 类型&#xff0c;值是?。为什么不是我们平时写的Map< String, Object>&#xff0c;这种写法有什么好…...

Spring Boot 统一处理功能

目录 1.用户登陆权限验证 1.1 每个方法验证 1.2 Spring AOP 用户统一登陆验证 1.3 拦截器 1.3.1 自定义拦截器 1.3.2 将自定义拦截器配置到系统设置中&#xff0c;并且设置拦截规则 1.3.3 排除所有的静态资源 1.4 登录拦截器&#xff08;练习&#xff09; 1.5 拦截器原…...

香港金融科技周VERTU CSO Sophie谈Web3.0的下一个风口 手机虚拟货币移动支付

10月31日&#xff0c;香港金融科技周正式拉开帷幕。这项香港金融科技界地年度盛事今年已经踏入了第八届&#xff0c;本届活动吸引超过数百位金融科技专业人士、创业者和行业领袖现场参与&#xff0c;线上参与观众超过10万人次。 在金融科技周的圆桌会议上&#xff0c;VERTU首席…...

分布式单元化

一 分布式单元化 1.1 两地三中心 顾名思义&#xff0c;两地指的是两个城市&#xff1a;同城&#xff0c;异地。三中心指的是三个数据中心&#xff1a;生产中心、同城容灾中心、异地容灾中心。 在同一个城市或者临近的城市建设两个相同的系统&#xff0c;双中心具备相当的业…...

wvp-gb28181-pro接入海康摄像头

网络-高级配置-平台接入 sip服务器信息默认参数如下&#xff0c;一键安装wvp完成之后默认就是这样的参数 设置项 设置值 平台接入方式 28181 本地sip端口 5060 传输协议 tcp、udp&#xff08;外网的话我建议还是用tcp&#xff09; 启用 勾选 协议版本 GB/T28181-201…...

近视眼选择什么台灯好?专家推荐的防近视台灯

年轻的时候不懂&#xff0c;以为自己的眼睛不好&#xff0c;近视度数高&#xff0c;是因为长时间看书造成的&#xff0c;其实我们都忽视了一个最为重要的影响因素&#xff0c;那就是灯光。如今的孩子面临着比我们以前更要繁重的学习压力&#xff0c;因此更需要注意用眼健康了&a…...

数据标注工具【LabelImg】安装使用 用VOC制作自己的数据集

labelImg的安装 ⭐️LabelImg简介⭐️LabelImg的安装⭐️labelImg标注数据集⭐️利用VOC制作自己的数据集 ⭐️LabelImg简介 Labelimg是一款开源的数据标注工具&#xff0c;标签可用于分类和目标检测&#xff0c;它是用python写的&#xff0c;并使用Qt作为其图形界面&#xf…...

Zeus IoT : 基于 SpringBoot 的分布式开源物联网大数据平台

Zeus IoT 是一个集设备数据采集、存储、分析、观测为一体的开源物联网平台&#xff0c;全球首创基于 Zabbix 的物联网分布式数据采集架构&#xff0c;具备超百万级物联网设备的并发监控能力&#xff0c;真正具备工业级性能与稳定性的开源物联网大数据中台。 Zeus IoT 致力于让设…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...