• BIOS + MBR > UEFI + GPT


    BIOS + MBR > UEFI + GPT
    硬件接口系统与磁盘分区
    UEFI用于取代老旧的BIOS,而GPT则取代老旧的MBR。

    名词解释:

    • BIOS (Basic Input/Output System) 基本输入输出系统
    • MBR (Master Boot Record) 主引导记录
    • UEFI (Unified EFI) 统一可扩展固件接口.包括内置命令行界面,读取分区表,浏览文件等特性,GPT分区也是UEFI标准的一部分
    • GPT (GUID Partition Table) GUID分区表,是UEFI 规范的一部分。
    • EFI (Extensible Firmware Interface) 可扩展固件接口
    • GUID (globally unique identifiers) 全局唯一标识符
    • ESP (EFI System Partition) EFI系统分区, GPT的启动分区。包含一个efi目录。每个引导装置程序有自己的标识符和一个对应的子目录,如efi/microsoft, efi/apple, efi/grub. 启动加载文件后缀.efi,
    • PMBR (Protective MBR) 保护性MBR, GPT的PMBR存在的意义就是,当不支持GPT的分区工具试图对硬盘进行操作时(例如MS-DOS和Linux的fdisk程序),它可以根据这份PMBR以传统方式启动,过程和MBR+BIOS完全一致,极大地提高了兼容性。这种MBR会认为GPT驱动器有一个占据了整个磁盘的分区。
    • POST (Power-On Self-Test) BIOS开机自检
    • GRUB (Grand Unified Boot Loader) 大一统引导装载程序
    • MSR (Microsoft Reserved Partition) Microsoft 保留分区, GPT格式磁盘用于安装Win7/8系统都会自动创建该分区。
    1. MBR不支持大于2T的硬盘。GPT支持最大卷为18 EB(1EB=1048576TB)50多万倍。不过MBR是1983年就提出来的,那时候支持2Tb对于当时的人来说,2Tb也是天文数字了。
    2. MBR最多4个主分区,超过4个再分区只能通过逻辑分区。GPT可以支持无限个分区,微软目前的限定是128个。Linux、ubuntu、macos都能支持这种分区格式。
    3. GPT分区磁盘有备份分区表来提高分区数据结构的完整性。MRB没有。
    4. UEFI可以实现启动时原生分辨率,可用鼠标操作图形界面,不再是枯燥的蓝底白字的英文。较新的版本还有截图,联网等功能。
    5. UEFI + GPT 支持Secure Boot。通过保护预启动或预引导进程,抵御bootkit攻击,从而提高安全性。所有在开机时比Windows内核更早加载,实现内核劫持的技术,都可以称之为Bootkit。
    6. BIOS由汇编语言编写,UEFI基本由C语言编写。
    7. BIOS+MBR的系统引导文件可以和系统文件在同一分区的根目录,也可以不与系统文件同一分区,只要系统引导文件所在分区为活动的主分区即可启动操作系统,而UEFI+GPT只能把系统引导文件放置在ESP分区,且操作系统必须在另外的主分区,也就是说,UEFI+GPT强制要求系统启动文件与系统文件必须分离,不在同一分区。

    一个计算机是使用BIOS还是使用UEFI,是由这台计算机的主板决定的,UEFI大约在2005年出现,到2010年左右逐渐普及。
    大约从2012年的Windows 8操作系统及服务器操作系统Windwos Server 2012开始,主流操作系统及主板厂商全面支持GPT分区。
    同时,主板也大约在2010年左右,之前大部分支持BIOS,之后大部分支持UEFI。
    在过渡期间,可能同时会有这2种(BIOS, UEFI)主板上市。

    只有基于EFI的电脑能从GPT磁盘启动
    UEFI主板:UEFI + GPT
    GPT分区有PMBR的兼容区,所以UEFI的主板也可以使用传统的MBR方式。

    对于老旧机器的BIOS主板:BIOS + MBR
    双硬盘:BIOS + MBR系统主硬盘 + MBR/GPT数据硬盘

    ===================

    Windows系统,查看启动模式(UEFI or Legacy BIOS)
    https://wiki.archlinux.org/index.php/Dual_boot_with_Windows
    https://www.eightforums.com/threads/bios-mode-see-if-windows-boot-in-uefi-or-legacy-mode.29504/

    1. DiskManagement 磁盘管理下查看是否有(EFI System Partition)分区;
    2. 开始运行:msinfo32, 在System Summary下找到BIOS Mode项目,内容会是(Lagacy or UEFI);
    3. 打开日志:C:WindowsPanther​setupact.log, 查找“Detected boot environment”关键字,看其后内容:(EFI or BIOS);
    4. 命令提示运行:wpeutil UpdateBootInfo​,查看值
    reg query HKLMSystemCurrentControlSetControl /v PEFirmwareType​
    REG_DWORD (returns 0x1 if the PC boots in Legacy BIOS mode or 0x2 if the PC boots in UEFI mode.)

    ===================
    http://www.eassos.cn/jiao-cheng/ying-pan/mbr-vs-gpt.php
    https://en.wikipedia.org/wiki/GUID_Partition_Table
    https://www.zhihu.com/question/28471913
    UEFI+GPT与BIOS+MBR各自有什么优缺点?
    https://www.itsk.com/thread-345631-1-1.html
    https://zhuanlan.zhihu.com/p/26098509
    https://news.mydrivers.com/1/503/503560.htm
    https://blog.51cto.com/zhaoshilei/1912606

    =============
    http://www.wnavy.com/archives/1254
    http://drops.xmd5.com/static/drops/tips-12043.html
    https://wiki.archlinux.org/index.php/Partitioning#GUID_Partition_Table
    https://en.wikipedia.org/wiki/Master_boot_record
    https://en.wikipedia.org/wiki/Disk_partitioning
    https://en.wikipedia.org/wiki/Booting#Boot-loader
    https://en.wikipedia.org/wiki/GUID_Partition_Table
    https://en.wikipedia.org/wiki/Logical_block_addressing
    https://en.wikipedia.org/wiki/Cylinder-head-sector
    https://en.wikipedia.org/wiki/Chain_loading
    https://en.wikipedia.org/wiki/GNU_GRUB
    http://wiki.rosalab.ru/en/index.php/Grub2_theme_tutorial
    https://wiki.gentoo.org/wiki/GRUB2
    https://wiki.archlinux.org/index.php/GRUB
    https://www.gnu.org/software/grub/manual/grub/

    https://en.wikipedia.org/wiki/BIOS
    https://en.wikipedia.org/wiki/BIOS_boot_partition
    https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface
    https://en.wikipedia.org/wiki/Booting#Boot-loader
    Comparison of boot loaders
    https://en.wikipedia.org/wiki/Comparison_of_boot_loaders

     ============

    用dd if=/dev/sdc of=/tmp/mbr.bin bs=446 count=1 提取出。
    用hexdump -C /tmp/mbr.bin 查看

  • 相关阅读:
    c++ 内存管理方式
    4.2学习总结
    PTA面向对象程序设计6-3 面积计算器(函数重载)
    3.26学习总结
    PTA——c++面向对象基础
    3.17学习总结.listview用法总结
    3.16学习总结
    3.15学习总结(Python爬取网站数据并存入数据库)
    android开发使用jxl创建Excel
    第一次结对作业
  • 原文地址:https://www.cnblogs.com/sztom/p/10633930.html
Copyright © 2020-2023  润新知