基于虚拟磁盘VHD的多系统部署方式

基于虚拟磁盘VHD(VHDx)的多系统部署方式

概述

如标题所述,本方法是使用虚拟硬盘模拟硬件环境,将操作系统安装到虚拟硬盘的装机方式。

提示

配置系统的操作存在一定风险,请谨慎操作
请确保自己拥有一定的计算机知识及操作经验,清楚知晓诸如BIOS EFI 硬盘分区 命令行等基本概念,这是确保操作成功的必要条件。
建议完整看完本教程后再尝试实际操作,特别是对于系统安装不够熟悉的读者。

优势

  • 操作系统实际上封装在VHD文件中,不会占用实际分区;
  • 硬盘不会被物理划分为不同部分,对于现在普遍使用的固态硬盘而言,主控可以更均衡地分配写入位置,有助于保持硬盘整体的健康度,变相延长使用寿命;
  • 操作系统不再独立占用整个分区,分区及文件管理更加容易;
  • 操作系统封装在一个文件中,易于迁移变更;
  • 利用VHD的差分特性,可以对单一系统母本延申出多个分支系统,且互不干扰。也可用作系统备份还原点,由于是完整系统全部文件的备份,几乎可以抵抗除硬件损坏及VHD文件本身损坏外的一切攻击或意外故障。

缺点

  • 多套了一层虚拟环境,有一定性能损耗,但几乎不可见;
  • 非完整物理环境,多一个流程,系统稳定性有所降低,但几乎没遇到由此引发的故障;
  • 非常规系统配置状态,部分优化软件可能会由于使用固定配置而导致系统故障;
  • 非常规系统配置,部分教程需要适应性修改,增加了解决故障的难度;
  • 系统盘会显示弹出按钮(点击不会真的弹出);
  • 不支持系统休眠;
  • 不支持BitLocker

同一硬盘及其上VHD内Windows10硬盘性能测试:

项目 读取 写入
直读 VHD 对比 对比% 直写 VHD 对比 对比%
SEQ(连续读写) 1172.2 1183.17
+10.97
+0.94%
1204.1 1044.05
-160.05
-13.29%
512K(随机512K并发队列) 802.2 1404.98
+602.78
+75.14%
878.9 717.15
-161.75
-18.40%
4K(随机4K并发队列) 48.0 40.52
-7.48
-15.58%
123.3 79.82
-43.48
-35.26%
4KQD32(随机4K并发32队列) 361.3 350.50
-10.80
-2.99%
268.3 319.88
+151.58
+56.49%

单位:MB/s;
测试完物理盘后保持正常使用状态(写稿)30分钟后再测试VHD,以排除缓存带来的影响;
使用的是同一个同版本测试软件,结果精度不一样,着实古怪;
体验上分明没什么感觉,但这测试数据……我怀疑我抄错表了;
循环三次测试后发现【512K(随机512K并发队列)】物理盘读取速度波动较明显,最后一次测试:

项目 读取
直读 VHD 对比 对比%
512K(随机512K并发队列) 1409.97 1509.4
+99.43
+7.05%

计算方法为:

  • 对比:VHD-物理盘;
  • 对比%:(VHD-物理盘)/物理盘。

操作

操作分为多个阶段,相互间呈继承关系,阶段间可中断,不执行后续阶段不会对系统造成严重影响。

准备阶段

损害预防及前提条件

本阶段应确保完成安装准备及处理为止故障的准备,不涉及实际系统安装。

确认系统配置

请确认系统(主板)的BIOS快捷键、启动项选取快捷键,通常能搜索得到。

