从 EFI 转换为 BIOS 启动模式

从 EFI 转换为 BIOS 启动模式

我有一台三星笔记本 NP900X4C,上面安装了 LUKS 加密。系统以 UEFI 模式启动。

问题是三星笔记本内核模块在 UEFI 模式下被禁用,因此我缺少键盘背光等功能。

是否可以修改当前安装以便它可以在 BIOS 模式下启动?

基本步骤是将磁盘从 GPT 转换为 MBR 并从实时 CD 安装 grub,这是否正确?使用 LUKS 分区可以实现吗?

答案1

我自己找到了确切的方法。罗德·史密斯是正确的,它比我想象的要容易。

如果其他人需要的话,这里是解决方案:

原始分区布局:

  • /dev/sda1 (EFI 分区)
  • /dev/sda2 (启动分区)
  • /dev/sda3 (LVM2/LUKS 加密的根目录和交换文件)

转换为 BIOS 启动:

  1. 我删除了 EFI 分区并创建了一个带有bios_grub标志的新分区。
  2. 使用本教程我挂载了加密文件系统,chroot 到其中并安装了 GRUB。
  3. 从 中删除 EFI 分区/etc/fstab

答案2

这是可能的,而且比您想象的要容易。Linux 可以在 BIOS 模式下从 GPT 磁盘顺利启动,因此无需进行 MBR 到 GPT 的转换。如果幸运的话,您需要做的就是在磁盘上安装 BIOS 模式的引导加载程序(GRUB、LILO 或 SYSLINUX)。不过,有三个注意事项:

  • 我从未使用过 LUKS,因此我不确定这会有什么影响。我预计不会有任何问题,但这可能是我缺乏经验。
  • 一些 EFI 对在 BIOS 模式下启动有特殊的要求。最常见的情况是,有些 EFI 只有在 MBR 分区上看到启动/活动标志时才会在 BIOS 模式下启动,而 GPT 磁盘上通常没有这个标志。您可以使用旧版本fdisk(缺少 GPT 支持,最近才添加)来设置启动/活动标志,或者使用新版本parted在整个磁盘上设置标志(我不记得它的名字)来解决此问题。如果幸运的话,您不需要处理这个问题。请参阅这一页有关该问题的更多信息。
  • 如果计算机与 Windows 双重启动,则将其转换为 BIOS 模式启动可能会更加棘手。在这种情况下,安装重新索引作为启动管理器。rEFInd 随后可以在 EFI 模式下启动 Windows 并启动 BIOS 模式 GRUB(或您最终使用的任何模式)。不过,要做到这一点,您需要编辑refind.conf:取消注释该scanfor行并确保它hdbios是扫描的项目之一。

答案3

将 Ubuntu 转换为 BIOS 模式

笔记:仅使用此过程将 UEFI 模式的 Ubuntu 安装转换为以 BIOS/CSM/旧模式启动。如果某些硬件在 UEFI 模式下无法正常工作,则可能需要进行此类转换。(显卡是常见的问题来源。)当 Windows 以 UEFI 模式启动时,转换为以 BIOS/CSM/旧模式启动会使启动过程更加尴尬——您需要使用计算机的内置启动管理器在操作系统之间切换,而某些计算机的启动管理器非常差,因此这可能无法实现。

  • 如果 Ubuntu 安装在 GPT 磁盘上(您可以通过命令检查sudo parted -l),请使用 GParted 分区编辑器在其磁盘的启动位置创建 BIOS-Boot 分区(1MB、未格式化的文件系统、bios_grub 标志)。
  • 开始启动修复,然后选择高级选项->GRUB 位置标签。
  • 取消选中单独的 /boot/efi 分区选项

取消选中单独的 /boot/efi 分区选项

  • 点击申请右下角的按钮。
  • 设置 BIOS,使其以传统模式启动硬盘。通常,此设置位于引导标签 →引导顺序BIOS 部分。

来源:修订自:UEFI - 社区帮助 Wiki

答案4

我知道这已经很老了(抱歉,我已经用烂了),但我没有找到适合我的 Ubuntu 16.04 的指南,而且我对 @Lukas S 的答案感到很困惑,还有官方 Ubuntu UEFI 至 BIOS 指南(@karel 的回答)。将其发布在这里而不是编辑 Ubuntu wiki 指南,因为这个 askubuntu 问题在所有搜索引擎中都会更早出现。

事实上,我很惊讶这 3 个指南中的任何一个都能按原样为任何人工作,因为 UEFI 系统(通常)没有grub-install工作所需的 grub-i386-pc 文件,所以它们在这一步失败了。引导修复在尝试修复时也会失败(显示“grub-pc 已取消”)。这些指南的作者可能以某种方式拥有这些文件,也许是因为以前的努力。

我的设置是一个典型的 EFI 系统,实际上是一个旧的 Ubuntu 16.04:

  • /dev/sda1=fat32 (esp,efi) 分区
  • /dev/sda2=Linux 系统
  • /dev/sda3=swap(不重要,你不必有这个)
  • sda2 上的 Linux 系统缺少 /usr/lib/grub/i386-pc 文件夹,其中包含 BIOS 启动和 grub-install 所需的模块

我的磁盘也是 GPT,这完全没问题 - 无需将 gpt 转换为 msdos。

成功从 UEFI 转换为 BIOS 所需执行的步骤:

  • 删除 sda1 分区

  • 重新创建一个未格式化但带有 bios_grub 标志的文件。笔记:Gparted 不太稳定,当我在创建它时选择“未格式化”时,它给了我一个 fat32 格式(我grub-install不喜欢)。我必须右键单击“格式化为”并选择“清除”,然后应用,然后添加“bios_grub”标志。

  • 以 BIOS 模式启动(重要!)来自 Ubuntu Live CD。我使用了 Xubuntu 20.04.3。以 BIOS 模式启动很重要,因为这将为您提供稍后所需的 grub-i386-pc 文件。

  • mkdir /mnt/sda2

  • mount /dev/sda2 /mnt/sda2

  • for f in sys dev proc; do mount -o bind /$f /mnt/sda2/$f; done

  • rsync -a /usr/lib/grub/i386-pc /mnt/sda2/usr/lib/grub/(重要!i386-pc 之后没有 /)

  • chroot /mnt/sda2 /bin/bash

  • grub-install /dev/sda

完成。重新启动后,系统现在从硬盘以 BIOS 模式启动。

我的 16.04 现在在 /usr/lib/grub 中有了较新的 grub-pc-i386 文件,但它没有受到影响。很高兴知道此过程可以跨发行版运行。无论如何,我打算升级到 20.04。

附言:某些人可能还应该编辑官方 Ubuntu wiki...

相关内容