我使用GParted创建了一个新的空GParted分区来安装GRUB,因为我希望将GRUB从Windows中分离出来
但是fstab
需要一个挂载点,这是fstab中的原始行:
UUID=ABCD-1234 /boot/efi vfat umask=0077 0 1
fstab
中最初的挂载点是/boot/efi
。现在的安装点应该是什么?
当我使用lsblk
时,挂载点是空的。
我不能使用mount -a
,因为它没有挂载点
发布于 2022-04-20 00:33:18
在根文件系统中,/boot/efi是一个空目录,用作EFI分区的挂载点。EFI分区上有一个FAT文件系统,(通常)只有一个目录- EFI。在EFI下,您可以为不同的引导程序提供其他目录-- Microsoft,ubuntu。还有一个引导目录,它是设备默认引导加载程序(不需要nvram条目,如果第一选择失败,可以用作后备引导加载程序,但只有当您有可移动磁盘并希望引导它时才真正使用)。
参见Hel.ubuntu.com/community/UEFI --通常,每个可引导设备只有一个EFI分区,而不同操作系统的引导加载器只是放在不同的目录中--.EFI/ubuntu、./EFI/ Microsoft等等。grub代替Microsoft引导加载程序的唯一地方是./EFI/Boot/bootx64.efi中的设备默认引导加载程序(但这一引导加载器通常不在一个磁盘设置上使用。尽管如此,您可以简单地创建另一个EFI,更改引导和ESP标志,并在那里安装grub,但是没有必要这样做。
grub安装程序知道EFI分区上的目录结构,并将其文件(grubx64.efi和shimx64.efi)复制到正确的位置。您实际上不需要自己做任何事情(即使文件设置非常简单,也可以将两个文件复制到/boot/EFI/ubuntu和一个三行grub.cfg存根文件,从/boot/grub/grub.cfg导入实际维护的grub.cfg文件。这类存根的示例(更改UUID和磁盘/分区号)适用于您的情况:
$ sudo cat /boot/efi/EFI/ubuntu/grub.cfg
search.fs_uuid 0ac9e07b-c36d-473c-832c-030dab912345 root hd1,gpt2
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
grub安装程序所做的另一件事是使nvram条目允许从EFI引导菜单中选择ubuntu引导加载程序并保持正常的启动顺序。您也可以使用efibootmgr手动完成此操作,也可以设置默认的引导加载程序( grubx64.efi和shimx64.efi的副本到./EFI/Boot,其中shimx64.efi重命名为bootx64.efi。设置默认引导加载程序可以跳过nvram设置,因为设备始终是引导选项。手动完成所有工作并不难,但grub-安装程序确实为您完成了所有这些工作。
如果您真的愿意,可以指定到grub-efi-目录= /boot/ubuntu,而/boot/ubuntu只是一个目录--如果您在/boot/ubuntu上挂载/dev/sda3 3,那么这些文件将转到sda3,而不是挂载点目录。使用正确的标志,这可以用于引导,但不要期望任何grub更新(可执行文件,而不是grub.cfg文件)来确定新的EFI没有安装在/boot/efi上。有关更多选项,请参见手册页()。你是想解决一个问题,还是这只是一个学习实验?
发布于 2022-04-20 17:07:39
别费神。为Windows和Ubuntu创建单独的ESP几乎没有什么好处,这样做需要额外的努力,并使创建新的问题成为可能。
@ubfan1 1的回答是正确的,AFAIK,但我想强调并详细阐述几点.
首先,没有必要为Ubuntu创建单独的ESP。ESP是打算在OSes之间共享的。事实上,创建多个ESP可能会导致问题--例如,某些版本的Windows (或至少Windows安装程序)会被多个ESP的存在所迷惑。因此,您可能会通过创建第二个ESP来创建问题。也就是说,将Windows和Ubuntu引导加载程序分离在不同的分区上,可能会使Ubuntu引导程序免受Windows的干扰或错误的影响,反之亦然。但是,如果您担心这一点,我建议在USB驱动器上,甚至在根(/
) Linux文件系统和/或Windows中创建ESP备份,将是很好的保护。
第二,Ubuntu期望ESP安装在/boot/efi
上。尽管您可以将它挂载到其他地方(或者将它挂起直到需要修改它)并将GRUB 2安装到那个备用安装点,但这是一种非标准的做法,可能会导致问题。任何假设ESP将在/boot/efi
上挂载的脚本或工具,如果您将ESP挂载到其他地方,很可能会出现错误行为。因此,您应该在/boot/efi
挂载ESP。如果您有两个ESP,那么“ESP”是指包含发行版安装的引导加载程序的ESP。在分别使用Windows和Ubuntu的场景中,根本没有理由在Ubuntu中挂载Windows。事实上,如果使用两个ESP的目的是最小化一个操作系统损坏另一个操作系统文件的风险,那么您肯定不应该在Ubuntu中的任何地方挂载Windows。相反,编辑/etc/fstab
以便更改"UUID“(它实际上是一个序列号,而不是UUID,但这是另一回事)来标识ESP,以便它引用您的新的Ubuntu特定的ESP,而不是原始的ESP。(您可以在blkid
中找到任何分区的UUID/序列号,如在sudo blkid /dev/sda1
中。)然后,您可以重新启动或执行sudo umount /boot/efi
,然后执行sudo mount -a
,以便在/boot/efi
上挂载Ubuntu特定的ESP。实用程序和脚本都应该可以很好地工作;您可以执行一个sudo grub-install
来将GRUB安装到特定于Ubuntu的ESP。(如果GRUB已经安装到Windows,您可能希望临时挂载它并删除这些文件。)
如果您需要暂时访问Windows,那么挂载点就不重要了。/mnt
目录经常用于这类事情;或者各种自动挂载工具将为此目的创建/media
的子目录。
第三,100 MiB比我推荐的电除尘器小。虽然这提供了足够的空间,但也存在一些问题。首先,mkdosfs
将在其上创建一个FAT16文件系统,一些EFIs和OSes (包括至少某些版本的FAT16安装程序)对FAT16 ESP反应很差。您可以通过告诉mkdosfs
创建一个FAT32文件系统来解决这个问题,但是如果您忘记这样做,默认情况下它将创建FAT16。其次,一些EFIs在其FAT驱动程序中存在错误,导致它们在小于512个MiB的FAT32文件系统上出现错误行为。一个常见的问题是,一些文件似乎不存在于EFI中,尽管Linux和Windows都可以看到所有文件,而文件系统检查工具则表示文件系统正常。如果Shim (主GRUB二进制文件)或ESP上的配置文件受到影响,您将无法启动。出于这些原因,并为了弥补兆字节(MB;1,000,000字节)和兆字节( MiB;1,048,576字节)之间的混淆,我建议创建一个大小至少为550 MiB的ESP。可以肯定的是,您可能可以使用100 MiB的静电除尘器;但是它可能会导致很难诊断的问题。请注意,如果您已经有了一个sub-512 sub,并且它的工作正常,我不建议调整大小或替换它,因为该操作是乏味的,可能会导致更大的问题。我建议创建一个550+ MiB ESP的目的是避免出现问题;如果一个较小的ESP已经在工作,那么就没有问题了。
https://askubuntu.com/questions/1403248
复制相似问题