슬랙웨어 CURRENT를 업그레이드한 후 GRUB이 부팅 안 되는 문제 해결하기
슬랙웨어를 업그레이드할 때 GRUB도 같이 업그레이드되면 GRUB을 다시 설치해야 하는데 잊어버리고 그냥 재부팅을 하면 부팅이 안 되는 문제가 생긴다. 이때는 슬랙웨어 인스톨러 USB로 부팅한 후 다음과 같이 GRUB을 새로 설치하면 된다.
1 긴급하게 슬랙웨어 부팅 USB 드라이브 만들기
만약 여행 중에 슬랙웨어를 업그레이드했다가 부팅이 안 되는 문제가 생기면 곤란하다. 다음과 같이 다른 사람의 윈도 컴퓨터를 빌려서 부팅 가능한 슬랙웨어 USB 드라이브를 긴급하게 만들 수 있다.
- Rufus: ISO 이미지로 부팅 가능한 USB 드라이브를 만들어 주는 오픈 소스 프로그램
- slackware-mini-install.iso: 부팅 가능한 작은 크기의 슬랙웨어 ISO 이미지
여행 다닐 때는 항상 슬랙웨어 부팅 USB 드라이브를 가지고 다니자!
2 파일을 찾을 수 없어서 부팅이 안 되는 경우
부팅할 때 오류 메시지가 빨리 지나가서 못 읽을 수도 있는데 다음과 같은 메시지를 본 적이 있다.
Welcome to GRUB! error: file `/boot/grub/fonts/dejavusansmono.pf2' not found. error: no suitable video mode found. error: file `/boot/grub/x86_64-efi/bli.mod' not found.
이 문제는 몇 번 보고 고친 적이 있는데 아직도 정확한 원인을 모르겠다. 이전 버전의 GRUB에 있던 파일들인지는 모르겠지만 이 파일들을 원하는 디렉토리로 복사한 다음 grub-install
를 아래와 같이 실행하면 부팅이 된다. 그런 다음 위의 파일들을 지워도 계속 부팅이 된다. 이상하다!
3 GRUB 재설치하기
mount /dev/nvme0n1p3 /mnt # root 파티션을 마운트한다.
mount /dev/nvme0n1p1 /mnt/boot/efi # EFI 파티션을 마운트한다. chroot /mnt 이후에는 실패한다.
chroot /mnt # /mnt로 chroot한다.
mount -t proc none /proc # /proc/devices 파일을 생성한다.
mount -t devtmpfs none /dev # /dev/nvme0n1 디바이스 파일을 생성한다.
# 위의 dejavusansmono.pf2와 bli.mod 파일을 찾을 수 없다는 메시지가 뜬다면 다음과 같이 복사해 준다.
cp -a /usr/share/grub/dejavusansmono.pf2 /boot/grub/fonts
cp -a /usr/lib64/grub/x86_64-efi/bli.mod /boot/grub/x86_64-efi
grub-install --removable /dev/nvme0n1 --target=x86_64-efi # XXX: 처음 설치할 때는 --target=x86_64-efi가
# 필요없는데 지금은 이 옵션이 없으면 디폴트인
# i386-pc를 설치하다가 실패한다.
exit
reboot
만약 dejavusansmono.pf2와 bli.mod 파일을 복사했다면 위와 같이 부팅한 후 다시 지워도 부팅이 되었다.
rm /boot/grub/fonts/dejavusansmono.pf2 /boot/grub/x86_64-efi/bli.mod