无忧启动论坛

标题: 更简单的VHD(x)系统 [打印本页]

作者: wavelu    时间: 2023-6-8 14:50
标题: 更简单的VHD(x)系统
本帖最后由 wavelu 于 2023-11-19 15:11 编辑

自Windows7起始,Windows提供了原生的VHD启动能力,VHD文件制作和使用很方便,但编辑BCD启动选项很复杂,尤其是小白同学,简直是一头雾水。
随着UEFI全面替代传统BIOS,且UEFI提供了应用级别的开发能力,使得我们能力在UEFI的级别上制作通用的系统引导管理器,最主要是更简化的设置或者不需要设置就能启动VHD(x)镜像文件。

AINUC云固件就是这样的一个开发成果,欢迎大家测试和验证。
AINUC®️云固件的安装 - 知乎 (zhihu.com)

更多内容可以搜索“AINUC云固件”,知乎、B站都有视频讲解。微信公众号:“云固件”
来自“无忧论坛”的网友希望加入交流群的,可以微信搜索“AINUC99”添加云固件小助手。

云固件主程序:r1.6.23942

云固件镜像文件:

Windows 10/11:
Windows 10 Pro
Windows 11 Pro

Ubuntu:
Ubuntu 22.04 LTS

有概率无法启动的国产系统:
深度操作系统



作者: wavelu    时间: 2023-6-8 14:55

作者: wavelu    时间: 2023-6-8 15:01
云固件主界面

作者: wavelu    时间: 2023-6-8 15:15
本帖最后由 wavelu 于 2023-6-8 15:29 编辑

B站视频直达链接
AINUC云固件
知乎专栏直达链接
AINUC®️云固件 - 知乎 (zhihu.com)

作者: dododo    时间: 2023-6-8 15:35
顶一下
作者: huyz    时间: 2023-6-8 15:36
谢谢分享。
作者: yyz2191958    时间: 2023-6-8 15:40
学习了一下
作者: yc2428    时间: 2023-6-8 15:48
谢谢分享。
作者: cuicongyuan    时间: 2023-6-8 16:06
主界面很漂亮
作者: 2013qwaszx    时间: 2023-6-8 16:46
本帖最后由 2013qwaszx 于 2023-6-8 16:51 编辑

楼主你好,通过阅读您给出的知乎链接中的文字介绍后,有如下疑问:

1. 关于“云固件”中的“云”,我在阅读了四篇文章后,仅在《AINUC®️云固件是什么?》一文中的“云固件的基本原理”小节中看到有关“云”,或者说联网启动的功能。然而,在后面却说目前还不支持网络下载,那么“网络下载镜像”功能预计什么时候能够实现呢?

2. 您在《白话云固件》一文的结语中提到:“云固件通过将镜像文件虚拟成物理硬盘的方式”,请问“镜像文件”的格式有无要求?本帖子主题为“更简单的VHD(x)系统”,那么对其他虚拟磁盘格式是否支持,例如VMware公司的vmdk格式,VirtaulBox的vdi格式,QEMU的qcow2格式,裸磁盘/分区RAW格式,抑或是云固件的专有镜像格式?

3. 我在多篇文章开头看到了“L1”、“L2”和“L3”级别等字样,这分别代表哪些用户?

4. 另外,如果在多台计算机之间相互移植操作系统,是否会出现因驱动、磁盘挂载配置等问题造成的无法启动现象,云固件又是如何解决相应问题?

5. 论坛中已有相关启动虚拟硬盘镜像文件的作品,例如NTBOOT可启动装有Windows操作系统的VHD(x)格式,Ventory可启动装有Windows和Linux的VHD(x)格式,甚至是装在vdi中的Linux(ventoy.net/cn/plugin_vtoyboot.html),那么“云固件”除了“联网”之外对于这类启动器有何优势?

最后,向楼主提出建议:

1. 在知乎专栏的四篇介绍文章中,重复内容太多,可以考虑适当精简背景介绍相关文字,毕竟对于有“云固件”需求的人大多都会对计算机历史、计算机启动过程有些了解。