请确认系统支持UEFI模式启动,可通过以下方式查看系统支持状态。

  • 若不是古老的电脑,则几乎都支持UEFI,但不保证支持,为谨慎考虑,请二次确认。
  • 在 【运行】 程序中输入 【msinfo32】 ,查看 【系统摘要】 的 【BIOS模式】 值,若为【UEFI】则系统正以UEFI模式运行,否则应尝试进入BIOS查看启动模式是否包含UEFI。注意:请勿修改配置
  • 使用硬盘管理工具查询硬盘分区表模式,若为 【GPT】 格式,则以UEFI模式运行。注意:若硬盘被修改过,此状态不可作为参考,其可能是不匹配的运行模式。
配置备用修复环境

配置一套简易修复系统,用以支持后面的配置及预防事故。
可以使用自己熟悉的系统,没有刚性要求。
此处建议使用 vtoy作为启动配置,WePE作为配置(修复)环境。

安装 vtoy
  1. 请准备一个U盘,2G及以上容量;
  2. 请前往vtoy官网下载适用版本安装:
    https://www.ventoy.net/cn/download.html
  3. 按照官网指示安装 vtoy :
    https://www.ventoy.net/cn/doc_start.html
    请确保安装位置为目标U盘;

注:若不想破坏U盘原本的文件,可采取 【无损安装】功能。
其位于 【配置选项】选项卡下的【无损安装】。
若提示条件不符,可调整U盘后再尝试,参考:
vtoy无损安装调整,参考资料位于:
https://www.ventoy.net/cn/doc_non_destructive.html
注:教程所用软件可在下一步 配置 WePE 中获取。

配置 WePE
  1. 下载 WePE:
    https://www.wepe.com.cn/download.html
  2. 启动安装程序,但不安装
  3. 生成 ISO 镜像:
    1. 于安装界面右下角找到【其它安装方式>】的【生成可启动ISO】;
    2. 选取一可用位置,保存ISO文件。
  4. 将ISO文件复制到 vtoy U盘。

注:也可不复制到U盘,放在硬盘内自己能找到的位置即可(介于后续可能会清除旧系统,清空系统盘,故不建议放在系统盘)。
从U盘以外部分启动的方法请参考:
https://www.ventoy.net/cn/doc_browser.html

若要从WePE的ISO文件中提取软件,请将其挂载,然后找到WEPE/WEPE64.WIM,使用兼容wim格式的解压软件打开,Program Files内即是内置软件。
此教程会用到的包括:

  • WinNTSetup
  • DiskGenius
  • Others/BOOTICE

配置系统VHD文件

本阶段配置新系统的虚拟硬盘文件,不涉及实际系统安装。

Windows

微软官方文档为纯命令操作,本教程为图形界面操作,可自行选取配置方式。
微软官方文档链接为:https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/boot-to-vhd--native-boot--add-a-virtual-hard-disk-to-the-boot-menu

1. 下载Windows系统镜像
  1. 访问Windows下载地址
    Windows10 https://www.microsoft.com/zh-cn/software-download/windows10
    Windows11 https://www.microsoft.com/zh-cn/software-download/windows11
  2. 下载任意版本ISO文件,然后跳过后续下载阶段,若无,请下载【安装媒体】;
  3. 启动下载的程序,随使用引导行进
    1. 想执行的操作为:【为另一台电脑创建安装介质(U盘、DVD或ISO文件)】;
    2. 选择希望的配置;
    3. 选择ISO文件;
    4. 选择文件保存位置(建议放在C盘以外的位置,无需放置在U盘内);
    5. 等待完成后关闭程序,不需要写入DVD。
2. 将镜像部署到VHDx文件中

此部分也可在WePE中操作,若在WePE中操作,可现备份EFI分区内的所有文件。
注:仅备份文件不能确保还原系统引导。

