UEFI + GPT 启动 VHD

说明

周五,笔记本充不进电了,还好我的系统是做到 VHD 中的,把硬盘拿出来,插到其它机器上,从我的硬盘启动就可以了(虽然当时没有从我的系统启动,因为只需要等待一天,周末就可以去修电脑了),所以我一点都不慌。

p.s. 天津这些电脑店还是那么乱,或者更甚?找个靠谱的维修点不是一般的难。联想官方维修店相对正规,但是要钱也很贵。最后,在领导的帮助下,在信诚大厦找了一个靠谱的维修点儿修好了,原来是主板上的一个元器件坏了。师傅的微信号是 wx256587,天津的小伙伴儿有需要可以联系。

今天,想起之前总结过如何把系统制作到 VHD 中,并设置对应启动项的文章,遂分享给大家。

以下是之前总结的博文,请参考。

1. 缘起

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

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

2.1 制作 VHD 文件

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

2.1.1 纯界面创建

我的电脑-右键-管理
存储-磁盘管理-创建VHD
创建100GB大小的可动态扩展的VHD文件
初始化磁盘
使用GPT分区格式
新建简单卷

然后一直下一步就行了。

2.1.2 命令行创建

可以参考https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/gg318049(v%3Dws.10)#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

2019-09-10 更新:虚拟磁盘大小(S): 的单位也可以切换成 GB,直接输入 100 就可以了。

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

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

apply image

耐心等待完成即可。

小结

  1. dism 命令需要管理员权限

  2. 不清楚低版本系统自带的 dism 是否支持部署,可以通过 dism /? 来查看帮助,如果 dism 不支持,还可以通过 imagex 等工具来部署。

  3. wim 文件一般要使用镜像文件中的 \sources\install.wim 文件,大约有几 GB 大小。

  4. 我这里以 win10 为例,其实从 win7 开始就支持从 VHD 文件启动了。

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

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

3.1 添加新的引导项

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

编辑当前系统的BCD
新建VHD启动项
编辑启动项

编辑好之后,点击 保存当前系统设置(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 文件夹中的文件树如下:

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

有些教程说需要拷贝与 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)

编辑其它BCD文件

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

4. 总结

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

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

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

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

5. 参考资料

  • 操作系统引导过程[1]

  • (译) UEFI 启动:实际工作原理[2]

  • UEFI+GPT引导基础篇(一):什么是GPT,什么是UEFI?[3]

  • 计算机到底如何启动?(UEFI boot)[4]

  • 装机、做系统必备:秒懂MBR和GPT分区表[5]

  • 计算机是如何启动的?[6]

  • UEFI启动视频详解:启动分析+N项操作实例,赶紧学习,不要落伍啦,该给自己充电啦...[7]

References:

[1]

操作系统引导过程: https://blog.csdn.net/jonathan321/article/details/51987680

[2]

(译) UEFI 启动:实际工作原理: https://www.tuicool.com/articles/NNf26jB

[3]

UEFI+GPT引导基础篇(一):什么是GPT,什么是UEFI?: https://www.iruanmi.com/what-is-gpt-and-what-is-uefi/

[4]

