admin 管理员组

文章数量: 887019

1.UEFI
UEFI,Unified Extensible Firmware Interface,中文意思是“统一的可扩展固件接口”, 是一种详细描述类型接口的标准,
可看算是早先BIOS的更新版本。
在UEFI模式下安装的系统,只能用UEFI模式引导;同理,在Legacy模式下安装的系统,也只能在Legacy模式下进系统。UEFI只支持64位系统且磁盘分区必须为GPT模式,传统BIOS使用Int 13中断读取磁盘,每次只能读64KB,非常低效,而UEFI每次可以读1MB,载入更快。
UEFI固件区分架构,在UEFI引导模式下,通常只能运行特定架构的UEFI操作系统和特定架构的EFI应用程序(EBC程序除外)。
UEFI规定UEFI系统分区EFI System Partition (ESP)采用FAT32格式,同时支持FAT32/FAT16作为移动介质的文件系统。ESP在GPT分区表中有个特殊的GUID:
C12A7328-F81F-11D2-BA4B-00A0C93EC93B
Legacy BIOS无法识别GPT分区表格式,所以无法实现Legacy BIOS+GPT组合的启动方式;UEFI BIOS可同时识别MBR分区和GPT分区,所以UEFI下,MBR和GPT磁盘都可用于启动操作系统。不过由于微软限制,UEFI下使用Windows安装程序安装操作系统是只能将系统安装在GPT磁盘中。
2.MBR
MBR:Master Boot Record,主分区引导记录。硬盘每个扇区/区块都被分配了一个逻辑块地址,即LBA,而引导扇区则是每个分区的第一扇区,而主引导扇区则是整个硬盘的第一扇区(主分区的第一个扇区)。MBR就保存在主引导扇区中。另外,这个扇区里还包含了硬盘分区表DPT(Disk Partition Table),和结束标志字(Magic number)。扇区总计512字节,MBR占446字节(0000H - 01BDH),DPT占据64个字节(01BEH - 01FDH),最后的Magic number占2字节(01FEH – 01FFH)。依据此原理可知,MBR管理的最大空间=总扇区数*扇区大小(512byte),也就是2TB(由于硬盘制造商采用1:1000进行单位换算,因此也有2.2TB一说)。超过2TB以后的空间,不能分配地址,故无法管理。
在MBR分区表中最多4个主分区(或者3个主分区+1个扩展分区),也就是说扩展分区只能有一个,很显然这会大大限制它的应用,特别是现在存储器容量越来越大。因此演化出其他的分区方式。
3.GUID
GPT,Globally Unique Identifier Partition Table,也叫做GUID分区表,它是UEFI规范的一部分。GUID(GPT)最多支持128个主分区(目前Windows下),没有扩展分区和逻辑盘。此外,GUID在磁盘的首尾部分各带一个GPT表头,任何一个受到破坏后都可以通过另一份恢复,极大地提高了磁盘的安全性。
4.FAT和NTFS
FAT16/FAT32: 早期的MS-DOS和WIN95操作系统中所采用的硬盘分区格式。一个簇最小为512个字节,其大小可以成倍增长,最大为32K,系统为每个簇分配唯一的索引号——一个16位二进制数来标识。因为16位二进制数最大为65536,所以FAT分区所拥有的簇的数量不可能超过65536个。这正是FAT分区大小不能超过2GB的原因。FAT16的继任者——FAT32与其原理基本相同,相比前任优势仅在于分区可以大于2GB,但不能存储大于4GB的单个文件。
NTFS:New Technology File System,Windows NT内核系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式,提供长文件名、数据保护和恢复,能通过目录和文件许可实现安全性,并支持跨越分区。相比FAT,最大优点在于支持文件加密,通过采用日志式文件系统,详细记录磁盘的所有读写操作,提高了数据和系统的安全性,另一点则是突破了4GB大小限制。但同样的存取操作,NTFS下的读写次数多于FAT32,造成了寿命缩短。因此针对移动存储设备和固态硬盘,推出了exFAT文件系统。
exFAT:分区大小和单文件大小最大可达16EB(16×1024×1024TB);簇大小灵活,最小512B,最高达32MB;采用了剩余空间分配表,空间利用率更高;同一目录下最大文件数可达65536个。其特性未必强于NTFS,主要是针对Flash存储设备进行了优化(SSD,U盘等),传统硬盘不能格式化为该格式。
5.系统启动
Legacy BIOS启动流程:通过一个活动的主分区下的Bootmgr(启动管理器)文件导入根目录下Boot文件夹里的BCD(启动设置数据)文件,然后BCD文件根据自身的配置内容加载系统启动文件winload.exe(位置:根目录\Windows\system32\winload.exe)来启动系统。
一个BCD文件可以加载多个系统启动文件,从而实现引导多个系统(既可以是Windows,也可以是Linux)的启动。通过EasyBCD工具可以查阅和修改BCD文件的内容。
需要注意的是,MBR磁盘格式下,Windows系统的启动文件(Bootmgr、BCD)必须存放在活动的主分区内,这样才能正常引导系统启动(MBR磁盘分区格式下,只允许有一个分区是活动的)。
如果是使用微软原版操作系统(尤其是原厂自带系统),按照其自带安装程序来进行系统安装,系统会自动创建一个隐藏的活动主分区用来存放启动文件;如果采用其他安装方式来安装系统,由于系统默认并不会自动创建这个活动的主分区,启动文件将会存放系统盘里,所以在采用其它安装方式安装第一个系统时,需要确保安装系统的分区是活动的、而且是主分区,而安装非第一个系统时,就不必要求必须是主分区了,逻辑分区也可以。
UEFI BIOS启动流程:自动查找硬盘下ESP分区的bootx64.efi(或bootmgfw.efi),然后由bootx64.efi引导efi下的BCD文件,由BCD引导指定系统文件(一般为C:\Windows\system32\winload.efi)。
需要注意的是,GPT磁盘格式下,Windows系统的启动文件(bootmgfw.efi、BCD)是存放在一个FAT格式的分区里的,有些出厂预装Windows系统的电脑下将该FAT分区称之为ESP分区或EFI分区,ESP和EFI分区一般都是隐藏的FAT分区,可以通过DG等分区工具来创建ESP分区。
可见,UEFI+GPT模式引导Windows系统时,并不需要MBR主分区来存储主引导记录,也不需要活动分区,只需要一个存放了引导启动文件的FAT格式分区就可以了,这个FAT分区当然也可以是U盘等外接USB设备了。
GPT分区表磁盘不支持32位WIN7及之前的系统,仅支持64位的XP、WIN7、WIN8、WIN10、WIN11和32位的WIN8、WIN10。6.硬盘分区示例
共3张图,来自2台电脑,其中图1是原装WIN11的“磁盘管理”截图,有恢复分区,UEFI启动,有260M的EFI系统分区。图2和图3为另外一台电脑的WIN10“磁盘管理”和PE的Disk Genius截图,系统安装后生成恢复分区,工具不同,盘符号也会产生差异。


