UEFI分区入门指南

我已经花了几个小时阅读/研究如何为一个启用了UEFI和安全启动的Windows 8系统进行分区。虽然使用的语言有点超出我的理解范围,而且一些步骤似乎对于没有Ubuntu知识的人来说有所省略。
非常简单地说,我从安装程序中的分区选项开始,点击“其他选项”而不是擦除整个磁盘(因为我想保留Windows 8)。现在我已经读到只能有一个UEFI分区。很好,听起来不错。那么我是否还需要一个用于安装Linux的ext3/4分区,还是像某个指南说的那样将其格式化为fat32?
我在这一点上迷失了。然后它继续讲述引导标志以及只有UEFI分区需要设置为“boot”标志。这就是我迷茫的地方。我正在寻找关于如何不完全搞砸引导并安装双启动Ubuntu/Windows 8系统的非常具体的说明。

可能是重复的问题 http://askubuntu.com/questions/221835/installing-ubuntu-on-a-pre-installed-windows-8-64-bit-system-uefi-supported - Braiam
@Braiam 或许那是关于该主题的最高评级和详细回答,但正如提问者所说,有些指南过于详细,因此难以理解。由于问题涉及分区,提供快速的指示和解释以验证设置可能会受到欢迎。 - LiveWireBT
@LiveWireBT如果是这样的话,把你的答案附在主问题中,这样每个人都能在一个地方找到适合他们水平的答案,而不是分散在几个问题中。 - Braiam
它受到许多固件故障的影响。除非有一个包含每个答案所针对的BIOS固件的维基百科,否则无法得出一个标准答案。例如,我的电脑如果存在GPT分区,即使是在非主要驱动器上(用于缓存的SSD)也不会遵守传统模式的默认设置,如果存在非GPT UEFI安全分区等等。它非常努力地默认为UEFI。由于我还有一些不支持UEFI的其他操作系统需要双启动,我不得不将其完全重置并使用DOS风格的分区。 - RobotHumans
@Braiam 不,我的回答在那个话题上不合适,但它适用于这个话题。 - LiveWireBT
用户特别询问关于EFI安装的分区问题。这个问题比在基于EFI的计算机上安装的更具体,所以将这个问题称为广义问题的重复是没有帮助的,我个人认为。这就像是当有人想知道加利福尼亚何时成为一个州时,把他们指向一个包含完整美国历史教科书的网站一样。 - Rod Smith
3个回答

分区是非常简单的部分。对于所有的分区任务,您应该使用像 GParted 这样的分区软件,它包含在 Ubuntu Live ISO 镜像中。像 Ubuntu 安装程序这样过于简化的工具可能是您感到困惑的主要原因。

为了正确的 EFI 分区和安装,您需要:

  1. 在要安装的硬盘上有一个GPT分区表。

    • 您可以通过GParted菜单项 View -> Device Information 来验证这一点。如果分区表属性显示为 msdos 而不是 gpt,那么就是错误的,如果继续操作可能会变得混乱。不幸的是,创建新的分区表会破坏现有的分区表并且删除磁盘上的所有数据。

    • 相关链接:如何检查和更改分区表类型?

  2. 有一个EFI系统分区(ESP)。

    • EFI系统分区具有分区类型 ef00,通常包含FAT32文件系统。
    • 假设您有一个GPT分区表,如果在GParted的 manage flags 对话框中勾选了用于ESP的分区的 boot 复选框,并且该分区包含FAT32文件系统,则一切正常。如果没有勾选,请勾选boot复选框,并确保其他分区都没有设置此标志,因为正如您已经发现的那样,只能有一个ESP。(是的,GParted GUI中的boot标志等于分区类型 ef00,但这不是GPT中用于ESP的真实GUID,请参见用户 Rod Smith 的下面的评论,以及关于制造商特定引导分区的 脚注。)
  3. 创建操作系统所需的其余分区并在UEFI模式下启动安装介质。

    • 您的适当分区设置几乎完成。只需根据需要添加新操作系统安装所需的分区即可。您可以通过Ubuntu安装程序或GParted来完成此操作,由您决定,您在这里无法做错太多。(Linux的事实上默认文件系统是EXT4。您无法安装到FAT32,因为由于该文件系统的功能受限。)
    • 如果您没有以UEFI模式启动安装介质,则需要重新启动并显式地以UEFI模式启动。UEFI需要在计算机固件设置屏幕(以前/通常称为BIOS)中启用。有关如何引导和验证安装介质是否以UEFI模式引导的说明,请参见社区文档。从那里开始,Ubuntu安装程序应该知道它应该进行UEFI安装。
    • Secure boot应该可以与Ubuntu 12.10 64位和12.04.2 64位及更高版本的安装介质一起使用(请参见:如何在UEFI下安装Ubuntu并与预安装的Windows并存?)。
