• [原]UEFI+GPT启动VHD


    1. 缘起

    最近因为不小心中招了,又面临着重装系统的尴尬,虽然之前有备份,但是时间已经很久了,而且恢复一次跟重装一遍差不多,没有多大优势。之前同事帮我弄过从vhd文件启动系统,很是方便,可以备份vhd文件即可。借此机会,决定好好研究下来龙去脉。

    2. 创建VHD文件并写入系统镜像到VHD文件

    2.1 制作VHD文件

    创建VHD文件比较简单,有两种创建方式:

    2.1.1 纯界面创建

    我的电脑-右键-管理
    我的电脑-右键-管理

    存储-磁盘管理-创建VHD
    存储-磁盘管理-创建VHD

    创建100GB大小的可动态扩展的VHD文件
    创建100GB大小的可动态扩展的VHD文件

    初始化磁盘
    初始化磁盘

    使用GPT分区格式
    使用GPT分区格式

    新建简单卷
    新建简单卷

    然后一直下一步就行了。

    2.1.2 命令行创建

    可以参考https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/gg318049%28v%3dws.10%29#using-the-disk-management-tools
    主要命令如下(需要以管理员权限运行):

    rem 先执行diskpart进入diskpart交互界面
    Diskpart
    rem 创建一个最大102408MB的类型为动态扩展的VHD文件,保存到E:VHDswin10.vhd
    create vdisk file=E:VHDswin10.vhd maximum=102408 type=expandable
    rem 选择需要操作的vhd文件
    select vdisk file=E:VHDswin10.vhd
    rem 附加之
    attach vdisk
    rem 创建分区
    create partition primary
    rem 分配盘符
    assign letter=z
    rem 格式化
    format quick FS=NTFS label=My-VHD
    rem 退出diskpart
    exit
    

    注:如果虚拟磁盘类型是动态扩展,那么从VHD启动的时候要保证该VHD所在的分区的空闲空间要大于你创建VHD文件时指定的大小。比如我这里指定的是102408MB,存放在E盘。那么我想从win10.vhd启动的话,我需要确保E盘空闲区域要大于102408MB。

    2.2 把系统镜像写入VHD文件

    win10下可以使用dism命令部署镜像。先从msdn i tell you上下载想要安装的系统镜像,并用iso工具加载, 我用的是virtual clonedrive

    先用dism /get-imageinfo /imagefile:path_to_your_wim_file查看下信息,主要为了得到各个版本系统的index号,如下图

    get image info
    get image info

    然后运行dism /apply-image /imagefile:path_to_your_wim_file /index:4 /applydir:your_vhd_mounted_volume

    apply image
    apply image

    耐心等待完成即可。

    注:

    1. dism命令需要管理员权限
    2. 不清楚低版本系统自带的dism是否支持部署,可以通过dism /?来查看帮助,如果dism不支持,还可以通过imagex等工具来部署。
    3. wim文件一般要使用镜像文件中的sourcesinstall.wim文件,大约有几GB大小。
    4. 我这里以win10为例,其实从win7开始就支持从VHD文件启动了。

    3. 添加VHD文件到系统引导

    添加启动项需要用到工具bootice。我们可以在当前系统下添加一个新的引导项, 也可以从0开始(适用于当前没有系统的情况)新建引导项。

    3.1 添加新的引导项

    适用于当前有系统,需要添加一个新的启动项的情况

    编辑当前系统的BCD
    编辑当前系统的BCD

    新建VHD启动项
    新建VHD启动项

    编辑启动项
    编辑启动项

    编辑好之后,点击 保存当前系统设置(S),再点击 保存全局设置(G)即可。

    3.2 新建引导项

    如果你有一块新硬盘, 想为该硬盘装系统, 那么请耐心往下看。

    3.2.1 硬盘分区

    分区的时候要选GPT分区,可以手动分区也可以使用DiskGenius帮助我们分区。
    使用DiskGenius快速分区

    注:UEFI要求有一个FAT格式的分区(FAT16或者FAT32均可), 系统启动的时候会在FAT格式的分区下找启动文件。这里的FAT分区就是上图中的ESP分区。

    3.2.2 拷贝UEFI启动文件到ESP分区

    建立好ESP分区后, 我们就可以拷贝UEFI启动文件到该分区。需要拷贝什么文件呢? 从哪里可以找到这些文件呢?

    我们只需要把安装镜像下面的EFI文件夹整个拷贝到刚刚新建好的ESP分区即可。
    EFI文件夹

    win10 64位镜像中EFI文件夹中的文件树如下:
    EFI文件夹下文件

    注意:拷贝文件需要有盘符才能拷贝,可以手动或者通过DiskGenius为ESP分区分配一个临时的盘符。

    注:有些教程说需要拷贝与EFI文件夹平行的boot文件夹。经过亲自测试,与EFI文件夹平行的boot文件夹不需要拷贝。当然拷贝了也没坏处。

    3.2.3 拷贝装有系统镜像的VHD文件到指定目录下

    因为创建的时候我已经把文件生成到了E:VHDswin10.vhd,我不打算放到其它目录下,这一步就省了。大家可以根据自己的需要灵活调整。

    3.2.4 修改BCD, 添加VHD启动项

    我们需要修改ESP分区下的EFImicrosoftootcd文件。
    大体步骤和3.1中一样,只有第一步的时候不一样,BCD编辑的时候要选择 其它BCD文件(O) 而不是 当前系统BCD(S)

    编辑其它BCD文件
    编辑其它BCD文件

    以上步骤都做好以后, 就可以拷贝做好的vhd系统镜像到指定目录, 然后重启了。

    4. 小结

    整个过程比较清晰,主要分两大步:

    1. 创建VHD文件并写入系统镜像到VHD文件
    2. 添加VHD文件到系统引导

    UEFI启动 关键是要有一个ESP分区,该分区是FAT (FAT16或者FAT32均可)格式的,ESP分区下要按照UEFI规范放好需要的启动文件。

    5. 参考资料

  • 相关阅读:
    fixed解决方案
    阿里巴巴全部行业分类
    下边的flash挡住了上面的元素
    Response.Status
    分割DataTable
    window.print() 指定打印的区域
    oracle .1
    最新:电视台mms地址在线观看
    Access 时间比较错误
    Entity Framework linq
  • 原文地址:https://www.cnblogs.com/bianchengnan/p/6528783.html
Copyright © 2020-2023  润新知