作者: bfgxp    时间: 2023-6-8 16:59
云固件,名字起得好,但功能上要跟进才行,不能只解决启动上的问题。
就现有的功能上来说,好像g4u+ntboot4u就可以了。
bios的话,g4d+ntboot就可以了,这个我十年前就发过成熟的方案。
既然名字与云扯上关系了,就应该实现镜像的批量管理与p2p分发,就是功能上向现在的voi模式的桌面云靠近。
作者: wintoflash    时间: 2023-6-8 17:14
软件源码公开要求
楼主提供的软件核心部分 "bootx64.efi",显然是基于 rEFInd 进行修改的[1]。
rEFInd 的许可证是 GPLv3[2]。此许可证要求修改者以某种方式把修改版向公众发布时,必须向用户提供修改版的源代码。
[1]

[2]
https://sourceforge.net/p/refind/code/ci/master/tree/COPYING.txt

因此,我有权要求楼主公开此部分源代码,以符合 GPLv3 许可证的协议[3]。
[3]

https://www.gnu.org/licenses/gpl ... eSourcePostedPublic

请楼主遵守 GPLv3 许可证的相关协议。
如果楼主的软件没有使用/修改 rEFInd 的代码,请举出相关证据,如果属实,我将致歉。
作者: ldshun    时间: 2023-6-8 17:17
学习了一下
作者: wavelu    时间: 2023-6-8 17:22
bfgxp 发表于 2023-6-8 16:59
云固件,名字起得好,但功能上要跟进才行,不能只解决启动上的问题。
就现有的功能上来说,好像g4u+ntboot ...

还是咱们这里能收到回馈,先赞一个。

目前的r1.2.23418版本处于一个可用的系统状态,离最终的“云固件”定义还有差距,当前实现了镜像的启动、离线的导入导出功能。相当于千头万绪走出了第一步。

第二步就会引入网络下载的功能,网络本身的支持开发难度有,但不是难克服,难点是镜像与主机的匹配,也就是得攒够足够的镜像资源,这样用户才能下载到适合用户主机的镜像文件。

所以也是为啥先把第一步的成果提交出来了。
作者: caocaofff    时间: 2023-6-8 17:26
哈哈,关注一下
作者: wavelu    时间: 2023-6-8 17:37
2013qwaszx 发表于 2023-6-8 16:46
楼主你好,通过阅读您给出的知乎链接中的文字介绍后,有如下疑问:

1. 关于“云固件”中的“云”,我在 ...

1 网络下载的能力包含两块功能,一是网络本身支持功能,二是资源,没有可用的镜像文件资源,网络下载功能就是瘸子;但镜像资源需要积累,所以才先发出来了目前的版本。预计支持网络下载能力的版本r2.x系列在23年Q4左右发布;

2 由1带来的镜像资源文件问题,本质上是可以支持多种格式的,但比较流通的是vhd(x)格式,所以最后一定是统一到vhdx格式上,而且工具也比较多;

3 咱们这里的同学比较专业,所以能看懂vhd系统相关的术语,但知乎、B站以及微信视频号里面的同学差距太大的,所以才区分了L1到L3三个等级,L1相当于会使用计算机的小白同学,L2了解基本硬件、知道操作系统、能够自行安装软件和配置,L3相当于高手级别,能够自行安装Windows操作系统、了解Linux等其他系统;

4 云固件核心要解决的问题之一,所以镜像资源就需要做硬件差异化,所以会出现镜像文件从L0-L5的差分镜像来解决这个问题,文章后续会发出来。

5 云固件与其他启动器的差别,主要是镜像资源差别,部署方式区别,以及操作镜像(下载、差分、回滚、备份、加密等)能力;

建议:第一次从0起步做内容,面临了很多不同能力、不同背景的朋友、同学、同事等用户,要求也不同,所以文章没有考虑全面,先出来,再更改,包括视频介绍也是如此。


总而言之,是骡子是马总得拿出来溜溜,感谢大家的宝贵意见!!
作者: wavelu    时间: 2023-6-8 17:47
wintoflash 发表于 2023-6-8 17:14
软件源码公开要求
楼主提供的软件核心部分 "bootx64.efi",显然是基于 rEFInd 进行修改的[1]。
rEFInd 的 ...

哈哈,被你发现了,界面确实借用了refind部分,核心是自主开发的VirtualDiskDxe的函数库,更改的代码会在GitHub上公开。
作者: zhangz9    时间: 2023-6-8 18:37
多谢分享
作者: wintoflash    时间: 2023-6-8 19:15
wavelu 发表于 2023-6-8 17:47
哈哈,被你发现了,界面确实借用了refind部分,核心是自主开发的VirtualDiskDxe的函数库,更改的代码会在 ...

那希望楼主尽快兑现承诺。
另外,我有以下疑问:

如果核心部件开源的话,如何做到这一点?在 Windows 虚拟磁盘驱动上做限制吗?如何盈利?

微软是拒绝给 GPLv3 许可协议的 EFI 程序签名的。楼主打算如何解决?通过 shim 吗?
作者: GameMaster2012    时间: 2023-6-8 19:47
先去投个币
作者: 旁观者清    时间: 2023-6-8 19:47
走一步是一步。加油。
作者: 2012andyle113    时间: 2023-6-8 21:08
做个记号,看看再说
作者: xuziyi    时间: 2023-6-8 21:22
感谢分享!
作者: soinczt    时间: 2023-6-8 21:39
学习,谢谢楼主分享
作者: wavelu    时间: 2023-6-8 23:42
wintoflash 发表于 2023-6-8 19:15
那希望楼主尽快兑现承诺。
另外,我有以下疑问:

云固件使用的refind的界面代码,见这个代码库
https://github.com/ainuc99/Multiware

主要修改的是launch_efi.c 411行,增加VD文件启动调用;
main.c 497行,增加vd.config自定义配置入口;

这部分的代码已经在替换中了,您可以看MultiwarePkg.dsc中有个BootUI的Application,就是用来平替这部分GPL代码的。

作者: wavelu    时间: 2023-6-8 23:56
本帖最后由 wavelu 于 2023-6-9 00:05 编辑
wintoflash 发表于 2023-6-8 19:15
那希望楼主尽快兑现承诺。
另外,我有以下疑问:

后面两个问题,先大大的赞一下,早知如此,就应该早早来无忧论坛发帖了,少走弯路。

安全启动、签名证书、盈利,这些都需要回避GPL的代码,所以您在查看我编译后代码可以我使用EDK来作为工具和环境,没用更简单的GNU-EFI来开发,着实费了不少劲,refind代码本身在EDK 2021之后就无法编译通过,调整和删除了很多代码后才能编译通过,而且基础的Str库还有问题。最重要的是,我只是需要使用一个界面代码,图省事就觉得拿现成代码用一下,结果后悔莫及,花掉的时间远远超过用EDK函数库自己构建一个的时间。

而且,微软签名的代码不能包含GPL代码,真是肠子都悔青了。

后续的解决方案就是平替这些代码,技术上就是使用EDK的函数库,封装的也很不错了,而且云固件也不需要复杂功能,所以比较容易处理。

在这个基础上,做个简单的证书许可即可完成限制。对普通用户来说,不需要注册账户即可使用,三个入口也足以应付日常需要,而且也可以利用目前的helper启动辅助盘来变相支持超过3个镜像。商业化的模式更多面向专业用户,提供差分的快照、回滚、加密等等高级功能。毕竟只用爱发电是无法养活自己来支持项目的。
作者: seeimpact153    时间: 2023-6-9 02:19
谢谢分享
作者: 2010sya    时间: 2023-6-9 06:00
谢谢。。。
作者: dododo    时间: 2023-6-9 11:32
支持下
作者: 呵呵#1861    时间: 2023-6-9 15:32
学习一下
作者: ysource    时间: 2023-6-9 19:54
谢谢分享。
作者: mkinju    时间: 2023-6-13 07:16
感谢分享
作者: 呵呵#1861    时间: 2023-6-13 20:49
谢谢分享
作者: lshw    时间: 2023-6-19 17:05
vhd需要2倍存储空间。
作者: xuziyi    时间: 2023-6-19 18:41
感谢分享
作者: zncs520    时间: 2023-6-28 11:27
一眼refind的样子~~~
作者: smile_eer    时间: 2023-6-28 11:45
太先进了,不懂,不想用。
作者: wavelu    时间: 2023-6-29 19:55
zncs520 发表于 2023-6-28 11:27
一眼refind的样子~~~

是的,界面借鉴了refind,比grub的主题好看多了。
作者: zhangz9    时间: 2023-6-29 22:19
学习下
作者: bg6iam    时间: 2023-7-6 10:26
在WIN 10 LTSC2021 系统下安装 vhd 8.1 无法启动
1、笔记本电脑 采用的GPT分区仅有一个固态硬盘,分为C、D两个分区。

2、D:\vhd\vhd.vhd 安装的有 Win 8.1 企业版,用 dism++释放的

3、电脑设置已经关闭 安全启动

目前的问题:

win10 启动正常, win 8.1 无法启动,出现 0xc000000f  错误提示