你可以在MBR分区的磁盘上进行UEFI安装,并进行一些黑客/修补操作,但是经过验证的设置将给你带来最少的麻烦,一切应该正常工作。我发现Arch Linux UEFI wiki page非常详细和有用,可以帮助你更多地了解整个主题并进行一些技巧操作。
已知的UEFI错误和实现不足之处:
  • 维基百科关于联想、东芝、三星等,但没有详细说明。
  • 2011年或更早的计算机可能使用了UEFI固件,但实现可能并不总是提供UEFI引导界面。来源:Dong Wei在LCA 2013(Linux.conf.au)的演讲中提到- UEFI, the Converged Firmware Infrastructure (http://mirror.linux.org.au/linux.conf.au/2013/mp4/文件UEFI_the_Converged_Firmware_Infrastructure.mp4 - 大约在12:14处)

3这个翻译相当准确,但我想指出十六进制代码(如EF00)是由GPT fdisk(gdiskcgdisksgdisk使用的。这些并不是官方的GPT类型代码。真正的类型代码是128位(32位十六进制)数字,输入、显示和记忆起来都很麻烦,所以GPT fdisk使用缩短的4位十六进制代码代替。GParted和parted使用特定的“标志”,比如“引导标志”,来表示特定的分区类型代码。其他工具有其他表示GPT类型代码的方式。 - Rod Smith
@RodSmith 我记得在一年前阅读 Arch Wiki 上的相关主题时看到过完整的 GUID,但现在找不到了。我已经添加了一个指向维基百科的链接。 - LiveWireBT

实际上,为基于EFI的Ubuntu安装进行分区并不比为基于BIOS的安装进行分区更难。如果您已经阅读了Ubuntu安装或分区指南,那么基于EFI的安装所需的更改如下:
通常情况下,你会使用GUID分区表(GPT)来进行EFI引导,而不是较旧的主引导记录(MBR)。在已经安装了Windows的系统上,这个步骤应该已经完成了,Ubuntu安装程序将能够检测并正常使用GPT分区。然而,使用GPT还有一些其他的影响,如下所述...
GPT不使用扩展或逻辑分区类型。相反,GPT支持最多128个分区(默认情况下;这个限制可以提高)。有些工具将其称为“主分区”,尽管在没有扩展和逻辑分区类型的情况下,“主”这个称呼是没有意义的。所有这些的目的是,你可以忽略任何创建扩展分区或创建特定混合主分区和逻辑分区的指令。
当前版本的Ubuntu存在一个错误,导致它使用Windows文件系统类型代码来表示Linux分区。这会导致你的Ubuntu文件系统分区在Windows中显示为未分区的磁盘。解决方法是使用gdisk将Ubuntu文件系统分区的类型代码从0700更改为8300。关于这个问题的详细信息,请参考此页面。你可以在安装Ubuntu后进行此更改。
GPT不使用柱面/磁头/扇区(CHS)值。旧的文档可能会提到这一点,或者提到“柱面对齐”。请忽略此类参考。(你也可以寻找更新的文档,因为即使是在基于BIOS的计算机上进行新安装,CHS问题也已经过时了。)
基于EFI的安装将其引导加载程序存储在EFI系统分区(ESP)中,而不是MBR中。因此,你必须有一个ESP,Ubuntu安装程序将其称为“EFI引导分区”。如果计算机已经以EFI模式引导其他操作系统,则已经存在一个ESP。我建议在继续之前备份任何现有的ESP,以防发生意外。(文件级别的备份应该可以正常工作。)在预装了Windows 8的系统上,ESP通常是磁盘上的前三个分区之一。它总是使用FAT(通常是FAT32)文件系统,所以你可以在分区屏幕上通过这种方式识别它。在GParted或parted中,它将设置“引导标志”,在gdisk中,它将具有类型代码EF00。
其他分区问题在固件和分区表类型中都很常见。特别是,Ubuntu默认使用两个分区:一个用于根(/)文件系统,另一个用于交换空间。许多用户喜欢将 /home或其他目录拆分为自己的分区,并且有些人喜欢使用逻辑卷管理器(LVM)设置。与此类事物相关的问题对于EFI和GPT与MBR和BIOS来说是相同的,因此请参考任何涵盖此类问题的数百个网站。

我安装了我的系统,但是我在BIOS中关闭了安全启动,所以我不确定它是否能正常工作。
  1. 在GPT模式下在您的硬盘上创建新的分区表。(警告:这将擦除磁盘上的所有数据!)然后,您必须创建一个标记为“EFI”、标记为“boot”的100 MB fat32分区以及系统分区,如下所示:

    • sda1:100MB,fat32,EFI,设置引导标志
    • sda2:30GB,ext4,kali-linux
    • sda3:4GB,swap,用于kali和ubuntu的交换分区
    • sda4:60GB,ext4,ubuntu
    • sda5:250GB,ntfs,windows 8.1
    • sda6:382GB,ntfs,datas
  2. (可选)安装Kali-linux。在安装过程中,请确保将100 MB fat32分区挂载为/boot/efi。其余步骤按照通常方式进行。

  3. 安装Windows 8。它会自动识别EFI系统分区,并创建一个MSFTRES和一个NTFS分区来安装自身。安装完成后,我们只能启动Windows,但稍后我们将解决这个问题。

  4. 安装Ubuntu。在安装过程中,选择100 MB fat32分区并将其更改为“用作efi”。创建一个ext4分区,安装Ubuntu。重新启动后,我们将看到win8加载器。在启动菜单中选择ubuntu并进入。

  5. 现在,我们将配置GRUB2以便检测到Windows。打开一个root nautilus,导航到/boot/efi/EFI,删除boot文件夹,并将microsoft文件夹中的boot文件夹复制到windows分区中,然后删除microsoft文件夹。然后,转到/etc/default/grub并注释掉以"GRUB_HIDDEN"开头的两行。 接下来,可以通过将以下行追加到/etc/grub.d/40_custom来手动添加Windows的条目:

    menuentry "Windows" {
            search --fs-uuid --no-floppy --set=root YOUR-EFI-PARTITIONS-UUID-HERE
            chainloader (${root})/Boot/bootmgfw.efi
    }
    
最后输入sudo update-grub。欢迎进入工作系统。

欢迎来到 Ask Ubuntu!请花点时间阅读一下如何格式化回答。例如,你可以使用编号列表而不是手动写上“步骤(数字)”。 - LiveWireBT
用户并不想破坏他的Windows安装,但你在第一步就没有提醒地这样做了。:( 有一个叫做bcdboot的工具,可以将引导程序和正确的配置数据安装到指定目录中。 - LiveWireBT
难以理解:删除引导文件夹,然后将Microsoft文件夹中的引导文件夹复制到Windows分区中,最后删除Microsoft文件夹。你能解释一下吗?/boot/efi/EFI目录下是否有引导文件夹?我在那里看不到它,而且我不认为我想要删除/boot/efi/EFI根目录。 - tomasb

  • 相关问题