优化pxe网启动时tftp的传输速度 --- 针对pxelinux和bootmgr

2023-10-27

    作为一名IT人士,一般的计算机维护当然不好意思找别人。 于是自己用pxelinux搭了个网络启动环境,可以启动各种WinPE,以供折腾电脑系统,刷新固件的需要。

 

    只是一般的网络启动都是基于tftp协议的,传输文件那叫一个慢。启动时光是加载映像文件就得几分钟,简直就像活在史前一样。 找了一圈方法,没辙。 好在这东西也就救急时用用,凑活凑活也行。

 

   于是就这么凑错了几年。。。

 

   最近升级到win8了,为了维护环境,加了几个win7,win8的PE。 winxp的pe就在启动菜单上无比折腾(要到二进制文件里去改),win7也没好到哪儿去。但是新的bootmgr本身 提供了启动菜单,   为了简单起见,干脆放弃了在pxelinux里集成多个winpe的菜单了,直接单弄一个目录直接启动bootmgr。需要的时候切换下目录就行了,比强行改二进制文件,然后弄到pxelinux菜单上不知道轻松多少倍。

 

   好了,那就从bootmgr的菜单折腾起。过程比较无趣繁琐,一带而过:随便找个例子教程照着改;结果似乎有时好使有时不好使,原因不明;一怒之下把BCD的规范定义翻了个遍; 问题解决了,原因也搞明白了;顺带着还有个意外的收获。

 

   这个意外的收获就是发现在BCD的定义中,有两个涉及到TFTP的参数,分别是 windows size 和 block size。当时一看到这两个参数就眼前一亮,要知道TFTP的传输性能弱,关隘全在这俩参数上。

   赶紧把这俩参数仔仔细细的查清楚了,立刻加到bootmgr的bcd里面。

   启动一试, 效果非常显著!!

   默认的网络启动过程,网卡的使用率始终在10mbps以下徘徊,大部分情况下更低,一个3M大小的字体文件,都要拷贝好一会儿。加上参数后,网卡的利用率立刻飙升到40mbps上下,一般都不低于20Mbps。 网络加载速度一下子快乐好几倍,再也不用傻等了,非常之爽。

 

下面是我的 bcdedit /store bcd /enum all 的部分输出:

 

安装程序 Ramdisk 选项
---------------------
标识符                  {ramdiskoptions}
ramdisksdidevice        boot
ramdisksdipath          \BOOT\BOOT.SDI
ramdisktftpblocksize    40960
ramdisktftpwindowsize   100

 

其中可以看到 block size 设成了 40K。window size 设成了 100。

block size 设成 40k 是为了配合udp封包的优化,虽然理论上可以到63k左右(64k - 包头结构),稍微留点余量还是比较稳妥的。 实际使用时,block size其实可以更大更随意,比如到1M大小,只是这是程序层的逻辑,到了UDP层还是自动拆分了。 这个地方选40k纯属经验,并没有对比过其他的数值并优化。

 

windows size 这个值其实比较随意,但只在较小的数值范围时,才满足正比关系(越大效率越高);超过一定的数值后,再大也没多大的意义了,而且效率有可能更低,甚至伴随更多的稳定性问题。

我一开始设置的是10,效果就很好了;后来为了对比下,就调成了100,发现100的效率跟10的效率,几乎没有啥区别,即便有提升,估计也就 百分之几顶多十几的提升。 其实这个地方10就足够了,我这儿是因为没啥区别,所以测试后没有改回来。

 

 

原谅我懒于编排文章结构,就这样吧:  以上是bootmgr的部分
------------------------------------------------ 分割线 ------------------------------------------------

以下是pxelinux的部分

 

 

 

上文说到bootmgr里面有两个很隐秘的参数,解决了网络传输性能的大问题。 但是这仅仅针对bootmgr才起作用;对于 基于 pxelinux 启动的部分,还是老样子。

但是有了上文的成功案例的鼓励,就更加有了改造pxelinux的信心。

 

过程同样是无趣且冗长波折的,这里直接跳转到结果:

结果就是下载syslinux的源码,修改后重新编译---听起来有点麻烦,其实非常简单,尤其是Linux环境下,直接打make就行(其实还需要安装个uuid-dev的包,我没看README,结果找这个uuid.h找了半天,找到了才发现人README里写的很清楚)。

 

修改的地方有两处,都在 core/fs/pxe目录下:

对于 pxe.c, 找到 1408 这个字符串,改成 40960. 这是定义blocksize。

对于 pxe.h,找到  PKTBUF_SIZE 的定义,把 2048 改成 (1024*64)。 这里定义的是接受缓冲区的大小。

 

然后

make

sudo make netinstall

就行了。

 

