カーネルのアップグレード後、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ブートローダー構成を更新するためのスクリプト呼び出しgrubbygrubbyプロジェクト内のプログラム)。 ~から男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したがって、カーネルの更新後に手動で呼び出す必要はありません。

関連情報