CentOS 7 升级内核后卡在 grub 提示符下

CentOS 7 升级内核后卡在 grub 提示符下

我尝试使用 YUM 升级内核,当我运行时

[root@AFIBAMBOO bin]# grub2-mkconfig -o /boot/grub2/grub.cfg
No path or device is specified. 
Usage: grub2-probe [OPTION...] [OPTION]... [PATH|DEVICE] 
Try 'grub2-probe --help' or 'grub2-probe --usage' for more information.
No path or device is specified. Usage: grub2-probe [OPTION...] [OPTION]... [PATH|DEVICE] 
Try 'grub2-probe --help' or 'grub2-probe --usage' for more information. 
No path or device is specified. Usage: grub2-probe [OPTION...] [OPTION]... [PATH|DEVICE] 
Try 'grub2-probe --help' or 'grub2-probe --usage' for more information.

答案1

顺便提一句

问题已经是在 AskUbuntu S&E 中解决它介绍了grub2-probe因为grub.cfg内核更新脚本被破坏后。

检查grub.cfg丢失的缩进并重复grub2-mkconfig


通过yum更新内核的详细说明:

CentOS 通过 RPM 包分发内核并将其存储在自己的存储库中。

当您使用存储库时,您可以安装/删除/重新安装... RPM 软件包。

存放内核的RPM包有后安装后转运执行在 CentOS 中采用新内核的所有必要步骤的部分。此步骤包括几个重要的事情,例如初始化文件系统生成,在引导加载程序中设置新条目...

让我们看看3.10.0-957.el7.x86_64.rpm安装后部分:

后安装:

/usr/sbin/new-kernel-pkg --package kernel --install 3.10.0-957.el7.x86_64 || exit $?

后转运:

if [ -x /usr/sbin/weak-modules ]
then
    /usr/sbin/weak-modules --add-kernel 3.10.0-957.el7.x86_64 || exit $?
fi
/usr/sbin/new-kernel-pkg --package kernel --mkinitrd --dracut --depmod --update 3.10.0-957.el7.x86_64
rc=$?
if [ $rc != 0 ]; then
    /usr/sbin/new-kernel-pkg --remove 3.10.0-957.el7.x86_64
    ERROR_MSG="ERROR: installing kernel-3.10.0-957.el7.x86_64: no space left for creating initramfs. Clean up /boot partition and re-run '/usr/sbin/new-kernel-pkg --package kernel --mkinitrd --dracut --depmod --install 3.10.0-957.el7.x86_64'"
    if [ -e /usr/bin/logger ]; then
        /usr/bin/logger -p syslog.warn "$ERROR_MSG"
    elif [ -e /usr/bin/cat ]; then
        /usr/bin/cat "$ERROR_MSG" > /dev/kmsg
    fi
    echo "$ERROR_MSG"
    exit $rc
fi
/usr/sbin/new-kernel-pkg --package kernel --rpmposttrans 3.10.0-957.el7.x86_64 || exit $?

这些安装后脚本使用new-kernel-pkg作为项目一部分的脚本grubbyman 8 新内核 prkg写道:

描述

new-kernel-pkg 是一个用于打包的工具,用于自动安装新内核,包括创建初始 ram 文件系统映像、更新引导加载程序配置以及其他相关任务

new-kernel-pkg脚本调用grubby(它是grubby项目内的程序)来更新引导加载程序配置。从男人 8 肮脏:

描述

grubby 是一个命令行工具,用于更新和显示有关 grub、lilo、elilo (ia64)、yaboot (powerpc) 和 zipl (s390) 引导加载程序的配置文件的信息。它主要设计用于安装新内核并需要查找有关当前引导环境的信息的脚本。

new-kernel-pkg从脚本调用 grubby 的片段:

ARGS="--grub2 -c $grub2Config --add-kernel=$kernelImage $INITRD \
                --copy-default --title \"$title\$debugtitle\" \
                ${mbkernel:+--add-multiboot=\"$mbkernel\"} \
                ${mbargs:+--mbargs=\"$mbargs\"} \
                --args=\"root=$rootdevice $kernargs \$debugargs\" \
                --remove-kernel=\"TITLE=$title\$debugtitle\""
        rungrubby ${ARGS} $makedefault

如果您需要了解有关如何构建引导加载程序配置的更多具体信息,您可以使用new-kernel-pkg详细模式(选项)运行(涉及必要的内核版本和参数)-v


grub2-mkconfig因此,内核更新后无需手动调用。

相关内容