提示:若要使用Windows10以前的版本,请使用VHD文件格式,而非VHDx格式。
注:Windows10以前的版本未测试过可用性,此提示仅是根据微软官方文档推导得出的建议。

  1. 创建VHDx文件
    1. Win+X键,然后按K,打开【磁盘管理】;
    2. 点击【操作】,【创建VHD】;
      初始化图片
    3. 选择一个保存位置(建议非C盘);
    4. 选择确定的硬盘大小(不建议过大,后续可以很容易的扩充容量,建议48GB);
    5. 格式选择VHDx
    6. 选择动态拓展(主要是便于迁移,但会带来更多的不稳定性)。
  2. 配置VHDx
    1. 在【磁盘管理】中找到上一步创建的虚拟磁盘,右键,【初始化磁盘】;

    2. 选择GPT格式;

    3. 关闭【磁盘管理】,打开DiskGenius
      硬盘操作有风险,请谨慎操作

    4. 找到目标虚拟磁盘,删除旧有的MSR分区,并保存更改;
      分区图片
      稍微留意硬盘名称,查找分区的时候会需要区分;
      若插入U盘,其名称将显示在驱动器列表内,选取启动驱动器时会需要区分;

    5. 建立新分区

      1. 确认ESPMSR配置

        • 勾选ESP(实际上不生效,但带上更标准,且可顶替引导盘位置,防止系统引导出错);
        • 勾选MSR(实际上不生效,但带上更标准);

      数值上使用默认配置即可
      2. 点击确认;
      3. 确认主分区配置
      使用默认配置即可;
      4. 点击确认;
      5. 保存更改。

    6. 等待配置完毕,关闭DiskGenius
      可在DiskGenius内修改各分区的卷标,以便区分分区,方法为选中分区,右键,【设置卷标】。

  3. 安装Windows安装映像到VHDx
    1. 启动WinNTSetup

    2. 确认配置

      • 选择对应的Windows版本安装界面;
        安装图片
      • 选择Windows镜像位置;
      • 选择引导驱动器位置,请选择创建的虚拟硬盘的ESP分区也可选择其它非使用中的ESP分区,切勿选错否则可能导致原有系统不能正常启动;
      • 选择安装驱动器位置,请选择创建的虚拟硬盘的主分区(容量最大的NTFS格式分区);
      • 选择系统版本(可选)
        • 请选择于原系统相同的版本,安装后将自动激活(主板有OEM许可证的情况下,品牌机都有),若没有,则随便选择,启动后可以在【设置】【激活】中安装对应版本;
        • 要查询系统版本,请打开【设置】【系统】【关于】【Windows 规格】查看。
      • 确认后通过警告,再次确认安装信息;
      • 确认无误后,点击【确认】。
      • 等待部署完成,点击【确认】,并关闭WinNTSetup
Linux

对于Linux系统,我所知成功率最高,操作门槛最低的方案是vtoyboot
vtoy官网教程已足够完备,参见:
https://www.ventoy.net/cn/plugin_vtoyboot.html
此处仅做部分补充:

  • vtoyboot 除官方提示内容外,现阶段(2024年10月前)不支持差分虚拟磁盘,虚拟磁盘安装方式仅有易迁移不独立占用分区的优势;
  • vtoyboot 启动的磁盘模式较为特殊,请勿在系统内调整分区,会导致VHD磁盘结构异常,不能正常挂载,但仍可正常启动;
  • 由于不宜直接调整分区,建议创建VHD时就设定为需要的大小,比起Windows,后期扩容相对困难;

安装阶段

提示:此阶段开始对系统配置进行修改,可能导致原有系统不能正常启动,请谨慎操作
提示:建议备份已安装系统的虚拟硬盘文件,以免遭遇问题导致需要从头来过。

配置VHDx系统引导

对于Windows,ESP分区受到Windows系统保护,此操作需要在PE环境下操作。

补充:若安装失败(问题表现与本分块后续描述的问题一致),可尝试关闭【安全启动】后再次安装,仅限于首次正式进入系统。确认能够正常重启后可重新打开【安全启动】,但建议系统大版本更新时关闭安全启动或保留增量备份(Windows11更新到24H2版本没有发现问题,可能仅初次安装存在此问题)。

