윈도우와 우분투 리눅스(Ubuntu Linux) 듀얼부팅 환경을 유지하다보면 GRUB2가 깨지는 경우가 제법 많습니다.

저는 UEFI 환경에서 윈도우10+우분투 20.04 LTS+만자로 KDE+페도라 리눅스를 하나의 SSD에 설치한 상황이고, 만자로 리눅스를 메인으로 쓰고 있습니다.

 

▼ 윈도우10에서 BitLocker를 활성화/해제하는 과정 중에 만자로 리눅스용 GRUB2가 깨져서 grub rescue> 메세지가 뜨고 부팅이 되지 않았습니다. ( error: unknown filesystem. Entering rescue mode... grub rescue> )

 

▼ 만자로 리눅스 설치용 USB를 이용하여 GRUB2를 재설치하는 방법을 알고 있는데, 이번에는 리눅스 설치용 USB 없이 해결하는 방법을 익혀 보고 싶었습니다. 그래서 grub rescue> 명령어 내에서 부팅 불가 문제를 해결한 과정을 정리해 봅니다.

만자로 리눅스(Manjaro Linux) GRUB2 수리(Repair) 쉬운 방법

우분투 먼저 설치, 윈도우 나중에 설치시 GRUB2 수리(듀얼부팅 복구)

 

▼ 아래의 명령어를 입력해 봤습니다.

ls

(hd0,gpt1) (hd0,gpt2) (hd0,gpt3) ... 이렇게 (물리디스크 번호,파티션 번호) 형식으로 목록이 보였습니다.

아래의 형식대로 입력하여 복구할 리눅스 파티션의 단서를 찾아 나갔습니다.

ls (물리디스크 번호,파티션 번호)/boot/grub

(물리디스크,파티션 번호는 (hd0,gpt1) 처럼 써도 되고 (hd0,1) 처럼 써도 됩니다.)

▲ 위의 스크린 샷에서는 (hd0,gpt9) (hd0,gpt11) (hd0,gpt12) 파티션에 각각 리눅스가 설치되어 있을 것입니다만, 여러분께서는 대부분 윈도우+리눅스 듀얼부팅 정도만 구축하셨을 것이므로 grub.cfg 파일이 있는 파티션이 하나만 보일 겁니다. (ntfs 파티션은 error: unknown filesystem. 이라는 에러와 함께 읽어들이지 못하는 것을 확인할 수 있었습니다.)

 

▼ (hd0,gpt9) (hd0,gpt11) (hd0,gpt12) 파티션 중에서 어떤 곳에 만자로 리눅스가 설치되어 있을지 모르겠어서, 단서를 좀 더 찾기 위해 아래의 형식대로 입력해 보았습니다. (위에서 grub.cfg 파일이 있는 파티션이 하나만 보인다면 이 과정을 생략해도 됩니다. 트리플부팅 이상일 경우에 확인하는 거예요. 저는 쿼드부팅.ㅠㅠ)

ls (물리디스크 번호,파티션 번호)/boot

▲ 저는 최근까지 만자로에서 리눅스 커널 버전 5.10을 사용하고 있었습니다.

(hd0,gpt11) 영역에 만자로 리눅스가 설치되어 있음을 확인했습니다.

 

▼ 아래의 스샷을 참고하여 아래의 명령어들을 입력합니다.

set prefix=(물리디스크번호,파티션번호)/boot/grub

set root=(물리디스크번호,파티션번호)

insmod normal

normal

(set root 명령어는 입력하지 않아도 진행되더군요.)

 

▼ 만자로 리눅스용 GRUB이 떴습니다! 완전히 해결된 것이 아니니 긴장을 늦추지 말고, 만자로 리눅스로 부팅해 봅니다.

 

정상적으로 부팅된다면 이 과정을 무시하세요.

파티션 자동 마운트를 위해 /etc/fstab 파일에 내용을 추가한 적이 있는데 어떠한 이유로 경로가 변경되었다면 Failed to mount / Dependency failed for 에러가 뜹니다. 당황하지 말고 root password를 입력하여 로그인한 다음, nano 에디터 등으로 /etc/fstab 파일 내의 문제 부분을 잠시 주석처리(#) 합니다. 복구작업 완료 후에 자동마운트 경로를 정확하게 바로잡아 주는 것을 잊지 마세요.

 

▼ 저는 바로 위 과정 직후에 이어서 처리하는 것을 사진으로 찍었는데, 부팅이 정상적으로 되었다면 터미널 창을 띄우고 아래의 명령어들을 입력하세요.

sudo update-grub

sudo grub-install /dev/sda

sudo reboot

( sda, sdb, sdc 처럼 "물리디스크 이름"은 본인의 환경에 맞게 입력해야 합니다. 잘 모르겠으면 df -h 명령어를 입력해보세요. 유추할 수 있을 겁니다.)

 

끝!

반응형