Debian 11에서 update-grub이 실패합니다.

Debian 11에서 update-grub이 실패합니다.

Debian 11 VM에서 GRUB 구성을 업데이트하려고 합니다. 명령 을 사용하고 있었지만 update-grub더 이상 작동하지 않는 것 같습니다. 나는 또한 grub-mkconfig > /boot/grub/grub.cfg명령을 시도했지만 그것도 실패했습니다.

두 명령 모두 다음 오류와 함께 실패합니다.

/usr/sbin/grub-mkconfig: 38: /etc/default/grub.d/grub.cfg: function: not found

파일 grub.cfg은 에 있습니다 /boot/grub/grub.cfg.

38행을 보면 grub-mkconfig다음과 같은 행이 표시됩니다.

grub_mkconfig_dir="${sysconfdir}"/grub.d

sysconf 디렉토리는 /etc/.

나는 그것이 작동해야 한다고 제안하는 매뉴얼 페이지를 보았습니다 grub-mkconfig.

뭐가 문제 야?

답변1

init-select.cfg내 디렉토리에는 몇 가지 설명이 포함된 더미 파일만 있고 /etc/default/grub.d/그게 전부입니다(Debian 11).

grub.cfg이 디렉토리에는 이 없어야 합니다. 실수로 달렸나요 grub-mkconfig -o /etc/default/grub.d/grub.cfg?

파일을 삭제하면 sudo update-grub다시 작동할 것입니다.

답변2

이 문제를 해결하는 쉬운 방법은 grub을 다시 설치하는 것입니다.

Debian iso 파일을 VM에 연결하고 시작합니다. 일단 손상된 시스템으로 chroot를 완료하고 grub을 다시 설치하십시오.

루트 디렉터리를 변경하고 grub을 다시 설치하는 방법은 다음과 같습니다. ( sdaXY루트 파티션으로 교체하세요.)

mkdir -p /tmp/mychroot
mount -t ext4 /dev/sdaXY /tmp/mychroot
mount --bind /proc /tmp/mychroot/proc
mount --bind /dev /tmp/mychroot/dev
mount --bind /sys /tmp/mychroot/sys
update-grub
grub-install /dev/sdX
exit

마운트된 파티션을 마운트 해제하고 재부팅합니다.

답변3

파일이 /boot/grub/grub.cfg손상되었습니다. 이 파일의 38번째 줄에 다음과 같은 텍스트가 있어야 합니다.

38  function savedefault {
40    if [ -z "${boot_once}" ]; then
41      saved_entry="${chosen}"
42      save_env saved_entry
43    fi
44  }

Ubuntu Exchange의 답변입니다., 내가 잘못 이해했네

/usr/sbin/grub-mkconfig: 38: /etc/default/grub.d/grub.cfg: function: not found

너 한테 말 하잖아grub-mkconfig 그것을 찾을 수 없었다파일의 38번째 라인에 있는 함수/etc/default/grub.d/grub.cfg

가상 Debian 11x64 머신을 시작하고 /etc/default/grub.d/grub.cfg.이 사본.

관련 정보