补充:部分机型可能不能成功以VHDx方式安装Windows

  • 在 2024年11月2日购买的一台机器(展示机,还包含额外的暗伤)上,出现了不能正常安装系统的问题,表现为:
    • OOBE阶段结束后,初次进入系统,不会有任何错误提示,但关机后再次启动将进入自动修复模式,且不能成功修复;
    • 在其它电脑上完成安装后的Windows VHDx文件可以正常开关机;
    • 推测为进入系统后的初次关机未能应用某个配置,导致下次开机进入修复模式;
    • 若要在此机器上使用VHDx装载Windows,请:
      1. 先在其它机器上安装Windows,并测试其是否能正常开关机;
      2. 将安装了Windows的VHDx文件复制到此机器上;
      3. 配置引导;
      4. 测试是否可以正常开关机;
      5. 移除旧有驱动程序
        • Windows10/Windows11并未自带兼容的WIFI驱动程序,请自行下载安装。
      6. 安装驱动程序。
    • 请注意:虽然可以成功启动(关闭)已正常安装的系统,但后续运行是否正常是不明的。

对于Linux,虚拟系统不能修改外部引导环境(严格来说也可以,但不应当将ESP共享给虚拟环境)。

  1. 进入PE系统环境
    1. 关机;
    2. 点按开机,长按确认系统配置部分查询到的启动项选取快捷键
    3. 选择安装的U盘,其名称可能为一串英文字母数字的组合,通常位于最底部
      • 若未出现vtoy字样的界面,可能是选择错误,重新尝试启动即可;
    4. 进入vtoy选取启动文件界面,选择你的WePE的ISO文件;
      • 若U盘内没有别的镜像文件,将只有目标文件,直接回车启动即可。
    5. 一路回车,正常启动,进入PE系统。
  2. 挂载分区
    1. 启动DiskGenius
    2. 挂载物理硬盘ESP分区
      • 建议挂载存放VHDx文件硬盘的ESP分区,也可是其它驱动器的分区,但不能是VHDx虚拟硬盘。
以下为Windows VHDx 配置方式:
  1. 添加BCD启动项
    建议备份全部文件,或仅备份EFI\Microsoft\Boot\BCD

    1. 启动BOOTICE
    2. 【BCD编辑】>【其它BCD文件】选择ESP分区内的EFI\Microsoft\Boot\BCD(若是已成功安装的系统,也可直接新建BCD文件,然后替换文件,此方法可直接复制EFI\Microsoft目录,并重命名该目录使用);
      • EFI\Microsoft\Boot\bootmgfw.efi不存在,可复制虚拟磁盘内的ESP分区内的EFI\Microsoft文件夹到所在物理磁盘的ESP分区的EFI文件夹下。
    3. 点击【智能编辑模式】;
    4. 编辑启动配置
      BCD编辑
      1. 点击【添加】>【新建 VHD 启动项】;
      2. 【启动磁盘】选择VHDx文件所在硬盘;
      3. 【启动分区】选择VHDx文件所在分区;
      4. 【设备文件】填写VHDx文件位置
        • \开头,不包含盘符;
        • 建议文件路径不包含空格,请使用_替代空格;
        • 可在DiskGenius中查看位置,也可直接挂载分区,然后获取位置。
      5. 修改【菜单标题】为自己希望的名字(可选);
      6. 修改【超时时间】为希望的值,默认为30
    5. 点击【保存全局设置】;
    6. 点击【保存当前系统设置】;
    7. 点击【关闭】;
  2. 检查EFI启动项

    1. BOOTICE内,【UEFI】>【修改启动序列】;
    2. 检查第一项(Windows Boot Manager)的属性
      • 【启动磁盘】应为BCD文件填写的磁盘;
      • 【启动分区】应为ESP分区,和BCD文件不一致
      • 【启动文件】应为\EFI\Microsoft\Boot\bootmgfw.efi
    3. 若不一致,应点击【添加】,并选择ESP分区内的\EFI\Microsoft\Boot\bootmgfw.efi文件,若有,则跳过本步骤
      • 该步骤需要现选择一个同硬盘下的启动项后才能成功添加,且只有成功添加才会报错。
    4. 若添加了启动项,可将其【上移】至第一位,使其成为默认启动项
      • 标准路径的Windows Boot Manager在启动时会自动修改名称,并将自己添加到默认启动项(第一位),修改其名称没有实际意义,仅能生效一次。

    建议拍照记录各启动项配置,以防意外。

