是否可以将 Grub2 与 Grub legacy 一起安装?

Posted

技术标签:

【中文标题】是否可以将 Grub2 与 Grub legacy 一起安装?【英文标题】:Is it possible to install Grub2 alongside Grub legacy? 【发布时间】:2016-10-24 17:53:44 【问题描述】:

我正在尝试构建 Nautilus AeroKernel,它需要来自 grub2 的命令 grub-mkrescue。可悲的是,我使用的系统仍在运行 grub 0.97。 (我有 root 但其他人使用这个系统。)我已经下载了 grub 2.00 tar,make compile 运行良好。但是,它确实没有通过大多数测试。

此时我尝试运行./grub-mkrescue,但失败了

./grub-mkrescue: line 61: /usr/local/share/grub/grub-mkconfig_lib: No such file or directory

我知道下一步是做一个make install,但我不想妨碍已经安装的东西。

有什么办法让我只运行这个命令吗?或者也许做一个不会伤害其他任何东西的安装?我不想升级系统的 grub 并搞砸启动过程。

【问题讨论】:

【参考方案1】:

你的问题有点宽泛,因为一个成功的答案很大程度上取决于你想采取的方法。您可以简单地将 GRUB Legacy Boot Loader 替换为 GRUB2 - 大多数系统用户不会知道正在使用或关心的引导加载程序。这种方法确实需要您能够配置 GRUB2,以便它可以引导他们可能使用的任何操作系统。 GRUB2 在很大程度上是自我配置的,但您必须对它有足够的了解才能确保所有正在使用的操作系统都能正常工作(如果不能正常工作,请修复配置)。

另一种方法是坚持使用 GRUB Legacy 并简单地使用与 GRUB2 的 grub-mkrescue 命令等效的命令。这有一个风险,即支持 AeroKernel 的 GRUB2 功能在 GRUB Legacy 中不可用(例如从 ISO 映像引导)。它的优点是(如果它支持您的需求,不需要对引导加载程序进行任何更改)。

第三种方法是安装 GRUB2 包,而不更改引导加载程序。我确信有一个配置选项允许在不更改引导代码的情况下安装 GRUB2 的所有 Linux 命令(grub-mkrescue 就是其中之一)。这里的风险是 GRUB Legacy 的某些 Linux 命令将与 GRUB2 的命令重叠(按名称),并且要么不会安装,要么将替换 GRUB Legacy 版本。支持 GRUB2 的库也可能需要删除支持 GRUB Legacy 的库 - 这会使 GRUB Legacy 的 Linux 命令无法运行。您可以通过查阅正在使用的操作系统的软件包存储库(您没有提及那是什么)来了解这两个引导加载程序在同一系统中工作(在它们的 Linux 可执行文件中)的兼容性如何。如果 GRUB2 包与 GRUB Legacy 包冲突,那么您可能遇到了这些命令重叠问题之一或库不兼容。

按照您的方式从源头工作,将大部分工作留给您。所以我的建议是选择一种解决问题的方法并提出与该方法相关的问题。

您还可以为支持 GRUB2 的新操作系统创建一个单独的分区(保持原始操作系统不变)。您甚至可以在文件中创建此类分区的映像并挂载它(优点是您不必更改磁盘分区)。最重要的是,有很多方法可以让它发挥作用,所以你提出的问题的答案是“是的,但你如何做到这一点取决于你采取的方法”。

【讨论】:

以上是关于是否可以将 Grub2 与 Grub legacy 一起安装?的主要内容,如果未能解决你的问题,请参考以下文章

grub2故障举例及修复

grub2基础教程-修订版

给GRUB加密

fwupdate-efi 与 grub2-common 冲突

grub识别u盘

Linux与Windows 10用grub引导教程