其实光make就行了,只是他的makefile写的不怎样,编译出来的文件都分散在各个目录里了,找起来很麻烦。 make netinstall 会把这些编译出来的文件,都拷贝到 /tftpdroot里,找起来就方便多了。由于是在根目录下创建/tftpdroot目录,所以需要sudo,如有已有目录且有权限,是不必sudo的。

 

 

说下效果吧:

  一句话,非常棒!!

  pxelinux 的这个部分实现得非常精简,只支持一个 block size参数,不支持window机制。但即便如此,他的效率仍高过了具备window机制的bootmgr。网卡利用率最高可以到60Mbps上下,最低也有20Mbps左右。相对于原来,简直是飞一般的速度!

 

 

再多啰嗦句:

  syslinux这里的默认值真的是很诡异 ,1408??这是数字一眼就让人想起modem的MTU。 问题是这个东东大部分是局域网用的,跟MTU有个毛关系啊。

  pxelinux在他的说明里,一再强调 所设置的 TFTPD服务器一定要支持 tsize 选项,不兼容没有tsize选项的tftpd。言下之意是pxelinux是比较新的,支持比较高级功能的。

但是他所设定的1408的block size,仅仅比最初始的恐龙时代的设定------512,多了一倍多而已,根本就是聊胜于无。

  还是赶紧改了吧。

 

 

 

 

 

 

 最后,对于实在不想自己编译的同学,我把我的编译结果放在这儿了。

 http://download.csdn.net/detail/whoo/5054668 (注:这个包的blksize设为40k,对于有些机器来说过大了,存在兼容性问题。在将blksize调整为16k之后,经测试速度几乎没有降低,而兼容性好了很多------手头可测试的设备都通过了,但有网友反馈仍有问题。 新的下载地址是这个 http://download.csdn.net/detail/whoo/5150778

 

 

补充下就是:我的各种测试中,pxelinux.0 是没问题的的。  但是gpxelinux.0在vmware中就报错。 经过一段时间的尝试后,我已经放弃gpxe这个东东了,所以未做进一步的测试,不清楚这一问题到底是gpxe在vmware中的兼容问题,还是修改后的传输参数造成的。

 

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