计算机到底如何启动?(UEFI boot: https://blog.csdn.net/u013201439/article/details/50195743

[5]

装机、做系统必备:秒懂MBR和GPT分区表: http://www.chinaz.com/server/2016/1017/595444.shtml

[6]

计算机是如何启动的?: http://www.ruanyifeng.com/blog/2013/02/booting.html

[7]

UEFI启动视频详解:启动分析+N项操作实例,赶紧学习,不要落伍啦,该给自己充电啦...: http://bbs.wuyou.net/forum.php?mod=viewthread&tid=299643&fromuid=396698


欢迎留言交流

感谢你的分享,点赞和在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html列表变成三个一行,HTML列表仅限第一行缩进

将文本包装到项目符号右侧的原因是浏览器将整个list-item元素呈现在项目符号的右侧。它将始终将文本包装在包含文本的元素中。最简单的解决方案是不使用内置列表项目项目符号。取而代之的是创建一个你喜欢的子弹的图像并使用float:left将它放在左上角。文本将围绕它…

vector容器中重写sort方法

一:问题描述 1: 我们常用的vector中sort方法是升序的但我们可以通过重新定义sort方法即可实现其的降序处理,以前总是在结构体数组当中用到过重写sort方法,但其实在vector当中也是可以用的 2: 我们在调用的时候注意…

基于Prometheus和Grafana打造业务监控看板

前言 业务监控对许许多多的场景都是十分有意义,业务监控看板可以让我们比较直观的看到当前业务的实时情况,然后运营人员可以根据这些情况及时对业务进行调整操作,避免业务出现大问题。老黄曾经遇到过一次比较尴尬的“事故”。其中一条业务线&…

广西高考成绩查询2021,2021年广西高考个人排名怎么查询,广西高考成绩排名查询方法...

高考成绩公布后,很多家长和学生咨询我们,广西高考个人成绩排名位次如何查询:广西高考成绩排名,可以通过省招生考试院发布的广西一分一段表来查询,也可以到聚志愿网站直接输入分数查询,一分一段它显示每一个…

452. 用最少数量的箭引爆气球(贪心算法+思路+详解)07

一:题目 在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。…

10-1 5-1 查询销售便携式电脑但不销售PC的厂商 (20 分)(分析+详解)

一:题目 本题目要求编写SQL语句, 查询销售便携式电脑但不销售PC的厂商。 提示:请使用SELECT语句作答。 表结构: CREATE TABLE product ( maker CHAR(20) , --制造商model CHAR(20) NOT NULL, --产品型号type CHAR(20), …

在.NET Core中使用MongoDB明细教程(1):驱动基础及文档插入

MongoDB,被归类为NoSQL数据库(其实我更觉得MongoDb是介于关系型数据库和非关系型数据库之间,此外,在我看来在很多场景中MongoDb都可以取代关系型数据库。),是一个以类JSON格式存储数据的面向文档的数据库系…

10-2 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商 (20 分)(思路加详解+测试用例)

一:题目 本题目要求编写SQL语句, 查询至少生产两种不同型号的计算机(PC或便携式电脑)且机器速度至少为133的厂商,输出结果按照制造商升序排列。 提示: 本题有三种情况: (1) 至少生产两种不同PC的厂商 &a…

ASP.NET Core学习资源汇总

ASP.NET Core入门学习资源汇总篇幅比較長,分为七个部分。(一)认识.NET Core(二)Vistual Studio安装、调试(三)Asp.Net Core入门指南与学习路线(四)入门级实战项目手册、官…

用计算机探索 按一定规律排列,探索规律练习题1

探索规律练习题1、我们平常用的数是十进制数,如26392103610231019100,表示十进制的数要用10个数码(又叫数字):0,1,2,3,4,5,6,7,8,9。在…

简单快速导出word文档

最近,我写公司项目word导出功能,应该只有2小时的工作量,却被硬生生的拉长2天,项目上线到业务正常运行也被拉长到2个星期。为什么如此浪费时间呢?1)公司的项目比较老,采用硬编码模式,…

如何让多端口网站用一个nginx进行反向代理实际场景分析

前段时间公司要整合服务器资源,刚好趁这次机会将这些乱七八糟的服务器做一次梳理和整合,断断续续一个月迁移完成大概优化掉了1/3的机器,完成之后遇到了一些问题,比如曾今零零散散部署在生产上一些可视化UI:apollo&…

【Azure Show】|第五期(下)当下最火热的Blazor与App Service, 嘉宾闫晓迪Alan Tsai...

欢迎来到Azure Show!Azure Show欢迎来到Azure Show第五期(下),继上集分享彭爱华和阿法兔两位老师的跨界经验之后,本期我们【MVP面对面】栏目邀请到远在新西兰的微软最有价值专家闫晓迪和大家聊聊新西兰的技术生态,当然…

台式计算机听音乐,配置一台4000元的台式电脑,主要用于日常办公及上网查资料,听音乐,看电影及学习....

满意答案asshnjgs2014.04.02采纳率:44% 等级:9已帮助:861人CPU:Intel 赛扬D341 2.93G(散) CPU适用类型:台式CPU CPU内核:Prescott 主频(MHz):2930MHz 插槽类型:Socket 775 制作工艺(微米):0.09 微米 L2缓存(KB):256KB FSB(MHz)…

ASP.NET Core Blazor Webassembly 之 组件

关于组件现在前端几大轮子全面组件化。组件让我们可以对常用的功能进行封装,以便复用。组件这东西对于搞.NET的同学其实并不陌生,以前ASP.NET WebForm的用户控件其实也是一种组件。它封装html代码,封装业务逻辑,对外提供属性事件等…

122. 买卖股票的最佳时机 II008(贪心算法+思路)

一:题目 给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易&#xf…

广东省计算机应用考试题,广东省计算机等级考试一级试题

广东省计算机等级考试一级试题一、理论部分 (共20分,每空1分)将正确答案填写在考试文件夹中“第一题答案.XLS”的Sheet1相应的位置上1. 解释程序的功能是 ( )。A解释执行高级语言源程序 B将高级语言源程序翻译成目标程序C解释执行汇编语言源程序 D将汇编语言源程序翻…

麒麟系统兼容安卓生态 弥补生态短板

日前,麒麟软件发布了银河麒麟操作系统最新版本V10。据媒体报道,麒麟软件是国内唯一一个通过CMMI5级质量评估的操作系统企业,在XC市场份额占有率达到70%以上。麒麟V10系统可以兼容安卓生态。集成了自研的UKUI桌面环境,支持多壁纸、…

763. 划分字母区间009(贪心算法+思路+详解+图示)

一:题目: 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 示例: 输入:S "ababcbacadefegdehijhklij" 输出…

初识ABP vNext(4):vue用户登录菜单权限

点击上方蓝字"小黑在哪里"关注我吧登录菜单权限运行测试前言上一篇已经创建好了前后端项目,本篇开始编码部分。开始几乎所有的系统都绕不开登录功能,那么就从登录开始,完成用户登录以及用户菜单权限控制。登录首先用户输入账号密码…