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隐藏分区)的更多相关文章
- 安装Win7时删除系统保留的100M隐藏分区
原创文章,作者:lenbs,如若转载,请注明出处:https://www.smbinn.com/delwindows7100m.html 安装windows7新建磁盘分区时系统会自动创建100M的保留 ...
- Windows 7的100M隐藏分区
1.Windows 7的100MB的隐藏分区是Windows 7的活动分区,类似于Linux的/boot. 这其实有点类似Linux的做法,Linux在安装过程中可以专门分出一个100MB左右的分区作 ...
- Ubuntu安装教程--Win7系统中含100M保留分区
1.检查 Win7 保留分区 1)进入 Win7 打开库目录.在左側栏找到"计算机",瞄准点右键选择"管理"菜单: 2)在出来的管理面板左边找到"磁盘 ...
- 为什么Linux的fdisk分区时第一块磁盘分区的First Sector是2048?
这个问题曾经困扰我很久,在了解了MBR之后,我曾认为第一块分区之前为一个block.但是用fdisk查看是2048,一直不了解其中的缘由,今天查了一下资料,大概了解了,其中的细节留着慢慢去了解. 最直 ...
- UEFI+GPT模式下的Windows系统中分区结构和默认分区大小及硬盘整数分区研究
内容摘要:本文主要讨论和分析在UEFI+GPT模式下的Windows系统(主要是最新的Win10X64)中默认的分区结构和默认的分区大小,硬盘整数分区.4K对齐.起始扇区.恢复分区.ESP分区.MSR ...
- Sql Server 分区之后增加新的分区
随着时间的推移,你可能会希望为已分区的表添加额外的分区(例如,可以为每一个新年创建一个新的分区).要增加一个新的分区,可以使用ALTER PARTITION SCHEME和ALTER PARTITIO ...
- 联想的笔记本有隐藏分区 导致无法安装win10 eufi启动 报错:windows无法更新计算机的启动配置。无法安装
联想的笔记本都带着类似一键还原等的系统恢复软件,这些软件往往是将出厂设置备份在单 独的一个分区,此分区默认为隐藏,在 Windows 的磁盘管理中可以看到.打开磁盘管理器 的方法是右击计算机——管理, ...
- windows7系统下如何安装windows xp系统(无法识别硬盘,删除隐藏分区)
一.硬盘模式的设置 要设置好硬盘模式,否则安装操作系统的时候,根本就不识别硬盘,自然无法安装操作系统了.此步骤主要是解决无法识别硬盘的问题. 首先,进入BIOS当中,一般在advanced当中,有一个 ...
- 解决Win7系统安装时“安装程序无法定位现有 系统分区,也无法创建新的系统分区”提示
第一步:U盘启动装系统时,格式化主分区的内容后出现上面的问题 第二步:重启机器,通过U 盘启动.进入win pe系统. 第三步:把windows 7的ISO镜像解压到电脑的非系统盘的其他硬盘上.如D: ...
随机推荐
- centos 推荐使用epel源
centos 推荐使用epel源 张映 发表于 2011-10-13 分类目录: linux 在dell r410上面装的是centos6,64的操作系统,用的163的源,我一直都是用163的源,比较 ...
- CString——Left、Right、Find、ReverseFind
CString--Left.Right.Find.ReverseFind http://hi.baidu.com/shawmar/item/08b30afb0f32d46f3c1485ec CStri ...
- python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数
上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...
- shell字符串替换
- Windows Phone 8初学者开发—第20部分:录制Wav音频文件
原文 Windows Phone 8初学者开发—第20部分:录制Wav音频文件 原文地址:http://channel9.msdn.com/Series/Windows-Phone-8-Develop ...
- [034] 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime(转)
从微信公众平台的消息接口指南中能够看出,每种类型的消息定义中,都包括有CreateTime參数,它表示消息的创建时间,例如以下图所看到的: 上图是消息接口指南中4.1-文本消息的定义.注意Create ...
- Deamon Thread 讲解
The daemon thread's life cycle is same with the life cycle of the application which starts this daem ...
- 时间运算函数 CATT_ADD_TO_TIME
- Debian安装Nexus
前置条件 安装jdk (如果使用 nexus-2.6 以上版本需要jdk7) 1 apt-get install openjdk-6-jre / apt-get install openjdk-6-j ...
- 获取DOM元素位置和尺寸大小
JavaScript获取DOM元素位置和尺寸大小 在一些复杂的页面中经常会用JavaScript处理一些DOM元素的动态效果,这种时候我们经常会用到一些元素位置和尺寸的计算,浏览器兼容性问题也是不可忽 ...