在基于UEFI的系统中,如何使用LVM在GPT格式的系统驱动器上为* buntu操作系统创建多引导环境?


9

我使用LVM的原因是,我重新安装,升级并且通常与我的OS安装混在一起,以至于我发现LVM赋予我极大的灵活性,可以随意移动,扩展,克隆和备份OS分区,而不会带来任何风险与其他分区方法。但是,它的确会使有时多次启动OS变得有些复杂且不可预测,尤其是在较新的硬件上,在该过程中,进程会更加复杂。

我要说的是新的UEFI(而不是BIOS)主板,它可以让您充分利用3TB +硬盘的全部潜能并从中引导(使用GPT格式化而不是MBR格式化)。事情变得异常复杂和混乱,因为每次在计算机上安装新的操作系统时,它都会覆盖以前安装的EFI引导加载程序(.efi)文件,并且最终在EFI中会有一系列损坏的条目“ BIOS”引导列表和大量冗余grub引导加载程序散布在您的分区上。这使我在很多层面上都感到不适,尤其是在美学上。

Answers:


6

注意:这是OP的答案。我将它作为CW移到了这里,所以没有关闭。如果mod看到此情况,请将其所有权归给OP,以作为自我解答。

在下文中,我将详细说明如何使所有这些工作在某种程度上和谐地工作并解决问题。

第一部分:安装。

请注意,如果你要的是Windows 7(或8?)安装在你的机器上,你可能必须安装它第一次,最好是在它自己的硬盘驱动器,你将不能够把它放在你的逻辑卷组。这是因为Windows 7 GPT / EFI安装程序是非常基本的,不会让您执行此处将要执行的操作。Windows安装后,您可以调整大小和重新分区,添加多引导安装所需的分区。Windows创建的EFI系统分区可以始终使用下面详述的方法的一种变体重新用于Linux安装。

首先,在执行任何其他操作之前,它有助于使用gparted(或类似工具)擦除目标系统驱动器并将其初始化为GPT磁盘。如果您对使用非图形分区程序从头开始设置磁盘感到有些紧张,那么这绝对是值得的,并且可以通过标准的实时桌面USB或CD安装程序轻松完成。不要在Windows中执行此操作。我不确定这是否绝对必要,但这就是我所做的。您也可以在此阶段对非LVM分区进行基本分区,因为这不会造成伤害,并为您提供了正确安装的框架。

现在刻录您的安装CD / USB。如果您使用的是Ubuntu Alternate Desktop ISO(推荐),则必须将其刻录到CD上,因为它将无法从USB记忆棒上正常工作。当用于LVM安装时,当尝试使用aptitude / tasksel开始加载和安装软件时,它将以严重错误停止,因此,如果您知道有什么用,请使用CD!

  • 在所有情况下(AFAIK),Ubuntu Server都可以通过USB绝对完美地安装,但是我发现,如果我想在Server之上构建Ubuntu / Mythbuntu桌面系统,它将引入各种意外的怪癖,然后需要花费一些时间进行整理。因此,如果您要这样做,请坚持使用台式机。

  • Quantal(12.10)在图形安装程序中可以选择使用LVM(这很棒!),因此替代ISO已被淘汰。但是,我发现手动分区界面不灵活,缺少LVM选项,并且根本无法用于多重引导。这可能是由于前面提到的USB问题引起的,但是老实说,我尝试使用Quantal系统遇到了很多问题,以至于我很快放弃并回到了Precise(12.04.1)。

  • 另一个主要选择是使用Net-boot安装程序,我没有任何实际经验(Raspberry Pi除外),但是我相信有些mini ISO带有基于文本的安装程序和GUI(GTK)安装程序,可以将其刻录和引导。这些直接从存储库中提取大多数安装文件,并且高度可定制。

接下来,您应该使用CD或USB中的UEFI引导项从CD或USB引导系统,该引导项位于“ BIOS”或引导菜单(通常是键盘上的[F8]-[F12]之一)中。