优化pxe网启动时tftp的传输速度 --- 针对pxelinux和bootmgr 的相关文章

  • PXE+Centos5+Unattended4.7自动化安装Windows 2003

    这几天在折腾如何自动化安装windows 2003操作系统 xff0c 想象的结果应该是这样的 xff1a 机器一开机就通过PXE引导 xff0c 到dhcp服务器获得IP xff0c 然后到tftp服务器获得启动镜象 xff0c 镜象启动
  • 无线路由器升级升级不成功,请检查您是否已经开启tftp服务器.,路由器变砖怎么办救活成功修复TFTP详细图文教程...

    一般情况下路由器要刷入固件只需要在路由器管理界面就可以升级或者更新固件 xff0c 但如果路由器已经变砖无法使用了怎么办 xff0c 这时候别说管理界面 xff0c 有时候灯都不亮了 xff0c 其实不用担心 xff0c 即便如此我们还是可
  • 利用PXE批量进入救援模式修复多台主机的boot分区

    利用PXE自动化安装centos7 前言 PXE的功能及原理 大概解释一下意思就是 xff1a 启动计算机的时候如果没有插入U盘以及光驱等介质的话 xff0c boot启动项是有一个从PXE启动的选项 xff0c 如果都没有则会从pxe启动
  • Linux PXE无盘工作站

    关于PXE无盘工作站系统的简介 PXE无盘工作站系统是指由一台或多台 系统服务器 和多台 PXE客户端 无盘工作站 通过 交换机 相连组成的局域网系统 xff08 图1 xff1a 无盘工作站系统部署拓扑图 xff09 系统服务器 xff1
  • 虚拟机中PXE-MOF:Exiting intel PXE ROM.Operating system not found

    PXE MOF Exiting intel PXE ROM Operating system not found 解决方法 xff1a 在VM 的edit setting 上 xff0c 虽然 ISO 加载了 xff0c 但是 start
  • Linux——PXE高效批量网络装机

    文章目录 前言一 部署PXE远程安装服务1 批量部署的前提条件2 PXE批量部署的优点3 PXE启动方式4 基本部署过程5 PXE服务器和客户机的工作过程 6 搭建 PXE 远程安装服务器6 1 添加网卡并配置网卡信息6 2 安装并启用 D
  • ubuntu 配置 tftp 服务器

    注意 xff1a 1 tftpboot为根目录 2 已经是root权限不用再加sudo 临时获取权限 3 使用netstat au grep tftp xff0c 保证tftp是启动的 出现 udp 0 0 tftp 则说明tftp服务已经
  • 用pxe批量安装服务器系统,pxe自动化批量安装系统(Centos7)

    PXE xff1a preboot execute environment 环境实现 xff1a 主服务器ip xff1a 10 0 10 1 1 tfpt trivial简单文件共享服务 xff0c 基于udp协议工作 xff1b 加载系
  • Ubuntu 16.04 安装tftp

    准备工作 新建一个777权限的tftpdir服务文件夹 例如 home sjj work tftpdir 放一个有内容的1 txt文本用来测试 安装tftp的增强版本 服务端tftpd hpa 客户端tftp hpa sudo apt ge
  • WDS ISC-DHCP-SERVER PXE

    Debian Linux bullseye gt cat etc os release PRETTY NAME 61 34 Debian GNU Linux bullseye sid 34 NAME 61 34 Debian GNU Lin
  • ubuntu 10.04下的配置tftp服务器

    转载自 http www cnblogs com geneil archive 2011 11 24 2261653 html 第1步 xff1a 安装tftp所需的软件 首先需要安装tftp hpa xff0c tftpd hpa xff
  • linux-Centos 7下tftp-server服务的安装与配置

    转自 http www cnblogs com 5201351 p 4934625 html TFTP xff08 Trivial File Transfer Protocol 简单文件传输协议 xff09 是TCP IP协议族中的一个用来
  • linux tftp服务器搭建与测试

    1 安装tftp服务器 sudo apt get install tftp hpa tftpd hpa tftp hpa是客户端 tftpd hpa是服务器端 2 配置tftp服务器 sudo vim etc default tftpd h
  • TFTP服务器搭建与使用

    文章目录 一 TFTP协议二 TFTP服务器搭建1 安装TFTP服务器2 创建TFTP服务文件夹3 配置tftp文件4 配置tftpd hpa文件 三 TFTP服务器使用 一 TFTP协议 TFTP xff08 Trivial File T
  • Ubuntu11.04上tftp服务的配置

    Ubuntu11 04 上tftp 服务的配置 2011 06 17 15 01 以前ubuntu 版本上的tftp 已经配置很多遍了 xff0c 详情可以参见 xff1a www mcuos com thread 646 1 2 html
  • Openwrt tftp刷机

    第一次写论坛 xff0c 今天早上才拿到路由器 开始学习openwrt 之前学过嵌入式Linux arm 移植 xff0c 开始正题 xff1a 拿到开发板后 xff0c 就开始烧写自己编译的 bin文件 xff0c 在烧写的过程中出现了问
  • 【Windows + Linux】专业级:安装操作系统 + 多系统 + GhostCast Server PXE 网刻基础坑精通详解

    目录 前言 1 BIOS 和 UEFI 与 MBR 和 GPT 的装机简述 GPT MBR 硬盘分区表模式 BOOT 引导流程 启动管理器 如何选择一种 BOOT Mode 启动模式 Legacy UEFI 总结 BIOS 设置的硬盘模式
  • ubuntu和树莓派文件共享

    一 环境 ubuntu1910 树莓派4b 并且需要在同一个局域网内 二 我对于服务器与客户端的理解一开始都不懂 但经过慢慢查找慢慢了解了一些 在同一个局域网内 开启的服务器端允许任何客户端访问 三 安装并配置 1 ubuntu下 1 安装
  • 在Ubuntu20.10中搭建TFTP服务器

    TFTP Trivial File Transfer Protocol 是用来下载远程文件的最简单的网络协议 它基于UDP协议而实现 一 安装 sudo apt get install tftp hpa tftpd hpa tftp hpa
  • tftp put 的 inotify 事件 IN_MODIFY 发生两次

    我正在使用 inotify 来监听对文件的修改 当我测试文件修改时 程序运行正常 echo test gt tftpboot TEST Output Read 16 data IN MODIFY 但是当我执行 tftp put 时 会生成两

