Csuper Blog

Csuper Blog

关于Windows 7的保留分区(100MB活动分区)
2012-11-01

 

关于Windows 7的保留分区(100MB活动分区)

1. 
Windows 7100MB的保留分区是Windows 7的活动分区,类似于Linux/boot.
 
我在体验Windows 7 beta版本的时候就注意到在安装Windows 7过程中会分出一个100MB的小分区(早期版本的Win7200MB),当时我特意看过,知道这是Windows 7活动分区,启动引导文件存放的分区 

 

       
这其实有点类似Linux的做法,Linux在安装过程中可以专门分出一个100MB左右的分区作为它的引导分区(/boot),这个分区主要用来存放grub.exemenu.lst, *fs_stage_1.5 initrd,以及内核文件vmlinuz的等Linux启动引导过程会用到的文件。 
       类似地,Windows 7的这个保留分区是它的主分区,系统分区,活动分区。Windows 7在启动过程中会从这个分区启动,然后再启动C盘目录。 

 
 

2.  Windows 7 保留分区的内容。 
Windows 7100MB系统保留分区在系统下是不会自动分配盘符的,但是我们可以手动给它分配一个盘符,运行具有管理员权限的CMD.exe,然后输入: 
diskpat 
sel disk 0 
list vol 
sel vol 1 
assign letter=R 
通过这几行命令会给这个保留分区分配盘符R,你也可以通过磁盘管理工具来给它分配盘符。 
分配好盘符之后,打开R盘,结果发现里面竟然空空如也。这是因为这个分区下的文件是隐藏的,系统的文件,在文件夹选项将系统文件,隐藏文件都设置为显示就可以看到如下的画面: 


这个分区里的文件主要有boot目录, bootmgr, bootsect.bak 
1) 
boot目录下主要是不同语言的字体文件,BCD以及memtest.exe 
字体文件是开机过程中会显示的字体。 
BCD是非常重要的文件,它是Windows VistaWindows 7的启动配置数据文件,类似WinXP下的boot.ini 
Memtest内存测试工具,你可以在控制面板à 管理工具 à内存诊断工具里设置它在下次开机时运行。 
2) 
bootmgr也是非常重要的文件,它是Windows VistaWindows 7的启动管理器,类似WinXP下的NTLDR 
3) 
bootsect.bak是该活动分区的前16个扇区的备份文件,所以它的大小是8KB 
其实Windows 7保留分区的这些文件和Windows Vista都是相同的,唯一不同的是Vista下这些文件都放在C盘下,而Windows 7中它们被单独存放在保留分区里。 

3. 
什么情况下会产生100MB的系统保留分区?
 
是不是在安装Windows 7的过程中一定会产生这样一个100MB的保留分区呢?不是的。一般来说,100MB的系统保留分区只有在以下两种情况都发生时才会产生: 
1) 
全新安装Windows 7; 
2) 
使用Windows 7分区画面进行分区格式化; 
以下任意一种情况发生100MB的系统保留分区都不会产生: 
1) 
升级安装Windows 7; 
2) 
在全新安装之前使用其他工具(比如gdisk.exe)先对硬盘进行分区格式化; 
3) 
在全新安装过程中使用diskpart.exe对硬盘进行分区格式化; 
知道了以上特点,我们就可以根据实际情况来进行分区。假如我需要执行全新安装,而我又不想使用这个100MB的系统保留分区,那么该怎么办呢?根据上述情况,我们可以选择在执行全新安装之前使用其他分区工具比如gdisk.exe来对硬盘进行分区格式化,或者直接进行全新安装,但是在分区画面,使用diskpart.exe来进行分区。 
这里介绍一下如何在分区画面使用diskpart.exe 
Windows Vista或者Windows 7安装过程中,首先被加载的其实是一个WinPE的环境,这个WinPE的环境在系统安装过程第一次重启之前是一直都存在,所以在这段时间,我们可以调用WinPECMD.exe来进行一些特殊的操作,比如对硬盘分区格式化。具体调用方法是:按下shift + F10CMD.exe的窗口就会出现了,如下所示: 
使用diskpart.exe分区完成之后,退出CMD.exe,然后点击分区窗口下的”Refresh(刷新)”,新的分区就出现了。选择创建好的C盘,点击”Next”继续下去,就可以继续安装而不会产生100MB的系统保留分区了。 

4. 
Windows 7的启动过程
 
BIOS-->MBR--> Bootmgr-->BCD-->Winload.exe-->内核加载 
1) 
开机后,BIOS进行开机自检(POST),然后选择从硬盘进行启动,加载硬盘的MBR并把控制权交给MBR(MBR是硬盘的第一个扇区,它不在任何一个分区内); 
2) 
MBR会搜索64B大小的分区表,找到4个主分区(可能没有4)的活动分区并确认其他主分区都不是活动的,然后加载活动分区的第一个扇区(Bootmgr)内存; 
3) 
Bootmgr寻找并读取BCD,如果有多个启动选项,会将这些启动选项反映在屏幕上,由用户选择从哪个启动项启动。 
4) 
选择从Windows 7启动后,会加载C:windowssystem32winload.exe,并开始内核的加载过程,内核加载过程比较长,比较复杂,这里就不一一讲了。 
在这个过程中,bootmgrBCD存放在Windows 7的保留分区里,而从Winload.exe开始,就开始进入到C盘执行内核的加载过程了。 

5. 
如何删除Windows 7的保留分区。
 
Windows 7的保留分区可以删除吗,删除之后我还能正常启动码?可以删除,但是必须小心。 
1) 
启动到Windows 7,运行具有管理员权限的CMD.exe,然后输入: 
diskpart 
sel disk 0 
list vol 
sel vol 0 
inactive 
sel vol 1 
active 
2) 
退出diskpart之后,继续在CMD.exe输入下列命令: 
C:windowssystem32bcdboot.exe C:windows /s C: 
当屏幕提示你操作成功之后,你就可以放心删除这个保留分区了,下次开机,你的系统就会从C盘直接启动而不需要这个保留分区了。 


不过还是建议一般用户不要这样去做,微软采取这样的做法也是处于保护引导文件的安全的考虑,另外也与Bitlocker加密有关。Bitlocker加密需要硬件TPM的支持,普通用户用不上,但是引导文件的安全是大家都需要的。

 

发表评论: