만자로 리눅스에서 2021년 여름 즈음부터 sudo update-grub 명령어가 정상적으로 실행되지 않는 문제를 겪고 있었는데, 시간을 내어 수리를 시도해 봤습니다.
▼ 아래의 스크린 샷에서 하나의 SSD에 윈도우10, 우분투 리눅스, 만자로 리눅스, 페도라 리눅스까지 설치한 것을 os-prober로 확인할 수 있는데, sudo update-grub 이라고 입력해보면 "/usr/share/grub/grub-mkconfig_lib: 291 줄: printf: '\$': 유효하지 않은 서식 문자"라는 에러 메세지를 뿜으면서 중단되었습니다.
▲ cat -n /usr/share/grub/grub-mkconfig_lib | grep 291 명령어로 291번째 줄을 출력해 봤는데, 구문이 이해되지 않았습니다.ㅠㅠ
▼ kate /usr/bin/update-grub 이라고 입력하여 update-grub 명령어의 내용을 봤는데, 우분투 리눅스의 그것과 동일해서 특별히 문제될 것이 없어 보였습니다.
※ 해결 방법 1
만자로 리눅스(Manjaro Linux) GRUB2 수리(Repair) 쉬운 방법
▲ 만자로 리눅스 설치용 USB를 제작하여 부팅한 다음 GRUB2를 Repair하는 식으로 해결할 수 있었습니다. 지속적으로 이용하기에는 부담스럽습니다.
※ 해결 방법 2
https://bbs.archlinux.org/viewtopic.php?id=267763
https://www.technopat.net/sosyal/konu/arch-linux-grub-mkconfig-arizasi.1584960/#post-12110027
▲ 위 링크의 글들을 참고하여 아래처럼 명령어를 입력하는 방법이 있었습니다.
▼ sudo LC_ALL=C /bin/bash -c "/usr/bin/grub-mkconfig -o /boot/grub/grub.cfg"
▲ 윈도우 10, 우분투 리눅스, 페도라 리눅스가 정상적으로 추가 되는 것을 확인했습니다.
링크의 글에서는 (앞으로 계속 이렇게 쓰기는 귀찮으니까) /usr/local/bin/ 경로에 grub-mkconfig 파일을 생성하고 내용을 sudo LC_ALL=C /bin/bash -c "/usr/bin/grub-mkconfig -o /boot/grub/grub.cfg" 명령어로 채우도록 권하는데, Arch Linux 기준의 권고사항이기 때문에 그대로 따라해야 될 지 고민이 됩니다.
※ 2022. 04. 13. 추가
스크린 샷의 에러 메세지에서 보였던 printf 구문의 옵션에 대하여 알고 싶어서 검색해 보았습니다.
https://man.archlinux.org/man/printf.1p
▲ Arch 리눅스 관련 문서를 보니, "LC_ALL"이라는 옵션이 보였습니다. 로케일을 설정하는 항목인 것 같습니다. 그렇다면 아래 스크린 샷처럼 입력해도 될 것 같아서 시도해 봤습니다.
▼ sudo LC_ALL=C update-grub
▲ 에러 없이 진행이 됩니다.
▲ 임시 방편으로 /usr/bin/update-grub 파일을 에디터로 열어
exec 앞에 "LC_ALL=C "라고 추가했습니다.
Locale이 한국어로 설정됐을 때 string 기호의 유니코드가 바뀌는 버그가 있는 것 같습니다.
(눈으로 보기에는 똑같은 \$이지만 유니코드가 다른 경우가 있거든요.
예 : https://www.fileformat.info/info/unicode/char/search.htm?q=%24&han=Y&preview=entity )
어떻게 해야 고칠 수 있는지 모르겠습니다. -_-;;
누구든지 알려주시면 감사하겠습니다.
※ 참고할만한 글
'도움이 되는 Tip > 리눅스&워드프레스' 카테고리의 다른 글
현재 사용중인 shell 확인 / 변경 방법(sh bash zsh 만자로 리눅스) (0) | 2022.04.12 |
---|---|
우분투, 만자로 리눅스 https 차단 SNI 감시 우회 방법(MTU값 변경) (3) | 2022.03.29 |
페도라 리눅스(Fedora) 크로미움(Chromium) 한영 전환 해결 후기 (2) | 2022.03.25 |