以下为Linux VHD 配置方式:

不同于Windows,Linux并没有原生支持VHD启动的引导器,本方案采用rEFInd,主要原因是其配置文件和efi文件位于相同目录,适合配置多EFI启动项启动。


须准备的文件:

  • vtoyvdiskchain https://github.com/ventoy/vdiskchain/releases

    • 下载解压
      • 需要文件vdiskchain
  • rEFInd https://sourceforge.net/projects/refind/;

    1. 下载解压,找到refind文件夹

    2. 获取对应平台版本文件

      • 文件refind.conf-sample
      • 文件refind*.efi
      • 文件夹drivers*及其子文件;
      • 文件夹icons(可以不需要其子文件,仅需文件夹);
    3. 编辑refind.conf-sample,并重命名为refind.conf

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
                  
      textonly 1

      timeout -1

      default_selection Ubuntu-vhd

      dont_scan_files /EFI/Microsoft/Boot/bootmgfw.efi

      dont_scan_dirs /EFI/BOOT,/EFI/Microsoft

      menuentry "Ubuntu-vhd" {
      loader /EFI/vtoy_boot/vdiskchain
      options "vdisk=/OS_VHDX/ubuntu.vhd.vtoy"
      }

      以上代码中Ubuntu-vhd为启动项名称,你通常不会看到它,但两个名称需要一致,不然不能自动启动;
      以上代码中/EFI/vtoy_boot/vdiskchainvdiskchain文件在ESP分区的位置;
      以上代码中/OS_VHDX/ubuntu.vhd.vtoy为Linux VHD文件的位置,不包含盘符。

      此处配置与vtoy官方文档不一致,官方配置的参数不能传递给vdiskchain,需要单独使用options传递参数;
      更多参数可参考https://github.com/nixevol/rEFInd-zh_cn/
      注意:rEFInd的文件结构不能改变,两个文件夹不能重命名,其母文件夹可以重命名。

  1. 配置引导器
    1. 复制rEFInd引导器到ESP分区下的EFI文件夹
      • 建议一个系统一个独立的引导器文件夹;
      • 建议文件夹名称不包含空格。
    2. 复制vdiskchainESP分区下的EFI文件夹
      • 可以将其放在单独文件夹内,便于管理,如vtoy_boot文件夹。
    3. 请确认vdiskchain、Linux VHD文件路径和refind.conf内的描述一致。
  2. 添加EFI启动项
    • 配置方法于Windows一致,仅启动文件不一样;
    • 启动文件为refind*.efi
    • rEFInd不会自行调整启动项,可将启动项名称修改为自己希望的内容,以便使用。

启动测试

  1. 关闭PE系统,正常开机(或者直接重启);
  2. 查看系统是否正常启动。

系统安装 (仅限Windows)

系统安装随使用引导即可,仅提出几条建议:

  • 不建议直接登录微软账户,直接登录用户目录将使用邮箱名的一部分,可能不利于后续使用;
  • 若希望跳过登录,可采取以下方式:
    • 使用[email protected]地址登录,报错后即可本地登录;
    • Shift+F10Fn+Shift+F10调出命令行,输入OOBE\BYPASSNRO后回车,重启后可跳过联网,继而跳过登录;
  • 建议使用纯英文用户名,避免中文、空格、特殊字符,以免部分程序不兼容。

优化阶段

提示:此阶段对系统配置进行修改,可能导致系统不能正常启动,请谨慎操作

