EFI系统分区,即 EFI system partition,简写为 ESP。ESP 是一个 FAT16 或 FAT32 格式的物理分区,但是其分区标识是 EF (十六进制) 而非常规的 0E 或 0C,因此,该分区在 Windows 操作系统下一般是不可见的。支持 EFI 模式的电脑需要从 ESP 启动系统,EFI 固件可从 ESP 加载 EFI 启动程序或者应用。

一般情况下,大家仅仅是为了应和 EFI 规范而不得不划分这样一个分区,而且也只把它当作一个 EFI 启动程序和 EFI 应用程序的存储空间。因此,许多资料都推荐只划分一百多M空间给 ESP,这也使得该分区除了遵循 EFI 规范以及存储 EFI 启动文件之外没有太大用处。然而,我认为 ESP 可以有更多更好的用法。既然 ESP 是必要的,何不物尽其用?

首先,看下 ESP 本身的特点,以及由此带来的好处。

ESP的特点和好处

  • FAT分区与通用性 
    EFI 规范规定 ESP 使用 FAT 格式。尽管这种老旧的格式有很多局限性,但也不算一无是处。尤其对我来说,系统中有个 FAT32 分区是很好的,因为我经常使用多个系统,包括 Windows、Linux、FreeBSD,而这些系统都能安全地访问 FAT 分区,因此,我可以把各个系统的启动相关的文件包括启动管理程序等放到 ESP 里,而且,这也方便我可以在一个系统中去修改另一个系统的启动文件,至少我可以把 ESP 当作各个系统的公共交换空间吧。
  • 独立于操作系统 
    ESP是一个独立于操作系统之外的分区,操作系统被引导之后,就不再依赖它。这使得 ESP 非常适合用来存储那些系统级的维护性的工具和数据,比如:引导管理程序、驱动程序、系统维护工具、系统备份等,甚至可以在 ESP 里安装一个特殊的操作系统(SlaTaz Linux? PuppyLinux? Win PE?)。
  • ESP分区标识与安全、隐藏 
    尽管 ESP 分区是一个 FAT 格式的分区,但它的分区标识却是一个特别的标识(EF),EFI 规范的这一规定使得 ESP 在 Windows 下一般是不可见的,起码,对一般的 Windows 用户来说,这是一块“无法访问”的隐藏起来的区域。这意味什么?我们可以利用这个特点做什么? 
    我们不妨先回顾下其它煞费苦心地划分特殊分区以达到特殊目的的一些技术或方案。许多品牌机会在硬盘里划分一个特殊的隐藏的分区,用以存放系统恢复镜像等文件,可利用该分区“一键”恢复系统。无忧论坛上提到了UD隐藏分区,在磁盘上划分一块未使用的空白区域,用于存储引导文件甚至PE系统。除了这些,应该还有一些类似的东西,它们的目标其实都是为了维护或恢复系统,一般来说,木马和病毒不会破坏这些分区里的文件,普通用户也不会触及它们,使得它们相对来说是安全的。但是,它们的用户其实只是普通的 Windows 使用者,其它操作系统的用户,以及稍懂点技术的 Windows 用户,非常不愿意见到那些“多余”的分区,相信许多人都会把那些分区删除了吧?不过,ESP 呢?与提及的那些技术相比,ESP 也可以看作是一个特殊的分区,它有何特别? 
    首先,EFI 规范要求有 ESP,既然是强制的,那我们不妨拿它多做点事,而不是去删除它。其次,与上面提及的那些技术相比,ESP 也可以看做是一个安全的隐藏的分区,这使得我们完全可以使用 ESP 来替代那些技术,我们可以把引导管理程序、系统维护工具、系统恢复工具及镜像等放到 ESP,可以自己打造“一键恢复系统”,等等。而且,不仅可以自己进行 DIY,还要更方便、更通用。再者,ESP 是个标准的 FAT 分区,因此与上面提及的那些技术不同,ESP 在“隐藏”的同时并没有失去可访问性,不管你用什么操作系统,都是可以安全地访问它的(后面讲),所以,ESP 绝不会是“多余”的,相反,它很有用。 
    精心打造后的 ESP 可以成为你系统中的“救命稻草”,因它的特性使得它可能会是所有分区中最为“安全”的,当你的系统受损时,你还能依靠这个 ESP 进入维护系统对系统进行修复,或是“一键恢复”,或是进入 ESP 里的 某个 Linux 系统,或者,进入预先安装好的某个 Win PE,甚或一个 RamXP?你想怎么打造你的 ESP 呢?