主要硬盘信息和设置见截图。请教各位如何解决。。

多谢了

无法添加图片

作者: jlshnlhj    时间: 2023-7-6 15:38
bg6iam 发表于 2023-7-6 10:26
在WIN 10 LTSC2021 系统下安装 vhd 8.1 无法启动
1、笔记本电脑 采用的GPT分区仅有一个固态硬盘,分为C、D ...

检查bcd文件。
作者: bg6iam    时间: 2023-7-6 16:04
本帖最后由 bg6iam 于 2023-7-6 16:09 编辑
jlshnlhj  2023-7-6 15:38
bcd

已经在启动项 添加 VHD 启动项  (采用BOOTICE 添加 VHD 创建的)  
作者: bg6iam    时间: 2023-7-6 17:59
bg6iam 发表于 2023-7-6 16:04
已经在启动项 添加 VHD 启动项  (采用BOOTICE 添加 VHD 创建的)

找到问题了   是VHD文件所在的分区启用了bitlocker加密 ,取消bitlocker加密后启动正常

作者: musou_liky    时间: 2023-7-8 23:02
感谢分享~~
作者: ynos    时间: 2023-7-10 08:03
學習一下,謝謝樓主分享
作者: sky_bird    时间: 2023-7-19 22:42
大致看了一下,这个东东和前不久玩过的多操作系统引导工具refind挺相似啊。
作者: sky_bird    时间: 2023-7-20 21:10
sky_bird 发表于 2023-7-19 22:42
大致看了一下,这个东东和前不久玩过的多操作系统引导工具refind挺相似啊。

是的。你这个启动方式很新颖,维护多系统也挺方便的。希望能看到更加详细的教程。谢谢
作者: 5118    时间: 2023-7-28 08:27
谢谢你的分享
作者: 小貔貅    时间: 2023-8-4 15:46
感谢分享
作者: chairmansu    时间: 2023-8-8 15:41
很像rEFInd
謝謝分享

作者: 2011xf3087    时间: 2023-8-13 10:32
云?
作者: martin313    时间: 2023-9-5 19:19
学习了一下
作者: 无犹启动    时间: 2023-10-18 14:11
谢谢。。。
作者: zdlzj    时间: 2023-10-21 09:09

学习了一下
作者: a123456789z    时间: 2023-10-21 09:27
关注一下
作者: wavelu    时间: 2023-11-19 15:14
云固件主程序和常用镜像文件已经更新到主贴第一楼,需要的同学拿走不谢。使用文章参考知乎和公众号,搜索“云固件”即可。
作者: wawakuliao    时间: 2023-11-21 21:28
感谢分享
作者: zdlzj    时间: 2023-12-4 11:04
顶一下
作者: yongzhe    时间: 2023-12-5 11:28
感觉产品路子有点问题   应该集中虚拟盘驱动上 自主做才应该是对的  VOI INTEL也控了虚拟盘驱动不开源 等于是个废品 有问题等修复完全不可控  国人就喜欢搞功能多 应用场景多的方向去卷  建议只搞好一个场景的应用就行了  比如国产化的系统的快速运维  最简单就是GRUb+NBD 就实现了 写点脚本即可  直接支持快照 差异 分发 或者镜像加密  
作者: xuxuhe    时间: 2023-12-21 07:08
顶一下
作者: plutoshen    时间: 2024-2-8 06:58
感觉跟ventoy差不多,只不过是硬盘版的。
作者: 481416322    时间: 2024-2-8 07:48
我更喜欢用一个文件来启动,这就是grub2浏览器
作者: A31769    时间: 2024-2-10 09:37
谢谢分享
作者: Yu9i8b2c71t    时间: 2024-3-20 17:31
本帖最后由 Yu9i8b2c71t 于 2024-3-20 17:39 编辑

楼主你好,有个问题困扰着小弟,能否帮忙看看:

小弟的需求是,开机后,系统能同时挂载几个VHD。
(注:不是多系统的VHD,而是多个VHD“程序vhd、数据vhd”同时挂载)

请问,你这个固件,能实现吗?

问题的根源在下面:

//================================
小弟已经通过BCDEDIT命令,成功实现:启动到VHD里的系统了。
但是,小弟有另一个需求:
除了系统的VHD,开机还要挂载另一个VHD(程序盘、数据盘)。
就是说,开机后,要同时挂载两个VHD(一个是系统VHD,另一个是程序VHD)。
//================================
网上的的一些做法是:创建开机启动的“计划任务”、创建开机启动的“Windows服务”。
但是,这些方法,都不能满足小弟的需求。(因为计划任务、Windows服务,这些在开机的启动流程中,都太后了。)
小弟需要的解决方案是:开机后,能最早的挂载(程序盘、数据盘)的VHD,越早越好。
作者: Yu9i8b2c71t    时间: 2024-3-20 19:44
2013qwaszx 发表于 2023-6-8 16:46
楼主你好,通过阅读您给出的知乎链接中的文字介绍后,有如下疑问:

1. 关于“云固件”中的“云”,我在 ...

你这里谈到优势的问题。
====================
请问,NTBOOT、Ventory、云固件,这几个,有没有一个,能实现:
提前挂载多个VHD?

(注:不是多系统的VHD,而是,当进入系统后,多个VHD,包括“程序vhd、数据vhd”,都已经同时被挂载)

最好是在UEFI的层面,就已经提前挂载了多个VHD。
============================



问题的根源在下面:
网上的的一些做法是:在windows系统中,创建开机启动的“计划任务”、创建开机启动的“Windows服务”。
但是,这些方法,都不能满足小弟的需求。(因为计划任务、Windows服务,这些在开机的启动流程中,都太后了。)
小弟需要的解决方案是:开机后,能最早的挂载(程序盘、数据盘)的VHD,越早越好。







作者: Yu9i8b2c71t    时间: 2024-3-20 19:50
wavelu 发表于 2023-6-8 17:47
哈哈,被你发现了,界面确实借用了refind部分,核心是自主开发的VirtualDiskDxe的函数库,更改的代码会在 ...

楼主,有没有办法做到,在UEFI层,提前挂载多个VHD?
因为,我的这里有几个vhd,是需要同时挂载的:
系统.vhd、驱动.vhd、程序.vhd、数据.vhd
我希望这4个vhd,都在系统启动时,就提前被挂载好了。
因为,如果仅仅只挂载系统.vhd,进入系统后,驱动.vhd和程序.vhd如果还没被挂载,那么,一些驱动和程序,跑不起来。
作者: Yu9i8b2c71t    时间: 2024-3-20 20:48
wavelu 发表于 2023-6-8 14:55

楼主,有没有办法做到,在UEFI层,提前挂载多个VHD?
.
因为,我的这里有几个vhd,是需要同时挂载的:
系统.vhd、驱动.vhd、程序.vhd、数据.vhd

我希望这4个vhd,都在系统启动时,就提前被挂载好了。
.
因为,如果仅仅只挂载系统.vhd,进入系统后,驱动.vhd和程序.vhd,里面的一些驱动和程序,跑不起来(因为没有被挂载)。
而采用网上说的:创建“计划任务”和创建“Windows系统服务”,去挂载,也不行,因为,太后了,我需要提前挂载vhd。
.


作者: kkk2025    时间: 2024-3-25 08:57
ok
作者: c3133    时间: 2024-9-20 23:10
学习一下
作者: waylon    时间: 2024-10-25 00:59
看看如何
作者: fdongh    时间: 2024-10-25 08:39

感谢分享~
作者: liuyixin0302    时间: 2024-10-26 15:09
学习一下。
作者: Zhengqiang5q    时间: 2024-10-31 22:34
相信这个也不错。
作者: fruds9981    时间: 2024-10-31 22:45
赞赞
作者: wn168cn@163.com    时间: 2024-10-31 22:46
感谢分享
作者: iAmethyst    时间: 2024-11-13 18:57
学习了一下
作者: cnjosh    时间: 2024-11-14 22:48
是什么意思
作者: yuadao    时间: 2024-12-9 15:18
Yu9i8b2c71t 发表于 2024-3-20 19:50
楼主,有没有办法做到,在UEFI层,提前挂载多个VHD?
因为,我的这里有几个vhd,是需要同时挂载的:
系 ...

vhd(x)有自动挂载的命令,但是不能指定盘符,所以被我淘汰了
作者: xyxb    时间: 2024-12-17 20:29
怎么用
作者: latelord    时间: 2025-1-9 10:39
没有更详细的操作步骤吗?
作者: zifeng    时间: 2025-1-9 15:25

谢谢分享
作者: cc49781756    时间: 2025-1-11 03:25





欢迎光临 无忧启动论坛 (http://bbs.wuyou.net./) Powered by Discuz! X3.3