由于Linux方案不支持动态扩展,差分磁盘等功能,无本文可涉及的优化空间,故此阶段仅限Windows

问题处理

系统安装后,运行可能存在一些问题,此部分包含两个常见问题。

Windows Boot Manager自动修改启动序列

Windows Boot Manager会自动修改启动序列,使用多系统时将产生问题,解决方案参见:
解决Windows Boot Manager自动设为默认启动项的问题

启动蓝屏,提示磁盘空间不足

Windows默认启动时自动拓展到VHDx文件标定的大小,若磁盘没有足够的空间,将会蓝屏报错。
解决方法为:
修改注册表:

1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\FsDepends\Parameters] "VirtualDiskExpandOnMount"=dword:00000004

参见:https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/gg318055%28v=ws.10%29#step12-prevent-the-vhd-from-expanding-to-its-full-size
虽然是Windows7的文档,但依然适用,没找到Windows10的相关文档。

配置优化

此项均为可选,不弄也没什么问题。

删除原有的Windows系统

提示:在操作前,请备份一切可能仍有价值的文件。

  1. 进入PE系统;
  2. 使用DiskGenius删除原本的Windows系统所在分区
    1. 选中该分区
      • 通常会显示Windows图标;
      • 建议查看分区内的文件,确认没有选错分区。
    2. 点击【删除分区】;
    3. 点击【保存更改】;
    4. 选中已被删除的分区;
    5. 右键单击;
    6. 指向【将空闲空间分配给】;
    7. 选择希望扩容的分区
      • 建议选择前(或后)一个分区,这样数据迁移量会少一些;
      • 如果希望删除多个额外的分区,可以现将它们都删除,相邻的空闲空间会自动合并为一个整体,然后分配空闲空间。
    8. 点击【保存更改】;
    9. 等待执行完毕后,关闭DiskGenius
      可以先给ESP分区分配启动器号,下一步需要使用。
  3. 修复引导程序
    • 仅需修改BCD,修改方法与安装阶段一致,不再赘述。
调整Windows分区大小
  1. 进入PE系统;
  2. 使用BOOTICE调整VHDx容量
    1. 【磁盘镜像】>【VHD文件信息(I)】;
    2. 选择VHDx文件;
    3. 点击【重设容量】;
    4. 填写目标容量;
    5. 点击【设定】;
    6. 等待完成,关闭BOOTICE
  3. 使用DiskGenius调整分区大小。
    然后就结束了,其过程也可使用Windows自带的磁盘管理和虚拟机服务完成,只要复制一份VHDx文件,配置成双系统,就可以对另一个VHDx文件进行修改。
将磁盘挂载到受保护的Windows目录

我曾中过一次勒索病毒,绝大多数文件都废了,但Windows目录下的文件全部建在,WindowsApps目录下的软件也全部幸免,其它部分或多或少都出了问题,所以,Windows对其系统目录的保护可以利用来保护我们的文件免受篡改。

优势

  • 文件安全,且不易被误操作破环重要文件。

劣势

  • 文件结构变复杂,连带页面文件也需要额外配置。

操作如下:

  1. 创建挂载点文件夹
    • Windows目录下创建一个空文件夹,此处为DiskBased
  2. 打开【磁盘管理】
    1. 找到自己的物理磁盘分区;
    2. 右键 > 更改驱动器号和路径;
    3. 点击【添加】;
    4. 选择【装入空白NTFS文件夹中(M):】;
    5. 选择创建的文件夹;
    6. 【确定】;
    7. 删除额外的驱动器号(和路径)。
  3. 打开注册表编辑器
    1. 访问
      1
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
    2. 修改ExistingPageFiles属性为
      1
      2
      \??\C:\Windows\DiskBased\SystemPageFiles\pagefile.sys


      注:第二行是必须的,且留空,仅有回车符。
    3. 修改PagingFiles属性为
      1
      2
      C:\Windows\DiskBased\SystemPageFiles\pagefile.sys


      以上代码中C:\Windows\DiskBased为文件目录(必须);
      以上代码中SystemPageFiles为页面文件文件夹(非必须);
      以上代码中pagefile.sys为页面文件(必须)。
  4. 重启,调整完毕。
