EFI/GPT探索(为何win7分区时创建100M隐藏分区)

2024-01-07 01:38

本文主要是介绍EFI/GPT探索(为何win7分区时创建100M隐藏分区),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

EFI/GPT探索(为何win7分区时创建100M隐藏分区) 

转自

http://blog.tomatoit.net/article.asp?id=348


EFI/GPT是新一代的固件/启动管理技术,比较复杂,资料很少。 
经过大量的搜索,找到了一些资料,总算是摸到了一点门,先简要地说一下。 

一、技术背景。EFI是Intel开发的,最早被用于Itanium计算机(1.0版),然后是Mac(1.1版),后来Intel开放了标准和技术资料,EFI由UEFI组织管理(http://www.uefi.org)。经过一段时间的开发,升级到2.0版(UEFI 2.0),目前,最新的版本是2.1。Intel有个网站,有EFI的技术资料、开发工具、实例代码和实用工具(提供EFI Shell和Toolkit下载)(http://www.tianocore.org)。

二、基本概况。EFI技术比较重要的有CSM、Shell和Toolkit,CSM能够让用户选择是用EFI firmware还是Legacy BIOS开机,Apple通过Boot Camp支持这个功能,所以我们可以在Mac机上安装Windows。至于Shell,它提供一个开机命令行环境,它可以做许多事情,目前我们需要的是用它来启动操作系统安装程序(因为只有这样才可以将Windows x64 SP1或Windows Server 2008安装到GPT分区,旧版本和32位的的Windows不可以)。Toolkit就是一些命令行工具,就像DOS下的.com/.exe文件,不过它的扩展名是.efi。 

三、分区相关。EFI需要占用一个分区,它的格式是FAT32,是隐藏的,默认不会挂载,所以在文件管理器里是看不见的。我们可以用Mac OS X安装盘或Windows Vista/2008安装盘手动创建这种分区(推荐使用Windows Vista/2008安装盘,兼容性好),Mac就不用说,用diskutil或硬盘工具,Vista/2008是这样的: 
1、准备一个全新硬盘,似乎不能已经是GPT分区表的硬盘,MBR的可以。 
开机,插入Vista/2008安装盘,从光盘启动(Mac机可以开机按住Option键,会出现两个光盘图标,选左边的)。 
2、安装画面选择语言后,点下一步,然后可以看到几个选项,一是升级,二是全新安装,下面还有两个我忘记是什么文字了,点最下面那一个,然后点下一步,再点最下面一个像命令控制台那样的图标,就进入了命令行。 
3、创建GPT分区过程: 
输入diskpart,回车。 
输入list disk,可以看到硬盘编号,0,1,2,3…什么的。 
输入select disk x(x是硬盘编号)选中你要分区的硬盘。 
输入clean清除该硬盘上的所有分区(如果你的硬盘不是未分区状态)。 
输入convert gpt将该硬盘转换成GPT分区表(基本上可以说是永久转换,没法转回MBR,除非你再次用clean清除分区表)。 
输入create partition efi size=***(***是分区大小,以MB为单位,Mac默认是200MB,稍微搞大点没关系,我分的是512MB)。 
输入create partition msr size=***(msr是Microsoft保留分区,貌似MS会用它干点什么事,我给它分了512MB)。 
输入create partition primary size=*** id=yyy创建数据分区,可用于安装操作系统(id=yyy可以不必输入,它代表的是GUID分区类型(格式,就像MBR分区表的FAT/NTFS/HFS+用一个字符串代表分区格式,只不过GUID它很长,是全球唯一标识符,这里不输入的话,在安装操作系统,格式化分区时会自动生成),详细介绍和各种分区GUID列表见此)。 
然后再重复上面那一句创建多个数据分区。 
建完了分区后,可以将EFI分区格式化一下以便挂载,方法: 
输入list partition看一下EFI分区的编号是多少。 
输入select partition x选中EFI分区(一般是1)。 
输入assign letter=x(x代表你要给它分配的盘符,随便填一个没被占用的盘符就好了) 
输入exit退出diskpart分区工具,这下又回到了命令行。 
输入format x: /fs:fat /q /y格式化这个EFI分区。 
这样一个GPT磁盘就做好了。 
在这里,其实还可以做一些其他的事情,比如把EFI Shell装进去(事先把EFI Shell的文件解压到一个FAT32格式的U盘上面(移动硬盘可能也行),怎么挂载这个U盘?请看上面。)不过要注意,这个命令行只能进来一次,如果你退回到安装介面,或者停电,那你就得重新分区(首先还得弄成MBR分区)。当然了,你也可以在安装完Vista/2008以后再做这些事情。 

四、安装系统。由于我们的目的是将Windows Vista x64 SP1/2008 x64或其他支持EFI/GPT的系统安装到GPT分区,所以有一个前提条件是我们得从EFI Shell启动安装,否则安装程序是不允许你将操作系统安装到GPT分区的。至于这个EFI Shell,有一个rEFIt提供了Shell(http://refit.sourceforge.net),不过它是一个Mac软件,所以你必须得先安装Mac OS X(至少得Tiger吧)。Intel的TianoCore网站也提供了这个东西(http://www.tianocore.org),Vista/2008安装盘里不知有没有,估计没有。

所以,目前的问题是,得拿到这个Shell,从这个Shell启动安装程序。这个Shell可以安装到哪里呢,EFI分区是FAT32格式(FAT32分区格式已开放),我们可以把它安装到EFI分区(当然首先我们需要能够对这个分区进行挂载和读写),也可以把它安装到U盘或移动硬盘上的FAT32分区(看来FAT32分区还挺有用)。 
Windows挂载EFI分区就不用说了吧,上面有。 
Windows添加.efi文件启动记录到NVRAM请看这里。 
Mac挂载EFI分区和添加.efi文件启动记录请看这个贴子的11楼。 
当然啦,我们还得知道是用哪个.efi文件做启动记录,Vista/2008是用bootmgr.efi做启动记录(安装光盘里有),Leopard好像是用安装盘中/usr/standalone/i386/…/boot.efi。 

目前我还没正式安装Vista x64/2008到GPT分区,因为我急着把这篇文章写出来。等安装成功了我再补充,当然了,如果有人比我先装好,那也很好。 
我担心的是目前的45nm的MacBook仍然是用1.1版的EFI,而许多PC机事实上已经使用了UEFI 2.0或2.1(也就是说PC机事实上也可以这样做)。据说2008最新款的iMac和Mac Pro已经使用了UEFI 2.0,国外有人已经安装成功了。

这篇关于EFI/GPT探索(为何win7分区时创建100M隐藏分区)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/578326

相关文章

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

mysql外键创建不成功/失效如何处理

《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen... 当前mysql版本:SELECT VERSION();结果为:5.5.40。在复习mysql外键约