리눅스용 GRUB2가 망가지는 일은 종종 있습니다. 예를 들어 우분투를 먼저 설치하고 윈도우를 나중에 설치하는 경우가 생각나는데, 이 경우는 해결 방법을 포스팅한 적이 있습니다.
※ 우분투 먼저 설치, 윈도우 나중에 설치시 GRUB2 수리(듀얼부팅 복구)
이번에는 만자로 KDE 옆에 우분투 20.04를 추가했다가 GRUB2가 망가진 것 같은데, 해결 과정을 정리해두려 합니다. 문제 상황을 고의적으로 만든 것이 아니기때문에 Legacy BIOS 환경과 UEFI 환경 모두에 대해서 적지는 못하겠습니다. UEFI 환경에서의 대응만 적을 것이고, 레거시 바이오스 환경은 다음에 기회가 되면 보강하겠습니다.
https://wiki.manjaro.org/index.php/GRUB/Restore_the_GRUB_Bootloader
만자로 위키의 ‘GRUB/Restore the GRUB Bootloader’ 문서를 참고합니다.
▼ 과정의 큰 흐름은 이렇습니다. 만자로 설치용 USB로 부팅 / 기존에 설치한 만자로 경로로 root 환경 변경(chroot) / GRUB 복구.
▼ 터미널 창을 띄우고, sudo fdisk -l (또는 lsblk -f 또는 lsblk -o NAME,FSTYPE,UUID,SIZE ) 라고 입력해서 만자로를 설치한 파티션 구조&이름을 파악합니다. 저는 /dev/sda2 파티션에 만자로를 설치한 것으로 기억합니다.
만자로 파티션을 /mnt 경로에 마운트해야 합니다. 위 스샷 기준으로는 /dev/sda2 이겠죠? 본인의 파티션 넘버에 맞춰주면 되는 겁니다.
▼ ” sudo mount 만자로파티션경로 /mnt ” 이렇게 입력하면 마운트가 됩니다.
▲ mount 명령어를 쓰기 전의 상황을 ls 명령어로 살펴봤는데, 마운트하기 전에는 /mnt/boot 경로에 아무것도 없었지만 마운트하니까 efi와 관련된 grub 구성요소들이 보이네요.
이 문단의 과정은 (저를 포함한) 대부분의 분들이 건너뛰게 될텐데(요즘은 흔치 않은 구성이라서요), 만약 만자로 부팅 파티션을 별도로 구성한 적이 있다면 아래처럼 명령어를 입력하여 부팅 파티션을 마운트합니다.
sudo mount /dev/sda6 /mnt/boot
(/mnt/boot 디렉토리 아래에 grub 디렉토리가 오도록. /mnt/boot/grub 이렇게.)
부팅 파티션이 있는지 어떻게 알 수 있느냐? 마운트한 만자로 파티션에서 /mnt/etc/fstab 파일을 에디터로 열어봤을 때 /boot 에 대한 항목이 있고 /dev/sda4 처럼 가리키는 파티션이 있으면 부팅 파티션이 있는 것입니다.
▼ 이제
for i in /dev /dev/pts /proc /sys /run; do sudo mout -B $i /mnt$i; done
라고 입력해서 우분투 USB의 /dev, /dev/pts, /proc, /sys, /run 디렉토리들을 하드디스크 /mnt 하위에 합칩니다.
sudo mount –bind /dev /mnt/dev
이런 식으로 여러 줄에 걸쳐 입력해야 할 것을 한 줄로 단순화한 거예요.
▼ ls 명령어로 /mnt/boot/efi 디렉토리를 조회해봤는데 아무것도 없네요? UEFI용 GRUB2는 EFI 파티션이 /boot/efi 경로에 마운트된 상태로 돌아가던데 말이지요. 그래서…
▲ sudo mount EFI파티션 /mnt/boot/efi
이런 식으로 입력해서 마운트해 줬습니다.