创建差分文件

创建VHDx差分文件可用于两个方向:

  • 完整备份,便于系统损坏后回滚(或是迅速将系统重置回一个干净的状态);
  • 创建多系统分支,共用一个母本,节约磁盘空间
    • 建议很少接收系统更新的方案使用,否则将保存多份系统更新,可能还不如直接复制一份单独使用节约磁盘空间。

操作如下:

  1. 进入PE系统
  2. 使用BOOTICE创建差分VHDx
    1. 【磁盘镜像】>【差分VHD(M)】;
    2. 选择父文件;
    3. 选择子文件希望保存的位置;
    4. 点击【创建】;
  3. 添加系统引导
    • 与前文添加方法一致,文件选择子文件。
  • 若需要将改动写入父文件

    1. 打开BOOTICE
    2. 【磁盘镜像】>【差分VHD(M)】;
    3. 在【合并差分VHD/VHDX文件】>【子文件位置:】选取文件;
    4. 选择合并深度(可选);
    5. 点击【合并】;
    6. 等待合并完成
      • 此过程没有进度条;
      • 合并可能需要一定时间,请耐心等待,切勿中途强行关闭程序,这会造成严重的数据损坏
  • 注意:差分文件结构必须完整,父文件不能被更改,否则所有子文件都会作废

  • 若差分链损坏,可使用BOOTICE【磁盘镜像】>【VHD文件信息(I)】重设父文件修复

    • 仅适用于文件本身未受到更改的情况
      • 文件被剪切或复制到其它位置;
      • 文件被重命名;
      • 文件所在分区被挂载到其它位置。
  • 若是用于增量备份,建议在创建子文件前,将母文件重命名,子文件使用母文件原有名称,则无需添加系统引导;

  • 调整过引导器解决Windows Boot Manager自动设为默认启动项的问题的,可以将Microsoft文件夹复制,重命名,然后添加指向文件夹下Boot\bootmgfw.efi的EFI启动项,启动项名称可自定义;

  • 可创建一个相对干净的系统差分,用于“表面”,将其设为默认启动项,用于隐藏实际常用系统,以免类似于“亲戚家的孩子”的“入侵者”对系统发动“毁灭性打击”,遭受打击后仅需将该差分文件删除并重新创建即可恢复旧有状态(有时候我会使用这样的方式测试一些可疑的软件),自己使用时仅需按住选择启动项的快捷键即可启动常用系统。

自动挂载磁盘或虚假的磁盘

