【云固件教程】201.镜像配置文件

【云固件教程】201.镜像配置文件

往期教程

前言

在24年1月~2月期间进行了云固件的基础教程讲解,教程有个大致顺序,但是没有完整的设计,基本上都是我觉得该往下讲的时候才发布一篇公众号文章,有条理但是顺序不是很清晰,跟着一起学习的群友没有遇到问题,文章也很多,对于后来者就非常不友好。因此,这次开始的课程进行了设计和编号,也会通过公众号的精选页面进行持续更新和替换,减少后来者查找的烦恼。
教程使用三位数进行编号,编号为1xx的教程为初级教程,2xx的教程为中级教程,3xx的教程为高级教程,难度会直线上升。中级以上课程普通用户无需掌握,交流群也不会有支持,请大家注意!

云固件的配置文件架构是特殊设计的,这个和云固件的商业目标是有关系的。云固件的理念是P2P,个人向个人提供资源。这个资源就是镜像文件系统。提供者需要处理好镜像相关的配置文件和镜像本身的适应性,而使用者只需复制镜像文件相关的文件夹,然后通过一个简单的引入配置修改就完成了镜像部署。基于这种设计思路,镜像都存在特殊性,因此制作和配置就需要制作者完成复杂的实现,这些复杂性可以保留在镜像文件夹内和镜像配置文件中,使用者不需要关注镜像是如何实现的,他只关注如何简单使用即可。

在这里插入图片描述

由此,配置文件分层形成了vd.config和menu.config两种类型配置文件,前者vd.config完成引入功能,后者menu.config完成镜像的特殊定义和具体参数。

一、配置文件指令

尽管配置文件分成了vd和menu两个种类,但本质是同一个类型。下图是配置文件指令和对应的描述。

在这里插入图片描述
配置文件使用“#”作为注释符号,每行开头的空格会被解析器忽略,所以空格可多可少,主要是为了阅读方便。
配置文件只有两个核心指令,分别是“include”和“menuentry”。

  • include
    该指令告诉解析器,需要读入另外一个配置文件,解析器会按照后面的指令值读取文件,如果文件不存在,那么指令执行结束。
  • menuentry
    menuentry代表一个具体的启动镜像,后面引号内为镜像的标题名称,只支持英文名称,不支持中文,后续会支持中文。大括号内包含了整个镜像的具体参数。

二、基本架构

云固件可以部署到普通U盘、移动存储、内置硬盘甚至BIOS芯片,这些存储位置通常对操作系统下的普通用户是不可见的的,如果让用户去这些ESP分区修改配置文件,用户很有可能是找不到的,所以云固件主程序查找镜像配置文件固定到ESP分区显然是不现实的方案。因此,镜像配置文件最好的存储位置是和镜像文件在一起。

这时,又出现了一个新的问题,镜像文件可能会分散在不同的分区甚至不同的存储设备上,那怎么解决?云固件主程序选择了扫描所有存储设备的方式。

云固件主程序启动时会扫描所有存储分区,找到所有vd.config文件。一旦发现这个存储分区存在vd.config文件,云固件就会标记这个分区为Virtual Disk Storage(简称VDs),然后进一步查找镜像文件。vd.config文件承担了统一入口功能,所以名称是固定不变的。这个就是为啥存储镜像文件的分区根目录下必须有vd.config文件的原因。
vd.config文件起到引入具体镜像配置文件的功能,所以配置文件内容通常只包含include指令。
vd.config文件最终会调用具体镜像文件夹下的配置文件,这些配置文件通常被命名为menu.config文件,事实上名称都是可以变的,如前面的架构图片里面的win10.config、deepin.config都是可以的,通常命名为menu.config只是为了方便使用者修改vd.config而已。

三、镜像参数说明

绝大多数镜像参数的值都是指向了具体的文件,这个值目前只支持相对于vd配置文件所在分区的绝对路径,不支持相对于menu配置文件的相对值。

  • icon
    本参数代表主界面上镜像显示的图标,支持bmp和png两种格式
  • background
    镜像在主界面上的背景图,由于效率问题暂未启用
  • helper
    辅助启动镜像,必须是VHD格式镜像,协助启动主镜像
  • vdisk
    主镜像,启动镜像时该参数必须存在
  • loader
    引导镜像时加载的EFI文件,包含路径,根据参数情况有多种使用方法
  • options
    EFI文件的附加参数
  • vdtype
    主镜像的镜像格式,支持iso、vhd和vhdx,默认raw格式,不建议使用该值
  • ostype
    主镜像内保存的操作系统名称,当前仅对Windows有实际作用,其他系统可不出现

四、配置文件案例

4.1 ISO镜像配置

在这里插入图片描述

这个是普通的ISO启动镜像配置,启动文件为位于“wepe22”文件夹下的“WePE64_V2.2.iso”。

4.2 多个ISO镜像配置

在这里插入图片描述

本例为两个ISO镜像,文件夹同为“wepe”,可以注意到两个文件名是有差异的。

4.3 Windows 10/11镜像配置

在这里插入图片描述

本例中没有配置图标,会显示系统默认的空白图标,vdtype标明是vhdx格式镜像,ostype为Windows,代表系统要做自动适配镜像名称和路径。

4.4 Windows的差分镜像配置

在这里插入图片描述

如上图,Code、Game和Work都是基于Windows10-22H2-Pro-L4-TF.vhdx差分获得的子镜像,分别对应了开发、游戏和工作三个环境。

在这里插入图片描述
配置参数如上图,得到三个镜像菜单(免费版可能会不显示)。注意三种写法的Windows都能被正确识别。

4.5 Linux镜像配置

在这里插入图片描述

本例中配置了两个Ubuntu镜像,差别在于镜像文件的格式差异,分别是VHD和VHDx。注意vdtype参数值的差别。

4.6 使用辅助启动的Linux镜像配置

在这里插入图片描述
本例中的主镜像为VMWare的vmdk格式,使用辅助启动镜像来桥接启动,因此vdtype参数其实是无效的。

4.7 本地Windows引导配置

在这里插入图片描述
本例子只使用了loader参数。

总结

云固件的配置文件架构设计非常简单、简洁,但是灵活性非常大,基本上囊括了常见的不同用途和不常见的特殊用途,同时又解决了不同用户的既简单又复杂两种矛盾的要求。推荐配置中建议vd和menu进行了区分,但实际使用可以按照特定需求在vd中直接加入menu配置,具体情况具体分析即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值