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

相关文章

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

Window Server2016 AD域的创建的方法步骤

《WindowServer2016AD域的创建的方法步骤》本文主要介绍了WindowServer2016AD域的创建的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、准备条件二、在ServerA服务器中常见AD域管理器:三、创建AD域,域地址为“test.ly”

Python在固定文件夹批量创建固定后缀的文件(方法详解)

《Python在固定文件夹批量创建固定后缀的文件(方法详解)》文章讲述了如何使用Python批量创建后缀为.md的文件夹,生成100个,代码中需要修改的路径、前缀和后缀名,并提供了注意事项和代码示例,... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5.

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

使用SpringBoot创建一个RESTful API的详细步骤

《使用SpringBoot创建一个RESTfulAPI的详细步骤》使用Java的SpringBoot创建RESTfulAPI可以满足多种开发场景,它提供了快速开发、易于配置、可扩展、可维护的优点,尤... 目录一、创建 Spring Boot 项目二、创建控制器类(Controller Class)三、运行

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于