[原]UEFI+GPT启动VHD
1. 缘起
最近因为不小心中招了,又面临着重装系统的尴尬,虽然之前有备份,但是时间已经很久了,而且恢复一次跟重装一遍差不多,没有多大优势。之前同事帮我弄过从vhd文件启动系统,很是方便,可以备份vhd文件即可。借此机会,决定好好研究下来龙去脉。
2. 创建VHD文件并写入系统镜像到VHD文件
2.1 制作VHD文件
创建VHD文件比较简单,有两种创建方式:
2.1.1 纯界面创建
然后一直下一步就行了。
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:\VHDs\win10.vhd
create vdisk file=E:\VHDs\win10.vhd maximum=102408 type=expandable
rem 选择需要操作的vhd文件
select vdisk file=E:\VHDs\win10.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号,如下图
然后运行dism /apply-image /imagefile:path_to_your_wim_file /index:4 /applydir:your_vhd_mounted_volume
耐心等待完成即可。
注:
- dism命令需要管理员权限
- 不清楚低版本系统自带的dism是否支持部署,可以通过dism /?来查看帮助,如果dism不支持,还可以通过imagex等工具来部署。
- wim文件一般要使用镜像文件中的\sources\install.wim文件,大约有几GB大小。
- 我这里以win10为例,其实从win7开始就支持从VHD文件启动了。
3. 添加VHD文件到系统引导
添加启动项需要用到工具bootice。我们可以在当前系统下添加一个新的引导项, 也可以从0开始(适用于当前没有系统的情况)新建引导项。
3.1 添加新的引导项
适用于当前有系统,需要添加一个新的启动项的情况
编辑好之后,点击 保存当前系统设置(S),再点击 保存全局设置(G)即可。
3.2 新建引导项
如果你有一块新硬盘, 想为该硬盘装系统, 那么请耐心往下看。
3.2.1 硬盘分区
分区的时候要选GPT分区,可以手动分区也可以使用DiskGenius帮助我们分区。
注:UEFI要求有一个FAT格式的分区(FAT16或者FAT32均可), 系统启动的时候会在FAT格式的分区下找启动文件。这里的FAT分区就是上图中的ESP分区。
3.2.2 拷贝UEFI启动文件到ESP分区
建立好ESP分区后, 我们就可以拷贝UEFI启动文件到该分区。需要拷贝什么文件呢? 从哪里可以找到这些文件呢?
我们只需要把安装镜像下面的EFI文件夹整个拷贝到刚刚新建好的ESP分区即可。
win10 64位镜像中EFI文件夹中的文件树如下:
注意:拷贝文件需要有盘符才能拷贝,可以手动或者通过DiskGenius为ESP分区分配一个临时的盘符。
注:有些教程说需要拷贝与EFI文件夹平行的boot文件夹。经过亲自测试,与EFI文件夹平行的boot文件夹不需要拷贝。当然拷贝了也没坏处。
3.2.3 拷贝装有系统镜像的VHD文件到指定目录下
因为创建的时候我已经把文件生成到了E:\VHDs\win10.vhd,我不打算放到其它目录下,这一步就省了。大家可以根据自己的需要灵活调整。
3.2.4 修改BCD, 添加VHD启动项
我们需要修改ESP分区下的EFI\microsoft\boot\bcd文件。
大体步骤和3.1中一样,只有第一步的时候不一样,BCD编辑的时候要选择 其它BCD文件(O) 而不是 当前系统BCD(S)
以上步骤都做好以后, 就可以拷贝做好的vhd系统镜像到指定目录, 然后重启了。
4. 小结
整个过程比较清晰,主要分两大步:
- 创建VHD文件并写入系统镜像到VHD文件
- 添加VHD文件到系统引导
UEFI启动 关键是要有一个ESP分区,该分区是FAT (FAT16或者FAT32均可)格式的,ESP分区下要按照UEFI规范放好需要的启动文件。
5. 参考资料
[原]UEFI+GPT启动VHD的更多相关文章
- UEFI+GPT引导实践篇(一):切换到UEFI启动,准备安装介质
如果只单纯比较UEFI引导和BIOS引导,那么毫无疑问UEFI引导要简单很多.不过现在的主板大都是同时兼容BIOS和UEFI引导方式,所以在实际操作前还需要确认一些东西.详见下文. 1.我的电脑支不支 ...
- UEFI+GPT模式下的Windows系统中分区结构和默认分区大小及硬盘整数分区研究
内容摘要:本文主要讨论和分析在UEFI+GPT模式下的Windows系统(主要是最新的Win10X64)中默认的分区结构和默认的分区大小,硬盘整数分区.4K对齐.起始扇区.恢复分区.ESP分区.MSR ...
- BIOS+MBR模式 VS UEFI+GPT模式
EFI与MBR启动的区别 大硬盘和WIN8系统,让我们从传统的BIOS+MBR模式升级到UEFI+GPT模式,现在购买的主流电脑,都是预装WIN8系统,为了更好的支持2TB硬盘 ,更快速的启动win ...
- Dell Latitude 3490 使用 UEFI+GPT 安装 Win7 x64
转载请注明出处!转载请注明出处!转载请注明出处! 公司近期采购了一批笔记本,由于刚好赶上Dell升级换代,原来的3480升级到了3490. 由于部分同事用不惯Win10系统,再加上有些软件不兼容,于是 ...
- UEFI+GPT引导实践篇(二):UEFI引导安装64位Win7/Win8
下文是在联想Y480笔记本上以UEFI方式启动安装Windows8的全过程,安装Windows7过程基本相同.注意,如果你的电脑硬盘是MBR分区结构,安装过程中将要删除硬盘上所有数据,请安装前备份硬盘 ...
- win7 64 + Ubuntu 14.04.1 64双系统安装,详解UEFI ~ GPT和legacy ~ MBR区别
win7 64 + Ubuntu 14.04.1 64双系统安装 背景:我的笔记本之前的系统是window 7 64 + Ubuntu 14.04.1,用UEFI引导系统.安装过程是先装的win7,再 ...
- 【解决】UEFI+GPT模式下装系统(WIN7/WIN8)
最近在家想把联想超极本重装系统,可是发现想简单了,预装WIN8的本本用的是UEFI+GPT模式,以前老毛桃装系统那一套不好用了,所以百度了一些方案,还没试,先记着. 1. WIN8 先说装WIN8,貌 ...
- dell笔记本通过uefi+gpt模式安装win10系统
安装前,需要确认dell笔记本是否支持uefi 1.使用UltraISO制作硬盘镜像后,过程如下 1) 选择"文件"->"打开",如下 2) 在打开的对话 ...
- UEFI+GPT安装WIN7,WIN8/WIN10下安装WIN7双系统
一.BIOS更改 首先来bios更改:我们知道,uefi+gpt引导虽然出来的时间比较长,但是win7还不能完全的支持,所以在使用uefi+gpt安装win7的时候就会出现各种错误!所以我们在安装Wi ...
随机推荐
- SqlServer体系结构
1.SQL的ABC 特色 (1) Application 应用:理念是提供软件.硬件.服务在内的完整解决方案 (2) Box盒子: 传统部署方式.部署在企业内部. (3)Cloud: 私有云 .公有云 ...
- 76.Python中F表达式详解
F表达式是用来优化ORM操作数据库的. 举个例子:我们做口罩的公司要将所有员工的薪水增加2000元,如果按照正常的流程,应该是先从数据库中提取所有的员工的工资到Python内存中,然后使用Python ...
- element穿梭框el-transfer增加拖拽排序和shift多选checkbox功能
<template> <div class="demo"> <el-transfer v-model="value" filter ...
- JavaScript—纯函数
定义 一个函数的返回结果只依赖它的参数,而且在计算过程中不会产生其他副作用,也就是不会对外部的数据造成影响或改变. 理解:函数的返回结果只依赖它的参数 const a= 1; const b= (c) ...
- ArchLinux安装(UEFI)
ArchLinux安装(UEFI) 一.连接网络 1.连接 # wifi-menu 2.检查是否联通 (ctrl+c停止) # ping www.baidu.com 3.远程安装 注:连接上网络之后可 ...
- C语言备忘录——向上取整
众所周知,C语言的取整方式是向下取整,昨天老师留了一道思考题,问我们C语言怎么向上取整,当时我第一反应就是ceil(),老师说不能用if……else之类的,函数也不行.当时想了想没事不用就不用,去ma ...
- Ubuntu下caffe:用自己的图片训练并测试AlexNet模型
参考博客:https://blog.csdn.net/eereere/article/details/79118645#commentBox 目录 1.准备图片 2. 将 图片路径写入txt 参考 这 ...
- 合并排序_python
#!/usr/bin/python # --coding:utf-8 -- def sort_merge(left,right): i,j=0,0 result=[] while i<len(l ...
- MySQL的优化与执行
MySQL会解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,包括重写查询.决定表的读取顺序,以及选择合适的索引等.用户可以通过特殊的关键字提示(hint)优化器,影响它的决策过程.也可以 ...
- idea拉取git项目并创建为maven项目(新创建github项目)
0 环境 系统环境:win10 编辑器:idea 1 正文 1 clone项目 跟着提示yes 下一步 2 在根节点添加pom.xml(maven) <?xml version="1. ...