随机推荐

  • LevelDb

    LevelDb 之一 初识LevelDb 说起LevelDb也许您不清楚 但是如果作为IT工程师 不知道下面两位大神级别的工程师 那您的领导估计会Hold不住了 Jeff Dean和Sanjay Ghemawat 这两位是Google公司重
  • Windows 10安装错误:0x80300024无法安装到该盘且无法新建分区 & 格式化错误及解决方案

    本文由DUT斑鸠实验室出品 今日在给旧的笔记本加装固态并重装系统时出现的问题 图片来自百度贴吧 链接 百度贴吧无法安装Windows问题 解决方案 将需要安装的盘符启动级别在Bios中调整至第一位置
  • 2023华为od机试 Java【金字塔形收入】

    题目 什么是金字塔形的收入 人员的结构就像金字塔一样 当一个下级赚 100 元 他就得给上级交 15 元 我们现在已知每个级别的收入 求出最顶级的人的收入 示例1 输入 1 0 223 2 0 323 3 2 1203 输出 0 105 示
  • 建立二叉树和输出

    span style font size 18px include span
  • Springboot整合微信支付 --- 付款码支付

    场景介绍 开发指引 接入准备 下面是我们必须带入的几个值 需要自己去 微信支付官网 获取 所需依赖
  • 生成服从正态分布的随机数

    1 matlab中normrnd函数 功能 生成服从正态分布的随机数 语法 R normrnd MU SIGMA R normrnd MU SIGMA m R normrnd MU SIGMA m n 说 明 R normrnd MU SI
  • axios解决开发环境跨域问题

    跨域是因为协议域名端口其中一个的不同而产生的的报错 这是浏览器发出的 有些跨域这个时候是已经成功请求了 但是被浏览器拦截了 前端可以配置代理服务器来解决跨域 这个是因为服务器与服务器之间不存在跨域 配置的代理服务器又与本地的协议端口域名都一
  • VLC播放器插件的使用

    div class FlashPlayer style border 0px solid green div
  • golang gen根据数据库生成结构体和数据库操作代码

    package main import fmt gorm io driver mysql gorm io gen gorm io gorm strings testing 此处填入自己对应的ip地址 端口 数据库名称 const Mysql
  • 1.3 手写数字识别任务

    文章目录 横纵式 教学法 一 加载类库 二 数据处理 飞桨API的使用方法 三 模型设计 四 训练配置 五 训练过程 六 模型测试 横纵式 教学法 在本教程中 我们采用了专门为读者设计的创新性的 横纵式 教学法进行深度学习建模介绍 如 图4
  • collection和collections区别

    区别 Collection它是一个集合的接口 它提供了对集合对象进行基本操作的通用接口方法 Collection接口在java类库当中有很多具体的实现 Collection接口的意义就是为各种具体的集合提供最大化的统一操作方式 主要实现的C
  • 软能力那点事,你知多少

    目录 一 软能力是什么 二 软能力 程序猿生存指南 A 沟通能力 B 学习能力 C 时间管理 D 分解能力 E 总结改进 三 程序猿成长路线 1 架构师 2 项目经理 3 产品经理 四 小结 在我们日常工作中 常常会听到软能力这一个词汇 尤
  • “wget: 无法解析主机地址”的解决方法

    问题 root iZ2zefny2a19ms6azli2pwZ wget https download redis io releases redis 5 0 10 tar gz 2020 11 01 14 30 12 https down
  • Jmeter 集合点

    概念 对于性能测试可以理解为多用户并发 但是真正的并发是不存在的 为了更真实的实现并发的概念 我们可以在需要的地方设置集合点 所有虚拟用户都互相之间等一等 然后一起访问 Jmeter集合点是通过添加定时器 Synchronizing tim
  • 针对Failed to execute goal org.apache.maven.pluginsmaven-compiler-plugin3.1的解决方案

    背景 本项目使用JDK1 8 编译maven工程的时候出现如下错误 Failed to execute goal org apache maven plugins maven compiler plugin 3 1 pom中如下配置mave
  • 不同项目中,S7-300 DP 和 S7-1200 PROFINET 的profibus通信(300做主站,1200做从站)

    使用 S7 1200 与 S7 300 的集成 DP 接口进行主从通信 这里是将 S7 300 做为主站 将 S7 1200 做为从站 即 S7 300 集成的 DP 接口做主站 S7 1200 通过 CM1242 5 做从站 两个PLC在
  • Mysql-Galera Cluster

    使用Galera Cluster需要下载包含wsrep补丁的mysql版本 官网下载地址 http galeracluster com downloads 安装前要卸载之前安装的mariadb或者mysql 或者迁移也可以 不过就是另一套操
  • elementui的el-table的插槽功能,添加判断值,在单元格添加输入框,点击事件等等

    elementui的el table的插槽功能 添加判断值 在单元格添加输入框 点击事件等等
  • 三、 HBuilderX运行到手机上看效果

    以下均已录制 点击查看B站视频 1 运行 gt 运行到手机或模拟器 出现如下问题 未检测到手机或模拟器 请稍后重试 2 这时需要手机上做一些设置 设置 gt 关于手机 gt 连续多次点击版本号 就能打开开发者模式 设置 gt 系统和更新 g
  • 优化pxe网启动时tftp的传输速度 --- 针对pxelinux和bootmgr

    作为一名IT人士 一般的计算机维护当然不好意思找别人 于是自己用pxelinux搭了个网络启动环境 可以启动各种WinPE 以供折腾电脑系统 刷新固件的需要 只是一般的网络启动都是基于tftp协议的 传输文件那叫一个慢 启动时光是加载映像文