update-grub의 grub.cfg에 구문 오류가 있습니다.

update-grub의 grub.cfg에 구문 오류가 있습니다.

update-grubUbuntu 20.04를 실행 중인데 명령을 실행하면 다음 오류가 발생합니다.

root@ubuntu:/# update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Création du fichier de configuration GRUB…
Image Linux trouvée : /boot/vmlinuz-5.8.0-25-generic
Image mémoire initiale trouvée : /boot/initrd.img-5.8.0-25-generic
Image Linux trouvée : /boot/vmlinuz-5.4.0-53-generic
CentOS Linux 8 (Core) trouvé sur /dev/sdb9
Image Linux trouvée : /boot/vmlinuz-5.8.0-25-generic
Image mémoire initiale trouvée : /boot/initrd.img-5.8.0-25-generic
Image Linux trouvée : /boot/vmlinuz-5.4.0-53-generic
CentOS Linux 8 (Core) trouvé sur /dev/sdb9
Image Linux trouvée : /boot/vmlinuz-5.8.0-25-generic
Image mémoire initiale trouvée : /boot/initrd.img-5.8.0-25-generic
Image Linux trouvée : /boot/vmlinuz-5.4.0-53-generic
Image Linux trouvée : /boot/vmlinuz-5.8.0-25-generic
Image mémoire initiale trouvée : /boot/initrd.img-5.8.0-25-generic
Image Linux trouvée : /boot/vmlinuz-5.4.0-53-generic
CentOS Linux 8 (Core) trouvé sur /dev/sdb9
Image Linux trouvée : /boot/vmlinuz-5.8.0-25-generic
Image mémoire initiale trouvée : /boot/initrd.img-5.8.0-25-generic
Image Linux trouvée : /boot/vmlinuz-5.4.0-53-generic
Adding boot menu entry for UEFI Firmware Settings
erreur : syntax error.
erreur : Incorrect command.
erreur : syntax error.
erreur : Incorrect command.
erreur : syntax error.
Erreur de syntaxe à la ligne 159
Des erreurs de syntaxe sont détectées dans le fichier de configuration
de GRUB. Veuillez vérifier qu'il n'y a pas d'erreur dans les fichiers
/etc/default/grub et /etc/grub.d/*. Sinon veuillez signaler un bogue
en joignant le fichier /boot/grub/grub.cfg.new.

제안된 대로 159번째 줄에서 파일을 확인했는데 /boot/grub/grub.cfg.new다음은 해당 줄과 그 주변에 해당하는 코드 조각입니다.

152 ### END /etc/grub.d/31_linux_xen ###
153 
154 ### BEGIN /etc/grub.d/34_memtest86+ ###
155 ### END /etc/grub.d/34_memtest86+ ###
156 
157 ### BEGIN /etc/grub.d/35_os-prober_proxy ###
158 submenu "Options avancées pour Ubuntu"{
159 function gfxmode {
160         set gfxpayload="${1}"
161         if [ "${1}" = "keep" ]; then
162                 set vt_handoff=vt.handoff=7
163         else
164                 set vt_handoff=
165         fi
166 }
167 if [ "${recordfail}" != 1 ]; then
168   if [ -e ${prefix}/gfxblacklist.txt ]; then
169     if hwmatch ${prefix}/gfxblacklist.txt 3; then
170       if [ ${match} = 0 ]; then
171         set linux_gfx_mode=keep
172       else
173         set linux_gfx_mode=text
174       fi
175     else
176       set linux_gfx_mode=text
177     fi
178   else
179     set linux_gfx_mode=keep
180   fi
181 else
182   set linux_gfx_mode=text
183 fi
184 export linux_gfx_mode

158번 줄에 "{"가 닫히지 않는 문제가 있는 것 같지만 submenu "Options avancées pour Ubuntu"{그 출처를 찾을 수 없습니다...

나는 시동 복구를 시도했습니다 (이 답변에서 알 수 있듯이)GRUB 오류: 구문 오류입니다. 오류: 잘못된 명령) 그러나 시작하라는 첫 번째 명령은 다음과 같습니다. sudo chroot "/mnt/boot-sav/mapper/isw_cbgbbifgbg_Volume1p2" dpkg --configure -a 동일한 구문 오류 문제가 발생했습니다.

답변1

명령 update-grub이 실행된 후 grub-mkconfig -o /boot/grub/grub.cfg "$@"디렉토리의 스크립트가 실행됩니다 /etc/grub.d/. grub.cfg다음과 같은 주석 라인과 함께 이러한 스크립트가 생성하는 것

### BEGIN /etc/grub.d/35_os-prober_proxy ###

grub.cfg파일의 각 섹션을 담당하는 스크립트를 나타냅니다 .

귀하의 경우 해당 /etc/grub.d/35_os-prober_proxy스크립트와 디렉토리에서 바로 뒤에 나오는 스크립트(기본 ASCII 영숫자 정렬 순서)를 연구해야 합니다.

반면에 내 Debian 10 시스템에서 이 줄은 일반 Linux 부팅 항목을 생성하는 function gfxmode {출력의 일부 이며 Xen 스타일 가상화(설치된 경우)에 대한 부팅 항목을 생성하는 또 다른 스크립트가 있습니다. , 그런 다음 다른 운영 체제에 대한 시작 항목을 검색하고 추가합니다. 분명히 우분투는 일을 조금 다르게 하지만, 일부 부품이 어떤 방식으로든 잘못 생산되었을 수도 있다는 의심을 갖게 합니다./etc/grub.d/10_linux20_linux_xen30_os-probergrub.cfg

답변2

그리고

  • 데비 앤트릭시
  • 그럽 커스터마이저 5.2.3

달리기:

sudo cp /boot/grub/grub.cfg.new /. # put your home path here
sudo rm /boot/grub/grub.cfg.new
grub-customizer 

그런 다음 복원 버튼(오른쪽 상단)을 누르고 적용하십시오.

관련 정보