본문 바로가기

카테고리 없음

부트로더의 LILO or GRUB 복구법


※ 부트로더의 LILO or GRUB 복구법 ※ 

 

여기에서 부트로더의 LILO나 GRUB이 깨졌다 함은, 디스크상의 파일 시스템이나 물리적인 디스크 손상이 아닌, 단순 이미지 로딩에 있어서의 장애를 뜻한다.
ex) 커널 컴파일 후 업데이트된 부트이미지의 이름을 잘못 지정했다던지, 부트 이미지가 생성이 안되어 있을 경우.

디스크 손상이나 파일시스템 손상이 부트로더에 가해졌을 때는, 디스크 데이터의 복구는 가능하나, 부팅 시스템으로서의 역활을 하기에는 힘든 상황이 된다.

아래의 진행은 위에서 말한 단순 부트로더의 부트 이미지 로딩장애시 대처 방법을 기술한다.


1. 리눅스 설치시 사용하였던 동일 버젼의 설치 CD 1번 을 이용하여 부트 방법을 선택 한다. (반드시! update버젼도 맞춰 주어야 함)


2. boot 프롬프트가 뜨면 리눅스 복구모드로 들어간다. (F2를 통해 부팅 옵션 확인 가능)

    boot : linux rescue
    CD를 통하여, 설치시 사용하는 기본 부트이미지를 읽어온다. (CD의 vmlinuz 이미지 만으로 시스템 가동)


3. root 디렉토리를 /mnt/sysimage  디렉토리에 마운트를 하고 복구를 하겠느냐 하는 창이 뜨면 Continue 를 클릭


4. 부트 로더가 위치한 파일시스템의 손상이 있는지 부터 확인한다.

fdisk -l를 사용하면 아래와 같은 화면으로 부트로더를 확인 할 수 있다.

Disk /dev/sda: 146.7 GB, 146798936064 bytes
255 heads, 63 sectors/track, 17847 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
  Device    Boot      Start        End      Blocks          Id   System
/dev/sda1   *           1          13         104391        83   Linux
/dev/sda2              14          1318      10482412+   83   Linux
/dev/sda3            1319         1579      2096482+     82   Linux swap
/dev/sda4            1580         17847    130672710     5   Extended
/dev/sda5            1580         17847    130672678+  83   Linux

상기의 Boot 부분에 "*" 로 마크된 부분이 부트로더 되겠다.
 
확인된 부트로더를 fsck로 파일시스템 체크를 해준다.

# umount /dev/sda1  <- File System Check시에는 혹시라도 모를 mount를 umount 하도록 한다.
# fsck -C (여기에서는 -y 옵션의 사용은 자제 하도록 한다. 손상이 있는 파일 시스템의 체크만 하고 손상이 있다면 그냥 두도록 한다.)

※ /dev/sda1을 찾을 수 없다고 나오면 mknod /dev/sda1 이라는 커맨드를 사용하여 sda1을 읽어온다.


5. 손상이 없다면, df를 통하여 디스크 마운트 상태를 체크한다.

"/" 나 "/boot"는 CD 이미지에서 마운트 된 파티션이다.
"/mnt/sysimage" 파티션에 기존의 시스템에서 사용하던 데이터가 마운트 된다.


6. 이렇게 /mnt/sysimage에 마운트 된 기존파티션을 원래의 파티션 방식으로 다시 지정해 준다.

   # chroot /mnt/sysimage


7. df 로 확인시 /mnt/sysimage를 기본으로 하위의 파티션을 마운트 하게된다. 즉 "/mnt/sysimage"가 "/"로 변경이 되면서 기존의 디렉토리 구조로 변경이 된다.


8. /boot/grub or /etc/lilo.conf를 수정하여준다.
 (커널 컴파일시 지정이 잘못된 부트 이미지를 수정하여준다.)


9. 부트 이미지에 관한 정보를 모를시에는 부트이미지를 생성하여 준다.
  GRUB : grub-install 명령으로 mbr에 Boot loader를 재등록한다.
  LILO : lilo -D로 기존 리로 이미지 삭제 후 lilo 를 입력하여 리로를 설치한다.


10. 시스템을 리부팅 하면, 새롭게 적용되었거나, 재대로 로드 안되던 이미지가 정상적으로 로딩이 되면서 부팅이 진행된다.


## 참고 사항 ##
위의 boot : linux rescue 로 진입시 에러가 떨어진다거나 할때는 "nomount" Option을 사용한다.

boot : linux rescue nomount

부트로더가 깨졌을 경우 외에도 부트 파일시스템이 깨졌거나, 부트 파티션에 물리적인 손상이 있을경우,기존 데이터를 백업 할 경우 에도 위의 1~4 번의 과정으로 /mnt/sysimage에서 기존 파일을 백업 받을 수 있다.