Endeavour OS는 사람(나)을 찢어...(2) : GRUB Trouble Shooting

김형주·2025년 3월 13일

Linux 트러블슈팅

목록 보기
2/2
post-thumbnail

💡 내용보단 방향성과 키워드를 참고하고 공식 문서를 애용하세요.

✏️ 사건의 발단

말보다 행동이 먼저 나가는 나지만, 컴퓨터 작업을 하며 특히 조심하게 되는 부분이 있다. 그것은 바로 OS 세팅할 때이다. 특히 특정 OS를 사용하다가 파티션 분할을 해야 하는 경우는 더 조심히 작업할 수 밖에 없다. 그렇게 조심히 작업한다고 생각했는데... grub으로 부팅할 때 윈도우가 뜨지 않는게 아닌가?!?!

간단해보이는 문제를 해결하기 위한 눈물의 똥꼬쇼고군분투가 시작된다!

✏️ 배운 내용

GRUB

GRUB은 여러 운영체제를 선택할 수 있도록 라우트 하는 역할을 한다. 우리가 컴퓨터의 전원 버튼을 누르면 아래와 같은 일들이 일어난다.

1️⃣ 노트북 전원 ON → UEFI 펌웨어 실행
2️⃣ UEFI가 EFI 시스템 파티션(/boot/efi)의 grubx64.efi 실행
3️⃣ GRUB이 실행되면서 /boot/grub/grub.cfg를 읽음
4️⃣ GRUB이 OS 목록(EndeavourOS, Windows 등)을 보여줌

이 때 /boot/efi 내부에는 Boot GRUB Lenovo Microsoft endeavouros 같은 폴더들이 존재한다.

GRUB은 3mb 내외로 굉장히 작지만 멀티부트, 펌웨어 업데이트 등을 위해 /boot/efi는 500mb로 설정된다.

GRUB 커스텀 세팅을 할려면 '/etc/grub.d/40_custom'을 수정한다.

GRUB - Windows를 인식하지 못함

1️⃣ sudo os-prober 명령어를 통해 Windows 인식. 이 때 /boot/efi 폴더 안에 Microsoft 폴더가 있어야 함.

2️⃣ 이 때 특정 GRUB version에 따라서 os-prober에서 Segmentation Fault가 뜨는 경우도 있다. 이 때는 GRUB을 downgrade하고 ignoreUpdate 시켜놓는 편의 마음이 편하다.

3️⃣ sudo efibootmgr로 EFI 부트 설정에 Windows Boot Manager가 존재하는지 확인 후 존재하지 않으면 아래와 같은 명령어로 수동 추가한다.
sudo efibootmgr -c -d /dev/nvme0n1 -p 1 -L "Windows Boot Manager" -l '\EFI\Microsoft\Boot\bootmgfw.efi'

4️⃣ /etc/default/grub 파일에 GRUB_DISABLE_OS_PROBER=false을 추가하고 sudo grub-mkconfig -o /boot/grub/grub.cfggrub.cfg를 업데이트한다.

5️⃣ 그 후 다시 한번 sudo os-prober

‼️ Windows 부트로더의 위치를 직접 /etc/grub.d/40_custom에 추가할 수도 있지만 예상치 못한 이슈가 생길 수 있으므로 가급적 지양한다.

menuentry "Windows 11" --class windows --class os {
    insmod part_gpt
    insmod fat
    set root=(hd0,gpt1)
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

GRUB이 사라짐

정말 운이 안좋게도 GRUB이 사라지는 경우가 있다. 이 때는 OS 부팅 USB로 부팅한 후 grub을 다시 세팅해주면 된다.(feat. chroot)

✏️ 결론

Arch 리눅스는 프로그램 버전 관리가 용이하고 AUR 같은 외부 사용자 저장소를 지원하는 큰 장점이 있는 만큼 Trouble Shooting을 감수해야 할 것 같다.

근데 GRUB은 pacman에서 공식으로 지원할텐데 왜...?

레퍼런스

GRUB Chat GPT 대화

profile
개발자 지망생의 ITlog

0개의 댓글