你可能不习惯看到自己的电脑里只有一个C盘,那么,可以采取以下措施

  • 挂载一个物理磁盘分区
    • 直接使用【磁盘管理】挂载磁盘即可。
  • 挂载一个VHDx
    提示:挂载存在延迟,并非一开机就可以使用。
    提示:挂载驱动器号为默认挂载位置,要指定,请参考将磁盘挂载到受保护的Windows目录处的方法。
    提示:若要为挂载的VHDx指派驱动器号,开机时文件资源管理器将弹出弹窗,但Windows 11在设置中挂载没有弹窗,且下次开机会自动挂载(Windows 10可用的曲折方法请参考下一项)。
    • 在【设置】中挂载(Windows11可用,至少24H2版本已经可用,更早版本不确定)

      1. 打开【设置】;
      2. 【系统】>【存储】>【高级存储设置】>【磁盘和卷】;
      3. 点击【附加VHD】或【创建VHD】
        按照程序指引即可挂载VHD。

      此方法附加的VHD下次开机将自动附加,暂未发现可见的附加延迟。
      此方法附加的VHD挂载驱动器号不会有文件资源管理器弹窗。

    • 使用diskpart

      1. 编写diskpart脚本

        1. 创建一个txt文本文档;
        2. 写入如下内容;
          1
          2
          3
          select vdisk file=T:\temp\1.vhdx
          attach vdisk
          exit
          以上代码中T:\temp\1.vhdx为VHDx文件路径;
          若要挂载多个VHD,重复第1、2行。

        参考

      2. 添加任务计划

        1. 打开任务计划程序
          1. win+X
          2. 计算机管理;
          3. 系统工具;
          4. 任务计划程序。
        2. 创建任务
          • 【常规】
          1. 界面右侧,点击【创建任务…】;
          2. 名称、位置、描述随意;
          3. 选择【不管用户是否登录都要运行(W);
          4. 勾选【不存储密码(P)】;
          5. 勾选【使用最高权限运行(I)】;
          6. 勾选【隐藏(E)】。
          • 【触发器】
          1. 【新建】;
          2. 【开始任务(G)】选择【启动时】;
          3. 【确定】。
          • 【操作】
          1. 【新建】;
          2. 【程序或脚本(P):】输入
            1
            powershell diskpart /s T:\temp\disk_d.txt > T:\temp\log.txt
            以上代码中T:\temp\disk_d.txt为脚本位置,必须填写完整路径,除非其位于system32目录;
            以上代码中 > T:\temp\log.txt由于记录脚本的输出内容,非必要。
          3. 【确定】;
          4. 【是】。
          • 【条件】
          1. 取消勾选【只有在计算机使用交流电源时才启动此仍未(P)】。
        3. 点击【确定】。

        参考

    • 使用Hyper-VShell

      1. 前提条件
        • 系统配置了Hyper-V服务 Windows PowerShell 的 Hyper-V 模块
      2. 添加任务计划
        • 与方法前文一致,区别在于【操作】的【程序或脚本(P):】应输入
          1
          powershell Mount-VHD -NoDriveLetter -Path T:\temp\1.vhdx
        • 以上代码中-NoDriveLetter指定不挂载驱动器号,可选。
        • 若要加载多个VHD,可【添加】多个操作或将Mount-VHD -NoDriveLetter -Path T:\temp\1.vhdx放于txt文本文档中,并配置多行,然后修改后缀名为.ps1,【程序或脚本(P):】输入该文件的完整路径。
  • 给一个文件夹挂载驱动器号,伪装成一个磁盘
    • 使用命令

      1
      Subst T: C:/Disk_T

      此命令将文件夹C:/Disk_T挂载为T盘,重启后失效。

    • 若希望启动时自动挂载

      1. 将其写入txt文本文档中,然后修改后缀名为.ps1
      2. 打开【组策略编辑器】
        • 在【运行】输入gpedit.msc
      3. 【计算机配置】>【Windows设置】>【脚本(启动/关闭)】;
      4. 双击【启动】;
      5. 【Powershell脚本】
        1. 【添加】
          选择准备的.ps1脚本文件。
      6. 【确认】。
    • 若目标磁盘为挂载到文件夹的VHDx文件目标文件夹,可能需要添加延迟,以确保目标目录可访问,如:

      1
      2
      timeout 3
      Subst T: C:/Disk_T

将其它文件目录迁移到VHD

若有将一部分文件存档,要使用的时候再取出使用的需求,可以将VHDx挂载到该目录,以保持系统整体相对简明的结构。
例如:

  • miniconda安装到VHD中,一系列的程序及其环境可以在多个系统间流转,迁移;
  • 将所有游戏配置到VHD中,营造一种电脑里没有游戏的假象,实际上每个系统都可以随时调用;

至于操作,我相信你已经掌握了。


基于虚拟磁盘VHD的多系统部署方式
http://blog.rainanxu.top/2024/10/05/基于虚拟磁盘VHD的多系统部署方式/
作者
须语 Rainanxu
发布于
2024年10月5日
许可协议