2014-06-07 08:29:42 +0000 2014-06-07 08:29:42 +0000
35
35

如何创建EFI系统分区?

TL;DR*如何从头开始创建EFI系统分区?如何将EFI固件放在它上?

长版*

我有一台东芝T430笔记本电脑。我收到它的时候安装了Windows 7(但我认为它最初是安装了Windows 8)。我在它上安装了Ubuntu,但删除了一些磁盘上的分区,这样我就把Windows抹掉了,只有Ubuntu。在被删除的分区中,有一个EFI系统分区。我发现Ubuntu现在是以Legacy模式启动(而不是UEFI)。我试图按照这个指南将我的Ubuntu安装从Legacy模式转换为UEFI。问题是,由于没有EFI分区,每当我从BIOS中选择使用UEFI启动时,我无法启动。这不仅仅是硬盘,还有usb和DVD也是如此。我认为这是很合理的–它期望有一个EFI分区,既然找不到它,它就不能继续启动,无论是从HDD还是DVD。那么我如何重新创建EFI分区呢?

上面的指南说:

创建EFI分区*

如果你在Ubuntu安装程序中手动分区,你需要确保你有一个EFI分区。请不要格式化它。强烈建议每个磁盘只能有一个EFI分区。EFI分区可以通过最新版本的GParted来创建(12.04磁盘中包含的Gparted版本是可以的),并且必须具备以下属性:

我在创建这个分区时遇到了一些麻烦:

  • 我从Ubuntu的DVD中启动,打开GParted,创建一个200MB的分区,然后将其格式化为FAT32。
  • 在GParted中,我无法设置挂载点,因此无法设置引导标志。
  • 我没有在/etc/fstab中设置挂载点,因为它是一张活的光盘,而fstab看起来和我预期的一样,和普通的启动方式不同。

  • 我通过实盘再次启动,然后选择安装Ubuntu。

然而,我继续遇到这个问题,我想这是因为那个分区里没有EFI固件,只是一个空的分区,适合安装EFI固件。 我所做的是通过格式化整个磁盘,从头开始安装Windows 8.1,然后在旁边安装Ubuntu(这次是正确的)。现在我的分区是这样的:

在安装Win8的过程中,只要我删除了所有现有的分区,并让Windows重新格式化磁盘,它就会自动创建三个额外的分区,除了主安装分区外,还有3个额外的分区,分别是1,2,3。现在,在我有了一个合适的ESP之后,我可以在UEFI模式下从HDD或DVD中启动这两个分区了。

你说ESP默认不存储任何信息,但我猜想当操作系统安装时,它应该会把一些信息放在那里。所以我想我的情况是这样的。我把它抹掉了,虽然我重新创建了它,但里面并没有任何信息,因为ESP的创建是在安装了操作系统之后才完成的。我失去了Ubuntu的安装(没什么大不了的,反正是新安装的),但我想,为了保存它,我应该听从grawity的建议。虽然没有时间,但很高兴现在一切都很好。

答案 (4)

39
39
39
2014-06-07 13:27:45 +0000

首先,在GParted中,你不会设置挂载点;那是通过mount命令手动(和临时)或通过编辑/etc/fstab来永久的。因此,你对这个问题的担心是错误的。

其次,EFI系统分区(ESP)只是一个带有特定类型代码的FAT分区(即C12A7328-F81F-11D2-BA4B-00A0C93EC93B在GPT磁盘上)。请注意,/etc/fstab中的挂载点并不是ESP的定义的一部分;在Linux中,通过挂载在/boot/efi,通常是通过/etc/fstab条目来访问ESP,这只是传统的(但不是必须的)。你如何设置类型代码的方式因程序而异:

  • gdisk中,你将类型代码设置为EF00。(gdisk使用了两个字节的类型代码,扩展到磁盘上的真实类型代码;"EF00 “只是 "C12A7328-F81F-11D2-BA4B-00A0C93EC93B "的一个符号。)
  • 在GParted或parted中,你设置 "启动标志"。但是,请注意,这只适用于GPT磁盘;你不能用这些程序在MBR磁盘上设置ESP类型代码。(这通常不是什么大问题,因为基于EFI的计算机通常是从GPT磁盘启动的。)
  • 在Ubuntu的安装程序中,你可以将该分区识别为 "EFI启动分区"。
  • 在最新版本的Linux /etc/fstab中,你可以通过编号来设置分区的类型(GPT磁盘上的 "EFI系统 "为1,MBR磁盘上的 "EFI系统 "为0xEF),或者在GPT磁盘上输入完整的类型代码。因此,你在ESP上安装EFI固件的努力是白费力气。这个规则有两个例外。首先,你可能会在ESP上存储一个固件文件,以更新你的电脑上的固件。不过,这只是一个暂时的保留区。第二,DUETClover启动加载器,EFI是作为常规程序加载的,一般是从ESP中加载的。这些工具都是BIOS启动加载器,但是,它们可以让只用BIOS的电脑像EFI机器一样启动,而不是通常在有EFI固件的电脑上使用。严格来说,DUET和Clover都不是固件;它们是BIOS启动加载器,其作用与EFI一样。我建议你在电脑上运行 开机信息脚本 。这将产生一个名为fdisk的文件。把它发布到a pastebin网站,然后把你的文档的URL发回来。这将提供关于你的配置的硬数据,这将大大减少问题的可能原因。
11
11
11
2014-06-07 13:25:13 +0000

EFI分区并不保存固件(存储在主板上的芯片中),而是保存安装操作系统的_启动加载器。这基本上是EFI的替代方案,即把启动加载器放在磁盘的第0区,就像BIOS PC的情况一样。(很有可能安装盘本身也必须在EFI模式下启动,否则它就不会去设置UEFI启动………..事实上,某些部分的设置甚至不能在BIOS模式下完成。)

如果你已经安装了Ubuntu,你需要:

1.安装UEFI版本的GRUB,我想它应该在grub-efi-amd64-signed包中。确保GRUB已经在EFI系统分区中以\EFI\Boot\bootx64.efi的形式安装。(我这里使用的是EFI路径语法,如果你在Linux上挂载的分区是/boot,那么它就是/boot/EFI/Boot/bootx64.efi。)

  1. 重新启动。尝试在固件的启动菜单中选择某种EFI模式(EFI固件有自己的启动菜单,甚至在GRUB之前就有)。检查dmesg | grep "efi:"是否显示,确认你在EFI模式下。
2
2
2
2017-03-10 02:05:31 +0000

用记事本创建两个文件,并保存到你的USB Windows安装盘中, SaveAs:

要得到Windows分区的大小,请将你的硬盘大小乘以1024,一个100G的硬盘乘以1024等于102400减去210(EFI大小)再减去16(msr大小)再减去460(预留大小)就等于你要放入Windows分区的大小。(xxxxxx)

你可以从终端(命令提示符)cd /d D: > ➤ notepad CreatePartitions-UEFI.txt

当你在U盘中用notepad diskpart-UEFI.txt打开后,打开或写下命令,这样你就不会出错了。一旦你把分区的大小改成你喜欢的大小,关闭它,然后cd /d x:/Sources,然后运行diskpart /s D:CreatePartition-URFI.txt。

-2
-2
-2
2018-11-09 19:31:40 +0000

使用gnome-disk,包 “gnome-disk-utility",超级方便。