6.引导修复
若提示Winload.exe文件有问题,是Legacy BIOS引导文件出错;winload.efi有问题,则应是UEFI BIOS引导文件出错;NTLDR文件,是WIN2000、XP、WIN2003等NT5.x架构操作系统的启动管理器文件;Bootmgr是诸如Vista、WIN7/8/9/2008/2012等NT6.x架构操作系统的启动管理器。
常用的工具如NTBOOT Autofix、BOOTICE、Disk Genius等一般PE下都会集成,例如“电脑店”,“大白菜”,“老毛桃”等。
使用NTBOOT AutoFix工具来修复引导,进行UEFI+GPT模式系统引导修复时,需要建立ESP/EFI分区,可通过DG等工具为ESP/EFI分区并建立盘符,打开NTBOOT AutoFix引导修复工具,在里面选择ESP/EFI分区所在盘符,修复即可。
使用BOOTICE修复,切换到“BCD编辑”,然后“新建BCD”,新建BCD,文件名:BCD,然后点击“查看/修改”,点击“添加”,选择“windows vista/7/2008”(此为NT6.x架构系统,也适用于win8/10),点击“添加”后,放置到相应目录下。对于UEFI+GPT模式的,BCD文件目录为ESP/EFI的FAT分区:efi\Microsoft\BCD(隐藏分区,可在pe下查看)。若是Legacy+MBR模式,对于有隐藏分区的,需要先给这个隐藏的主分区添加盘符,然后将该BCD文件替换到这个活动主分区:\Boot\BCD。
6.Linux+Windows双系统
GRUB是一个来自GNU项目的多操作系统启动程序,允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。MBR启动之后方可进入GRUB。
7.WIN+Linux双系统安装示例
(1)要安装双系统,其顺序是先Windows,后Linux。建议统一用ISO,做成U盘启动,制作工具推荐深度的启动盘制作工具:
https://www.deepin/zh/download/
经验表明,大白菜,老毛桃等对UEFI的支持并不好,所制作的启动盘质量也不太理想。深度制作工具做成的启动盘卷标都是“DEPPINOS”,但不影响使用。
(2)Linux(例如Deepin)分区建议保留Swap分区,以内存的2倍为宜,根目录"/"挂载到ext4分区。
(3)下面2张图为硬盘分区示例,上图为WIN7的“磁盘管理”截图,下图为Disk Genius截图。

Grub Customizer是一个图形化的Grub管理程序,深度Linux的应用商店里可以找到,用它观察到的上面硬盘分区引导的Grub界面如下:

完整代码如下:

1.Deepin 20.5 GNU/Linux

load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  605450c7-30af-417e-973d-db8043ddd521
else
  search --no-floppy --fs-uuid --set=root 605450c7-30af-417e-973d-db8043ddd521
fi
linux	/boot/vmlinuz-5.10.101-amd64-desktop root=UUID=605450c7-30af-417e-973d-db8043ddd521 ro  splash quiet  DEEPIN_GFXMODE=$DEEPIN_GFXMODE
initrd	/boot/initrd.img-5.10.101-amd64-desktop
boot 

2.Deepin 20.5 GNU/Linux,Linux 5.10.101-amd64-desktop

load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos3'
if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3  605450c7-30af-417e-973d-db8043ddd521
else
	  search --no-floppy --fs-uuid --set=root 605450c7-30af-417e-973d-db8043ddd521
fi
linux	/boot/vmlinuz-5.10.101-amd64-desktop root=UUID=605450c7-30af-417e-973d-db8043ddd521 ro  splash quiet  DEEPIN_GFXMODE=$DEEPIN_GFXMODE
initrd	/boot/initrd.img-5.10.101-amd64-desktop
boot 

3.Windows 7 (在 /dev/sda1)

insmod part_msdos
insmod ntfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  6CBCAE77BCAE3C08
else
  search --no-floppy --fs-uuid --set=root 6CBCAE77BCAE3C08
fi
parttool ${root} hidden-
chainloader +1

8.BCD编辑工具EasyBCD2.4:

Windows系统BCD编辑器EasyBCD2.4-OS文档类资源-CSDN文库https://download.csdn/download/weixin_41784968/85157859

本文标签: 双系统 硬盘 知识 Windows Linux