我将由您来完成安装过程的初步准备,但是一旦进入分区部分,请选择“手动分区”,然后创建(或修改(如果已经创建了其中一些))以下分区:

  1. 单个分区,大小为200MB,FAT32,EFI系统分区,命名/标记为“ EFI”,可启动,格式。

  2. 几个分区:大小为256MB,EXT2,可引导,格式;

    • 您应该为它们代表的操作系统分别命名/标记它们,例如“ OS_01_Boot” ...“ OS_03_Boot” ...等等。

    • 首先将第一个安装为“ / boot”,将所有其他安装为“请勿使用”。

    • 为要安装的每个操作系统创建一个分区。

  3. 一个分区(占驱动器的剩余空间)作为LVM的卷。

    • 在刚分区的卷上配置LVM,为所有OS创建一个卷组,为其命名并为其提供足够的空间。我建议每个存储空间至少为40GB,具体取决于您计划为每个安装空间设计的安装类型。
  4. 创建一个与系统中物理RAM大小相同的逻辑卷,即8GB,将其命名为“ Swap”,用作交换格式。

  5. 为卷组中的每个操作系统创建一个逻辑卷,按照上面的建议调整它们的大小,并为其分别命名,例如“ Ubuntu_12.04”等。

    • 将每个文件格式化为EXT4,并随即命名/标记分区。

    • 首先将第一个安装为“ /”(根),将所有其他安装为“不使用”。

而已!现在,您已经为系统有了交换,“ / boot”和“ /”(根)分区,并为以后的安装保留了备用空间。现在,您可以将更改提交到分区表,然后继续其余的安装。

在安装下一个操作系统时,只需确保分别安装下一个“ / boot”和“ /”(根)分区即可。请确保将所有其他标记(包括您上次使用的标记)标记为“不使用”。

第二部分:备份UEFI启动文件。

引导到新操作系统后,必须备份UEFI引导加载程序以供以后使用,并确保在下次安装中不会覆盖它。可以在“ / boot / efi / EFI”中自己的文件夹(通常称为“ ubuntu”)中找到该文件。该文件的名称类似于“ grubx64.efi”,具体取决于您的PC的体系结构。因此,“ / boot / efi / EFI / ubuntu / grubx64.efi”适用于我的机器。

就我而言,要备份它,我通过控制台将其复制,如下所示:

sudo cp -r /boot/efi/EFI/ubuntu /boot/efi/EFI/Ubuntu_12.04.1

绝对值得在您的主文件夹或其他安全的地方进行进一步的复制,以防万一:

cp -r /boot/efi/EFI/ubuntu /home/user/Ubuntu_12.04.1

完成此操作后,您可以安全地安装您的下一个操作系统(按照上述建议),该操作系统很可能会覆盖原始文件和文件夹,并使自身成为“ BIOS”中的默认UEFI引导项。再次重复该过程,并根据需要重复多次,为每个文件夹指定一个不同的代表名称:

sudo cp -r /boot/efi/EFI/ubuntu /boot/efi/EFI/Server_12.04.1
cp -r /boot/efi/EFI/ubuntu /home/user/Server_12.04.1

第三部分:修改UEFI“ BIOS”中的UEFI条目。

在终端上,输入:

sudo efibootmgr

您应该获得如下输出:

BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0006,0007,0005
Boot0000* ubuntu
Boot0005* Hard Drive 
Boot0006* UEFI: MATSHITABD-MLT UJ240AS
Boot0007* CD/DVD Drive

的确是不言自明的。它应该反映您在BIOS引导列表中看到的内容。

阅读以下内容:

man efibootmgr

查看命令的作用,然后修改以下示例命令以添加和删除引导项。

首先,使用以下命令删除“ Boot0000 * ubuntu”行:

sudo efibootmgr -b 0000 -B

输出:

BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0006,0007,0005
Boot0005* Hard Drive 
Boot0006* UEFI: MATSHITABD-MLT UJ240AS
Boot0007* CD/DVD Drive

然后,我们将为三个操作系统添加一些条目。

操作系统#1:

sudo efibootmgr -c -g -d /dev/sda -p 1 -w -L "Ubuntu 12.04.1" -l \\EFI\\Ubuntu_12.04.1\\grubx64.efi

输出:

BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0006,0007,0005
Boot0005* Hard Drive 
Boot0006* UEFI: MATSHITABD-MLT UJ240AS
Boot0007* CD/DVD Drive 
Boot0000* Ubuntu 12.04.1

操作系统#2:

sudo efibootmgr -c -g -d /dev/sda -p 1 -w -L "Ubuntu Server 12.04.1" -l \\EFI\\Server_12.04.1\\grubx64.efi

输出:

BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0001,0000,0006,0007,0005
Boot0000* Ubuntu 12.04.1
Boot0005* Hard Drive 
Boot0006* UEFI: MATSHITABD-MLT UJ240AS
Boot0007* CD/DVD Drive 
Boot0001* Ubuntu Server 12.04.1

操作系统#3:

sudo efibootmgr -c -g -d /dev/sda -p 1 -w -L "Mythbuntu 12.04.1" -l \\EFI\\Mythbuntu_12.04.1\\grubx64.efi

输出:

BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0002,0001,0000,0006,0007,0005
Boot0000* Ubuntu 12.04.1
Boot0001* Ubuntu Server 12.04.1
Boot0005* Hard Drive 
Boot0006* UEFI: MATSHITABD-MLT UJ240AS
Boot0007* CD/DVD Drive 
Boot0002* Mythbuntu 12.04.1

改变启动顺序:

sudo efibootmgr -o 0000,0001,0002,0006,0007,0005

输出:

BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0001,0002,0006,0007,0005
Boot0000* Ubuntu 12.04.1
Boot0001* Ubuntu Server 12.04.1
Boot0002* Mythbuntu 12.04.1
Boot0005* Hard Drive 
Boot0006* UEFI: MATSHITABD-MLT UJ240AS
Boot0007* CD/DVD Drive

做完了!

涉及到一些非常奇怪的语法,尤其是在文件路径周围,但是如果您有很好的指南(我希望是这样),那么这很简单。

谢谢阅读。:)

https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#efibootmgr


谢谢,AbrahamVanHelpsing。我试图自我回答,但我认为这里实在是一个菜鸟。稍后,我将尝试将其整理。格式太糟糕了!现在是凌晨1:30,所以我暂时放弃!
Rich.T.

2

删除先前或其他操作系统的EFI引导加载程序文件的所有操作系统安装程序都严重损坏。Ubuntu过去曾遇到过此问题,但据说已在12.04版中修复。(我之所以说“应该”,是因为我已经看到了几条关于这些方面的问题的报告,这些报告使我认为该错误对于少数系统仍然可能存在。)也就是说,在执行以下操作之前备份您的EFI系统分区(ESP)。安装新的操作系统是有用的保险单。文件级备份应该足够了,因为EFI不依赖引导扇区中散布的代码。(不过,它确实依赖于分区的GUID,因此,如果某些内容删除了ESP并创建了一个新的ESP,则EFI的引导加载程序条目可能会停止工作。)

概括地说,对于您的配置类型,我建议创建一个ESP,/boot您认为可能需要的尽可能多的分区以及一个大型LVM分区。如果您希望与其他操作系统一起安装Linux发行版,请制作三个或四个大小不同的LVM分区,然后将它们合并为一个卷组。这样,您可以从卷组中拉出一个分区(逻辑卷)并将其专用于非Linux操作系统。非LVM /boot分区使您可以选择使用不了解LVM的引导加载程序(即,非GRUB2引导加载程序)。

当您安装新的操作系统时,它可能会默认安装自己的引导加载程序。在像您这样的复杂设置中,大多数时候这样做可能是错误的事情。要更正此问题,可以在其上安装首选启动加载程序的USB闪存驱动器或CD-R。在这种情况下,可以自动检测其他引导加载程序的工具(例如rEFIt或其派生的rEFInd)可能会很好地工作。(请注意,rEFIt网站上的二进制文件仅在Mac上有效;对于基于UEFI的PC,rEFInd是更安全的选择。)或者,此外,启动EFI Shell的方法可能会有所帮助,因为您可以在文件中四处移动,调整启动选项,并修复EFI Shell中的许多问题。许多EFI引导加载程序和引导管理器可以启动EFI Shell。(看到该Arch Linux Wiki上提供了一些EFI shell的下载链接。)rEFIt和rEFInd CD映像均包含EFI shell。


2

您无需使用EFI即可启动2 TB以上的磁盘。您只需使用GPT并在2Tb标记下创建一个1 MB的bios_grub分区。如果您发现EFI有问题,这可能对您更好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.