我最近购买了两个SSD(我的第一个),并将把我的系统移到那里。我正在使用MD 1+ LVM。我还没有决定是要设置一个新的扩展安装,还是将jessie安装复制到新磁盘(如果可能的话)。
我想做新的安装UEFI/GPT。我已经在新磁盘上进行了测试扩展安装,但考虑将我当前的jessie安装( /、/home和/boot文件系统)复制到新安装中,但不涉及EFI系统分区。问题是这样做是否有效。非EFI/GPT和EFI/GPT是否兼容?
我对GRUB2工作原理的粗略了解是,“正常”的BIOS设置通常在MBR中有第一阶段的GRUB,在/boot分区中通常有第二阶段。而在UEFI/GPT设置中,大概都在ESP中。
发布于 2017-06-20 19:03:30
复制应该相对容易;Linux安装(几乎完全)只是文件。最大的(只有?)异常是BIOS的引导加载程序;它被安装到主引导记录和第一个分区之间的扇区。UEFI实际上消除了该异常;引导加载程序现在也只是一个文件。
BIOS引导工作(简单地说),BIOS从磁盘(MBR)读取第一个扇区,并从该扇区执行代码。该代码具有BIOS函数来读取它可用的扇区,在grub的情况下,它从MBR和第一个分区之间的剩余扇区中读取其余的部分。这需要提供足够的代码让GRUB理解文件系统,这样它就可以从/boot读取配置和其馀部分。它会这样做,然后从那里读取内核和initramfs。然后启动内核。
UEFI引导工作(简单地说),固件可以理解分区(至少是GPT,可能还包括DOS )和文件系统(至少是FAT)。它有某种类型的NVRAM ( EFI变量)来存储要运行的命令-think命令(UEFI包括一个shell)。也就是说,路径(磁盘、分区、文件系统上的路径)和参数。它运行那个命令。在Linux的情况下,这可能是:
EFI/debian/grubx64.efi)或其他几个(refind、systemd等)命令可以完全访问UEFI堆栈,包括读取文件、网络等。在GRUB的情况下,它包括自己的文件系统支持,用于ext4、mdraid、LVM等。
最终,从您的Linux安装来看,这意味着它所看到的不同之处在于:它不是在磁盘开始时安装在几个特殊扇区中,而是安装在/boot/efi/中的一个文件中。请注意,这是一个不同的grub构建;在Debian下,它是grub amd64 64(或-ia32),而不是grub。您需要切换出已安装的grub包。
我希望您可能会遇到的唯一一件事是,操作EFI变量通常要求您已经通过UEFI引导。所以很难让这个grub安装开始工作。有几个解决办法:
/boot/efi/EFI/debian/grubx64.efi到/boot/efi/EFI/BOOT/bootx64.efi --这是UEFI的正式回退路径(至少对于64位计算机是这样的)。这可能足以让它显示在固件启动菜单中。在完成此操作之后,您复制/转换的系统与最初安装在UEFI中的系统之间不应该有什么不同。
发布于 2017-07-18 11:12:37
@derobert的答案涵盖了许多不同的选项。我最后使用了一些类似于他3号的东西,但我会详细介绍这方面的内容。
按照将逻辑卷从一个卷组移动到另一个卷组中描述的方法,我使用BIOS将包含现有Debian 9系统的一些逻辑卷复制到了我购买的一些新磁盘上。我还从零开始在这些磁盘上安装了Debian 9。
接下来的问题是如何在这些磁盘上启动我的系统的副本。正如所发生的那样,我能够从新的/ from -scratch/UEFI安装中使用GRUB启动菜单。当我在新安装的GRUB菜单条目上单击e时,我能够使用表单(lvm/debian-root)将GRUB脚本中的设备名称更改为复制的LV,其中debian是卷组的名称,root是逻辑卷的名称。这样,我就能够引导到现有系统的副本中。
然而,我仍然必须使系统可启动。在@debrobert的帮助下,我做了以下工作:
grub-pc切换到grub-efi/boot/efi。grubx64.efi中安装了EFI可执行文件/boot/efi/EFI/origdebian。新安装在目录grubx64.efi中已经有一个可执行的/boot/efi/EFI/debian。EFI固件能够在固件启动菜单中看到一个条目origdebian。BOOTX64.EFI中安装了EFI可执行文件/boot/efi/EFI/BOOT。这就是所谓的“可移动媒体路径”。作为在Debian Wiki中描述,所有固件实现都必须使用此路径才能运行OS安装程序。
因此,这条路径的作用是作为暂时的退路。系统可引导后,就可以删除它。
https://unix.stackexchange.com/questions/371946
复制相似问题