善用ESP

  • 大容量的 ESP 
    与常识相反,我使用大容量的 ESP。我一般会划分一个 20G 或 32G 的 ESP,并且,不管系统是否支持 EFI(事实上我现在用的这台机器根本不支持 EFI),我都会在主硬盘上划分这么一个 ESP。

  • 访问 ESP 
    在 Linux 等系统下,ESP 和普通的 FAT 分区没什么两样,可以使用相同的方式进行挂载(使用 vfat 分区类型)。可以把 ESP 的挂载写到 /etc/fstab 里。我一般把 ESP 挂载为 /boot。 
    在 Windows 下,ESP 一般是不可见的,使用 Windows 自己的磁盘管理器无法为 ESP 分配盘符,因此需要借助一些工具或方法。如果是 PE 系统,或是 Win 7 以下版本的 Windows,可以使用 BOOTICE 的分区管理功能,给 ESP 分配一个盘符。另外,无忧论坛上有人写了一个 MountESP 程序,可以用来挂载 ESP 并为之分配盘符。然而,在 Win 7 以上版本的 Windows 中,那些工具虽然可以成功给 ESP 分配盘符,但在资源管理器中看不到。 
    其实,不借助其它工具,使用 MKLINK 命令就可以挂载 ESP。假设 ESP 位于第一块硬盘的第一个分区,以管理员身份打开 CMD,运行以下命令:

    ?
    1
    MKLINK /J C:\ESP \\?\GLOBALROOT\Device\Harddisk0\Partition1\

    运行成功之后,C:\ESP 就是指向 ESP 的一个符号链接,欲访问 ESP,访问 C:\ESP 即可。这个方法在 Windows 上其实是通用的,Win 7 以下版本也可以用,只是在 Win 7 以下版本并没有 MKLINK 命令,需要自行下载 junction 这个程序来代替 mklink。

  • 引导管理程序 
    对于 EFI 系统来说,系统的引导文件会安装到 ESP。Windows 会在 ESP 建立 EFI 目录并把引导文件复制到这里。Linux 则有多种选择方案,我一般选择 Grub2,也使用过 rEFIt。 
    而对于非 EFI 系统,主引导记录(MBR)我一般会使用 GRUB4DOS 或 NT6.X MBR,并把 GRUB4DOS (包括 grub.mbr, grub.exe, grldr, menu.lst)安装到 ESP,并且,附加上 SISO 模块(可以在无忧论坛里找到它)。还可以从 Win 8.1 复制 bootmgr 及 boot 目录到 ESP,并使用 BOOTICE 来管理 MBR 和 BCD。 
    不管系统是否是 EFI 的,我一般都会在 ESP 里安装 GRUB4DOS。GRUB4DOS 并不支持 EFI,但没关系,我们可以借用 GRUB 2 EFI 来引导 GRUB4DOS,给 GRUB 2 加个菜单就可以了,类似这样:

    menuentry "GRUB4DOS" {
    insmod part_msdos
    insmod fat
    set root=(hd0,1)
    linux /grub.exe
    }

    以后我打算尝试下Clover,这样,不管是否是 EFI 系统,我都可以用同样一个引导管理程序。

  • 在 ESP 里安装非日常用操作系统 
    当然,你不会想在 ESP 里安装日常所用的操作系统,我们可以挑选那些小巧便携的一些操作系统放到 ESP 里以备不时之需。许多系统可以借助某些引导管理程序以 ISO 镜像的方式直接启动,比如,SliTaz Linux, Ubuntu 等,很多 Win PE 系统也可借由 GRUB4DOS 从 ISO 直接启动。 
    GRUB 2 可以使用 loopback 模块启动一些 ISO 镜像,假设 ESP 是第一块硬盘的第一个分区,下面是一些 Grub 2 的菜单例子:

    ### GRUB 2 菜单文件: /boot/grub/grub.cfg
    menuentry "Ubuntu Live" {
    set ISO=/OS/Ubuntu/ubuntu.iso
    loopback loop (hd0,1)$ISO
    ### 如果是32位的Ubuntu,应将下面的 vmlinuz.efi 改为 vmlinuz
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$ISO noprompt noeject
    initrd (loop)/casper/initrd.lz
    }
    menuentry "SliTaz" {
    set ISO=/OS/SliTaz/slitaz-cooking.iso
    loopback loop (hd0,1)$ISO
    linux (loop)/boot/bzImage root=/dev/null
    initrd (loop)/boot/rootfs.gz
    }
    menuentry "Fedora Live" {
    set ISO=/OS/Fedora/fedora.iso
    loopback loop (hd0,1)$ISO
    linux (loop)/EFI/boot/vmlinuz0 root=live:$ISO rootfstype=auto ro liveimg quiet rhgb rd.luks=0 rd.md=0
    initrd (loop)/EFI/boot/initrd0.img
    }
    menuentry "Knoppix Live ISO" {
    set ISO=/OS/Knoppix/knoppix.iso
    loopback loop (hd0,1)$ISO
    linux (loop)/boot/isolinux/linux bootfrom=/dev/sda1$ISO acpi=off keyboard=us language-us
    initrd (loop)/boot/isolinux/minirt.gz
    }

    相对来说,我对 GRUB4DOS 更熟悉一些,而且 GRUB4DOS 可以启动更多种类的镜像文件。如果你的系统是 EFI 启动的,你可以安装 GRUB 2 EFI 并借由它来引导 GRUB4DOS,前面已经说过。GRUB4DOS 的菜单文件是 menu.lst,以下是一些例子:

    iftitle [find --set-root --devices=h /bootmgr && call set R=%@root^%] BOOTMGR of Windows VISTA/WIN7/WIN2008 on %R%
    chainloader %bootmgr%/bootmgr
    iftitle [find --set-root --devices=h /OS/Ubuntu/ubuntu.iso && call set R=%@root^%] Ubuntu LiveCD
    set F=/OS/Ubuntu/ubuntu.iso
    map %F% (0xff) || map --mem-top %F% (0xff)
    map --hook
    kernel (0xff)/casper/vmlinuz boot=casper iso-scan/filename=%F% ro quiet splash
    initrd (0xff)/casper/initrd.lz
    title SliTaz ISO
    set F=/OS/SliTaz/slitaz.iso
    find --set-root --ignore-floppies --ignore-cd %F%
    map %F% (0xff) || map --mem-top %F% (0xff)
    map --hook
    chainloader (0xff)
    title Win8.1 RamOS
    set F=/OS/Win8/usm8.1ramos.iso
    find --set-root --ignore-floppies --ignore-cd %F%
    map %F% (0xff) || map --mem-top %F% (0xff)
    map --hook
    chainloader (0xff)
    title 0PE LiveISO
    set F=/OS/0PE/0PE.iso
    find --set-root --ignore-floppies --ignore-cd %F%
    map %F% (0xff) || map --mem-top %F% (0xff)
    map --hook
    chainloader (0xff)

    更高级点,还可以利用 Win7 以上版本的差分 VHD 及 GRUB4DOS 的 dd 命令做一键恢复。

  • 系统维护工具、PETOOLS、脚本文件 
    上面所述的操作系统本身只能提供有限的工具,为便于系统维护,我把各种系统维护工具、PETOOLS等都放在了 ESP 里,这样,从 ESP 启动 PE 系统后就可以调用它们。这些工具包括:磁盘工具、分区工具、镜像/备份工具、辅助安装工具、硬件检测工具、系统清理、恢复工具,等等。 
    还有,我把自己写的一些维护用的脚本也放在了这里。

  • 操作系统镜像、备份及驱动 
    我很过分,我把这些东西也都塞到 ESP 里。如果日常使用的系统坏了,没关系,从 ESP 启动一个系统,或安装新系统,或进行恢复,都可以,对其它分区进行调整也可以,只要 ESP 没坏,其它系统都坏了也没关系。

