VOI协作
2023-08-23 20:29:40 0 举报
登录查看完整内容
VOI相关技术点
作者其他创作
大纲/内容
VHD镜像2
ESP分区
写BCD文件
客户机架构图
是
结论:选择方案2
是否存在子盘
24000001DisplayOrder
windows系统
结束
DHCP Server
下载镜像
获取并启动
efi
linux子系统存放方式
tftp请求efi文件
启动
PXE
调用
linux系统中应用程序职责:1、下载镜像,镜像大小20G+2、镜像写入磁盘3、引导镜像启动4、其他功能
修改BCD文件
其它文件
数据分区
BIOS层
应用程序
方案
方案1
方案2
难点
1、BIOS这层基本无难点;2、Linux这层难点为:2.1 找一款合适的Linux内核和文件系统,对其进行适当裁剪(该部分需和ARM同事讨论);2.2 适配一个平台后,再适配另一个平台时,Linux部分需再次验证,虽然方案一也需要验证,但适配性可能方案一更高些;注:2.1和2.2只是可能的风险点,后续我(苏垒8)会和ARM同事沟通讨论。3、linux系统如何引导windows系统启动
性能
1、下载速度是正常的20%,后期需采用多线程来优化性能
1、虽然下载速度和方案一是一样的,但Linux系统(包括内核)总共不到300M,下载时间为20秒左右,方案一若是60G镜像,需1个多小时。2、linux系统内的应用下载镜像,理论上可以跑满带宽3、相比与uefi方案,此方案需要中间启动linux系统,多一个流程会在时间性能上有一定损耗
可维护性
1、只要需求有一点点的变化,如:镜像文件需显示编译时间,那么配置文件(VBS.res)就需要修改,生成配置文件的开发同事需要介入修改(应用开发同事),解析配置文件的同事也需要修改(BIOS开发同事);2、若配置文件修改了,那么BIOS需要升级,应用程序也要升级,而且需要同步都升级,如果只升级了一方,另一方没有升级,这种兼容性问题怎么处理;
1、如果是产品迭代,新增需求功能(只要不涉及修改硬件),BIOS和Linux系统都不用修改,只需要修改上层应用。
可扩展性
1、新增功能BIOS层需对应修改
1、在同一平台上,对应用功能的扩展,只需要APP层修改,扩展性强;2、在不同平台上,需测试验证是否支持;
界面风格
1、界面比较简洁2、仅支持键盘操作,不支持鼠标操作
1、界面功能丰富,美观2、支持鼠标+键盘操作
应用开发难度
1、纯BIOS层开发
1、应用可在linux系统内开发,开发调试环境搭建容易2、可使用c++、python等高级语言进行界面、后台应用开发,ui等基础库基本都有
磁盘分区逻辑
磁盘(GPT格式)
启动系统
操作系统分区C:\\Windows\\System32\\Boot\\winload.efi
0 #启动linux子系统
读BCD文件
VHD镜像1
镜像
BCD
TFTP Server
linux子系统
tips:客户机(超级管理员):制作镜像并上传镜像客户机:下载镜像,并从镜像启动服务器:存储镜像,并允许客户机下载
本地系统分区
Description
efi职责:1、下载镜像,镜像大小20G+2、镜像写入磁盘3、引导镜像启动4、其他功能
VOI优点:1、方便管理,镜像集中管理,统一下发2、断网可用,镜像下发后保持本地,不依赖网络,断网可以继续使用3、性能和流畅性好,基本等同于本地系统4、外设兼容性好,基本等同于本地系统5、后台故障影响小,后端故障不影响终端使用VOI缺点:
23000003DefaultObject
开机
返回IP地址+efi文件名
要启动的操作系统的信息写入tmpOS.data
服务器
客户机
传输镜像
BOOT
12000004Description
EFI
windows系统启动流程
镜像上传下载
客户机本地运行操作系统
执行efi程序
修改tmpOS.data文件
ipxe
维度
其它文件夹
请求IP
下载linux子系统
{9ec11575-326d-4425-a413-efdb679c0288}
否
进入操作系统选择界面
镜像分区
EFI分区文件结构
efi分区\\efi\\boot\\bootx64.efi
VOI服务器
Objects
提供镜像选择界面
开机启动
bootx64.efi
element:value
下载vmlinuz+initrd.img并保存本地
系统启动时还原的流程
响应启动文件
tmpOS.data
启动完成
方案2:
文件内容及格式startOS:0 # 启动linux子系统startOS:1 # 启动windows系统
PXE Client
是否需要系统还原
下载VHD镜像
从父盘创建子盘
ipxe.efi
响应镜像
ipxe网络启动流程
应用程序执行的核心流程
客户端软件
本地是否有linux子系统
Elements
bootmgfw.efi
efi分区\\efi\\microsoft\\bootmgfw.efi
linux系统分区
OS
部分步骤说明:1、绿色部分是需要开发的程序,包含1个EFI程序,1个linux应用程序2、执行清空 tmpOS.data是为了保证系统下次重启时能正常进入到操作系统选择界面3、当前引导VHD镜像文件启动,通过改写BCD文件实现,BCD文件中记录VHD镜像文件所在分区信息,以及VHD镜像文件名,bootmgfw.efi通过这些信息可以引导VHD中的系统启动4、BCD文件内容见右侧5、应用程序上选择完系统之后,如果未下载需要先进行系统下载,如果系统已下载,则直接修改BCD文件后重启系统
客户机(超级管理员)
12000002ApplicationPath
等待用户
linux子系统分区
Micorsoft
上电
读取文件
VHD分区
Agent
本地是否有该镜像
请求启动文件
方案1:
系统启动
选择要启动的系统
应用程序职责
22000002SystemRoot
磁盘未分区情况下
应用程序启动
下载ipxe.efi替换原来的bootx64.efi
下载ipxe.efi,替换原来的bootx64.efi
efi分区
删除子盘
Linux系统+应用程序
25000004Timeout
efi程序
从子盘启动系统
BCD 文件树形结构
reboot
BOOTMod
11000001ApplicationDevice
21000001OSDevice
硬件设备
创建子盘
启动的操作系统类型
HTTP Server
读取并清空tmpOS.data
PXE 启动流程
ipxe Server
1 #启动windows系统
默认启动项
{9dea862c-5cdd-4e70-acc1-f32b344d4795}BOOTMGR
下载指定系统镜像
root
本地启动流程
引导镜像启动
获取linux子系统
执行启动文件,下载镜像
响应efi文件
选择系统界面
网卡pxe启动
tips:1、系统永远都是从子盘启动,即使不做还原也是从自盘启动2、子盘是差分VHD的概念,创建VHD时,指定父盘即可,命令: create vdisk file=c:\\chlid.vhd parent=c:\\parent.vhd3、子盘刚创建出来几乎不占用大小(108KB),有数据写入时会变大,极限大小和父盘大小一致,因此需要留出足够的空间来给子盘写数据,要求预留的空间至少与父盘容量一致4、这个过程在uefi层实现
\\efi\\microsoft\\BCD文件
windows
说明:1、判断本地是否有linux子系统,通过在文件系统中查找vmlinuz和inited.img文件实现2、ipxe.efi下载的linux子系统仅保存在内存中,不进行落盘,linux子系统的落盘由应用程序实现【可能存在浪费带宽的情形,主要原因为efi中实现落盘比较复杂】
上传镜像
bootx64bak.efi
VOI整体架构图
0 条评论
回复 删除
下一页