[Ubuntu] grub rescue 진입 시 복구 방법

[Ubuntu] grub rescue 진입 시 복구 방법

* Ubuntu 14.04 LTS 버전을 기준으로 포스팅 했습니다.

그래픽 카드 드라이버 문제로 우분투를 설치와 삭제를 반복.. 결국 부트 로더를 찾지 못하고 grub resque 프롬프트 창이 출력되는 상황이 되었습니다.

복구 모드에서는 부트 로더가 설치가 되어있는 파티션을 찾아주면 해결이 되는데 이런 경우는 부트로더를 가지고 있는 파티션이 없는 상황입니다.

아래와 같이 부트 파티션을 잡을 수 있겠습니다.

1. 우분투 설치 USB 또는 DVD를 삽입 후 재부팅

2. 우분투 설치 화면으로 집입

3. 설치 옵션에서 기존 우분투를 지우고 설치할지 삭제하고 새로 설치할지를 묻는데 맨 아래 수동으로 파티션 설정 옵션을 선택한 후 다음 클릭

4. 기존 파티션을 삭제하고 다시 잡아 줍니다. 일반적으로 ext4 저널링 파티션과 스왑파티션을 생성해주면 됩니다.
(스왑 파티션의 경우 시스템 환경에 다양해 정확히 몇 기가면 충분하다라고 단정 짓기 어렵습니다.)

5. 우분투를 설치 완료합니다.

여기까지는 일반적인 우분투 설치 과정이었습니다.

재부팅이 되면 이전에 설정된 부트로더 정보로 인해 잘못된 파티션을 부트로더로 참조하게 되고 다시 grub resque 모드에 진입합니다.

여기서는 이렇게 부트로더 파티션을 지정합니다.

 

1. 파티션 확인

# 전체 파티션 확인
> ls

# 파티션의 포맷 형식 확인 예로 (hd0, msdos5)
> ls (hd0, msdos5)

# 파티션의 디렉토리 확인
> ls (hd0, msdos5)/

이렇게 확인 해보면 ext 포맷으로 구성된 리눅스 파일시스템 구조를 가진 파티션을 확인 할 수 있습니다. 여기서는 (hd0, msdos5)로 예를 들겠습니다.

 

2. 부트로더 세팅

# 부트 영역을 지정해줍니다. 실제 파티션에 /boot/grub 디렉토리가 있어야 합니다.
> set prefix=(hd0,5)/boot/grub

# root 파티션을 지정합니다.
> set root=(hd0,5)

# 부트메뉴(grub)를 로드하기 위한 normal 커널 모듈을 설치합니다.
> insmod normal

# 부트메뉴를 불러옵니다.
> normal

이렇게 부트파티션을 지정하고 부트메뉴를 로딩까지 했습니다. 그럼 OS로 진입합니다. 여기서 한 가지 과정이 더 남아 있습니다.

 

3. 부팅 후 터미널을 이용해 변경된 설정을 저장합니다.

$ sudo update-grub
$ sudo grub-install /dev/sda

예제에서는 디바이스가 sda로 되어있으나 하드의 갯수에 따라 우분투가 설치된 하드가 sdb이거나 sdc일 수도 있으니 상황에 맞게 명령을 수정해주시면 됩니다.

 

%d 블로거가 이것을 좋아합니다: