当grub.conf被修改时,initramfs映像文件是否需要更新?

我试图解决一个涉及传统grub(0.97),LVM2和dracut的linux启动configuration问题,并试图消除一些红鲱鱼。

我的试错过程如下:

  1. 修改grub.conf
  2. 通过grub shell将grub.conf安装到MBR中
  3. 重启
  4. 内核恐慌

为了消除#4,我是否缺less一个需要更新initramfs映像的步骤?

initramfs映像包含哪些与启动过程中挂载的文件系统有关的内容?

我试图找出如何通过在备用LVM分区上放置一个新的操作系统,然后修改grub.conf / menu.lst以从备用分区启动,以最小的停机时间对脚本进行批量升级。

操作系统基于CentOS 6,我们使用Anaconda安装程序 – 出于某种原因,Anaconda创build一个/boot/grub/grub.conf文件,并将其链接到/boot/grub/menu.lst

你提到grub.conf和Grub 0.97。 Grub 0.97不使用grub.conf 。 它使用menu.lst 。 这有点听起来像你的系统上安装了两个二进制文件,你有混乱的东西了一点。

在更改grub.conf或menu.list时, 不必重新构buildinitramfs / initrd文件 。 两者之间几乎没有任何关系,至less不是我见过的任何发行版。

grub文件必须存在于initramfs之外,因为在ramdisk被加载之前使用它们。 Grub调用内核并将其指向虚拟盘映像的位置。 如果你在grub菜单中添加另一个选项来启动另一个操作系统,你不需要对你的initramfs做任何事情。

如果你确实改变了你的系统启动方式,那么你可能需要修改你的grubconfiguration和其他configuration,这可能需要你更新你的initramfs。 所以,你可能需要同时更新,但是你不需要更新initramfs,因为你更新了grub,或者反过来。

必须有一个启动分区,它保存

  • grub.conf中,
  • 要加载的内核,
  • initramfs映像,
  • 一些grub组件(通常安装在/ boot / grub中)。

这个引导分区必须可以被grub读取,所以它不能在LVM中。 在启动磁盘的前端创build一个单独的小主分区是一个很好的做法(我通常使用100MB,通常挂载为/ boot)。

initramfs中的内容以及如何configuration,取决于您的实现。 通常,您的Linux发行版包含特定的initramfs实现(所有这一切取决于您使用的发行版)。

initramfs必须能够挂载根文件系统,为此,它将需要内核模块来访问该磁盘,分区和文件系统,除非它们已经被编译到内核中。 它还需要一些方法来指定您select的根文件系统,以及要使用的安装选项。 某些实现必须在更改某些设置,select不同的根文件系统或使用不同的安装选项时更新initramfs映像。 但是,通过从内核命令行读取必要的参数,可以编写一个不需要任何更新的initramfs实现,除非更改/升级/重新编译内核和模块。 所以要知道你的initramfs实现是如何工作的,你必须阅读里面的脚本,或者阅读你的发行版特有的文档。