커널 업그레이드 후 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프로젝트의 일부인 스크립트를 사용합니다 grubby.man 8 새로운 커널 prkg썼다:

설명하다

new-kernel-pkg는 초기 램 파일 시스템 이미지 생성, 부트로더 구성 업데이트 및 기타 관련 작업을 포함하여 새 커널 설치를 자동화하기 위한 패키징 도구입니다.

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따라서 커널 업데이트 후에 수동으로 호출할 필요가 없습니다.

관련 정보