我可以使用 yum 安装新的内核包而不更新 grub.cfg 吗?

我可以使用 yum 安装新的内核包而不更新 grub.cfg 吗?

我有 49 个 rpm 软件包需要从本地目录安装。其中之一是kernel-4.9.135 因此,我想使用yumso all 依赖项都为我管理(而不是传递rpmrpm 文件列表)。

我还有一个非常定制的grub.cfg文件,我不想在此过程中触及它。

我检查了安装内核包时运行的脚本:

# rpm -qp --scripts ./kernel-4.9.135-1.x86_64.rpm 
postinstall scriptlet (using /bin/sh):
if [ -x /sbin/installkernel -a -r /boot/vmlinuz-4.9.135 -a -r /boot/System.map-4.9.135 ]; then
cp /boot/vmlinuz-4.9.135 /boot/.vmlinuz-4.9.135-rpm
cp /boot/System.map-4.9.135 /boot/.System.map-4.9.135-rpm
rm -f /boot/vmlinuz-4.9.135 /boot/System.map-4.9.135
/sbin/installkernel 4.9.135 /boot/.vmlinuz-4.9.135-rpm /boot/.System.map-4.9.135-rpm
rm -f /boot/.vmlinuz-4.9.135-rpm /boot/.System.map-4.9.135-rpm
fi
...

installkernel包含以下内容:

if [ -n "$cfgLoader" ] && [ -x /sbin/new-kernel-pkg ]; then
if [ -n "$(which dracut 2>/dev/null)" ]; then
    new-kernel-pkg --mkinitrd --dracut --host-only --depmod --install --kernel-name $KERNEL_NAME $KERNEL_VERSION
else
    new-kernel-pkg --mkinitrd --depmod --install --kernel-name $KERNEL_NAME $KERNEL_VERSION
fi
new-kernel-pkg --rpmposttrans --kernel-name $KERNEL_NAME $KERNEL_VERSION
fi

new-kernel-pkg用于grubby更新我的grub.cfg文件。

有没有什么方法可以告诉 rpmyum以及内核 rpm,grub.cfg在使用yum install它一次性安装所有软件包时不要做任何改变?

解决方法是将我的电流复制grub.cfg到一边,并在yum完成后将其复制回来,但我想我还是会问这个问题。

答案1

你的技巧grub.conf是有效的解决方案。您也可以应用以下方法之一:

  1. 下载内核 rpm 软件包yumdownloader并使用参数安装内核软件包,--noscripts以忽略通过运行prerun, postrun... 在配置软件包期间配置软件包的脚本。没有办法直接--noscripts告诉yum
  2. 如果您希望grub.conf在通过任何新内核安装后保持不变,yum您应该将grub.conf属于您的内核的当前菜单条目复制到/etc/grub.d/40_custom并从中取消设置 exec 权限 ( chmod a-x) /etc/grub.d/30_probe_os(此脚本扫描/boot目录中的新内核和 initramfs 文件并生成菜单条目grub.conf)。执行此步骤后,所有grub.conf运行生成的尝试都grub2-mkconfig将仅返回包含在自定义配置文件中的菜单条目/etc/grub.d/40_custom

相关内容