后记

现在,你应该可以理解我为什么弄那么大容量的 ESP 了吧? 
请不要把 ESP 与微软的 MSR 分区混淆,那个 MSR 分区并没有存在的必要。 
你准备怎样使用 ESP 呢?

  • Copyright © 2014 Chen Zhiqiang. 转载-保持署名-相同方式共享 | Creative Commons BY-SA 4.0
  • 原文:http://my.oschina.net/chenzhiqiang/blog/209618

善用EFI系统分区ESP相关推荐

  1. 关于EFI系统分区(ESP)你应该知道的3件事

    EFI分区对于硬盘上安装的操作系统至关重要,通常在安装操作系统后创建.它主要用来干什么?如何在必要时成功删除它?本文陈述了您需要的所有信息. 什么是EFI分区? EFI系统分区(ESP)是一个使用FA ...

  2. nvme分区选mbr还是guid_关于EFI系统分区(ESP)你应该知道的3件事

    EFI分区对于硬盘上安装的操作系统至关重要,通常在安装操作系统后创建.它主要用来干什么?如何在必要时成功删除它?本文陈述了您需要的所有信息. 什么是EFI分区? EFI系统分区(ESP)是一个使用FA ...

  3. 什么是EFI系统分区?

    在介绍什么是EFI分区前,先要了解一下主板BIOS的启动方式和硬盘的GPT分区 当你按下电源开机键之后,主板开始供电,在检查CPU和内存无错误之后,就要根据用户在主板BIOS中的设置,开始寻找并启动硬 ...

  4. Windows删除EFI系统分区

    Windows删除EFI系统分区 Windows在磁盘管理界面无法对EFI系统分区进行操作,因此无法完全删除带有系统启动项的系统分区: 完全删除efi分区方法如下: 1.启动diskpart 有如下两 ...

  5. EFI系统分区如何删除

    U盘或者硬盘被做了系统安装盘. 结果在格式化都是失败,分区也不行. 有了新招 EFI分区是您的系统启动引导的分区,存放引导启动的文件的,因此它是一个操作系统独立的分区,实际上它是UEFI加载的固件和应 ...

  6. win7显示u盘efi分区_u盘安装系统时出现Windows 检测到 EFI 系统分区格式化为 NTFS

    有小伙伴反应说自己用u盘安装系统时,出现Windows 检测到 EFI 系统分区格式化为 NTFS的提示,安装没有成功,不知道该怎么解决.今天小编就给大家分析下具体的原因和解决方法. 首先出现这个提示 ...

  7. 【EFI系统分区】关于EFI系统分区的说明

    转载:https://zhidao.baidu.com/question/92653981.html EFI 可扩展固件接口(英文名Extensible Firmware Interface 或EFI ...

  8. EFI系统分区必须挂载到/boot/efi其中之一

    最近在windows 8.1系统上使用U盘安装centos8双系统,硬盘分区格式是ntfs,mbr引导:选择自动分区时出现如下错误 (Failed to find a suitable stage1 ...

  9. efi系统分区是什么?efi系统分区怎么删除?

    efi系统分区介绍 EFI在概念上非常类似于一个低阶的操作系统,并且具有操控所有硬件资源的能力.不少人感觉它的不断发展将有可能代替现代的操作系统.事实上,EFI的缔造者们在第一版规范出台时就将EFI的 ...

最新文章

  1. GetCurrentDirectory和SetCurrentDirectory函数
  2. 面试题08(C++)
  3. 【C++深度剖析教程1】C++中的经典问题解析-c++中的对象的构造顺序与析构顺序
  4. simulink仿真及代码生成技术入门到精通_Simulink仿真零基础入门到精通实用教学教程 自学全套...
  5. Java解析Json
  6. Android获取当前网络状态
  7. 添加图标_图标变化、小程序添加到桌面...微信电脑版这些功能更新!
  8. 剑指Offer之数组中重复的数字
  9. 关闭linux日志功能后性能测试
  10. Python基础——文件的读写
  11. Open CV leaning
  12. 线索二叉树(Binary Thread Tree)
  13. excel 调用表单名称公式_原来Excel自动生成图表报表是这样做出来的?Excel图表制作方法...
  14. 全志F1C100S/F1C200S学习笔记(12)——问题解决汇总
  15. Python 根据excel内容批量生成二维码
  16. Namecheap无法登录、无法修改密码
  17. 数据平台开发是做什么的?需要具备哪些能力
  18. 南昌大学计算机调剂难吗,南昌大学计算机应用技术专业调剂生复试经验(2)
  19. Word2016出现“此功能看似已中断 并需要修复”解决教程分享
  20. 注意!你得提前1.5h进考场,防疫要求千万别出错

热门文章

  1. JAVA五子棋人人对战的实现
  2. USB接口测试器--USB2.0/USB3.0信号检测器
  3. java入门第二季--面向对象实现人类说话,中国人说汉语,美国人说英语
  4. C语言实现简单的电梯控制系统
  5. 数字电视电子节目指南(EPG)的实现原理分析
  6. cst和ansys_HFSS -CST-FEKO
  7. win11怎么设置电脑字体大小
  8. 天地图引擎加载自定义WMTS图层
  9. Android缓冲进度条或加载进度条
  10. 班主任工作中如何融入生态文明教育?