我正在尝试构建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并搞砸启动过程。
答案 0 :(得分:0)
你的问题有点宽泛,因为成功的答案很大程度上取决于你想采取的方法。您可以简单地用GRUB2替换GRUB Legacy Boot Loader - 系统的大多数用户将不知道正在使用或正在使用的Boot loader。这种方法确实要求您能够配置GRUB2,以便它可以引导它们可能正在使用的任何操作系统。 GRUB2在很大程度上是自我配置的,但您必须对此有足够的了解,以确保所有正在使用的操作系统都能正常工作(如果他们不这样做,则可以修复配置)。
另一种方法是坚持使用GRUB Legacy并简单地使用相当于GRUB2'的grub-mkrescue命令。这可能会导致GRUB Legacy中无法使用支持AeroKernel的GRUB2的功能(例如从ISO映像启动)。它具有优势(如果它支持您的需要,不需要在引导加载程序中进行任何更改)。
第三种方法是安装GRUB2包,而不更改引导加载程序。我确定有一个配置选项允许在不更改引导代码的情况下安装GRUB2的所有Linux命令(grub-mkrescue就是其中之一)。这里的风险是GRUB Legacy的某些Linux命令将与GRUB2的命令重叠(名称),或者不会安装或将替换GRUB Legacy版本。支持GRUB2的库也可能需要删除支持GRUB Legacy的库 - 这将使GRUB Legacy的Linux命令无法正常运行。通过查阅正在使用的操作系统的软件包存储库,您可以了解两个引导加载程序的兼容性,在同一系统中工作(在Linux可执行文件中)(您不会提及它是什么)。如果GRUB2包与GRUB Legacy包冲突,那么您可能遇到其中一个命令重叠问题或库不兼容。
您似乎从源头开始工作,将大部分工作留给您。因此,我的建议是选择一种方法来解决问题并提出与该方法相关的问题。
您还可以为支持GRUB2的新操作系统创建单独的分区(保持原始操作系统不受影响)。您甚至可以在文件中创建此类分区的映像并进行安装(有利于您不必更改磁盘分区)。但最重要的是有很多方法可以使它发挥作用,所以你提出的问题的答案是"是的,但你如何做到这取决于你采取的方法"。