개요

Linux 가 부팅이 안 되거나 실수로 mount, yum, ssh 같은 필수 구성요소를 삭제했을때 복구 모드로 부팅해서 문제를 해결해야 한다. 들어갈 일이 거의 없어서 잊을것 같으니 절차를 정리해 둔다.

Booting into Rescue Mode

부팅

  1. CD/DVD USB 등의 media 를 넣고 부팅
  2. Boot 화면에서 rescue 선택
     
  3. 3rd party driver 등이 필요할 경우 tab 키를 누르고 kernel parameter 수정

    If your system requires a third-party driver provided on a driver disc to boot, load the driver with the additional option dd:

    linux rescue dd
    BASH
  4. 언어 선택 (Korean 이 있으나 Text 모드이므로 선택이 불가하므로 English 를 선택)
     
  5. KeyBoard Type 선택
     
  6. Rescue Method 선택(DVD 부팅이므로 기본 Local CD/DVD 선택)
     
  7. Network 이 필요할 경우 Network 설정
  8. Rescue mode 선택. Local 에 설치된 linux 를 찾아서 /mnt/sysimage 에 마운트하며 시스템을 복구하려면 Read-Write로 마운트해야 한다. Continue 선택.
     
  9. rescue manager 에는 다음과 같이 3개의 메뉴가 표시됨. shell 을 선택하면 shell prompt 가 기동되어 복구 작업을 할 수 있음
     

복구

  1. 복구할 리눅스 시스템의 루트 암호를 변경하거나 패키지를 설치하는등의 복구 작업을 할 경우 해당 파티션이 root로 마운트 되어야 작업이 가능하므로 다음 chroot 명령어로 루트 파티션을 변경.

    chroot /mnt/sysimage
    CODE

    chroot 를 수행했으면 yum 이나 passwd 등 시스템 변경은 복구 대상 시스템을 대상으로 이루어짐.

  2. 마운트할 파티션이 추가로 있을 경우 다음과 같이 수동 마운트

    mount -t ext4 /dev/mapper/VolGroup00-LogVol02 /foo
    CODE
  3. Volumn 을 모를 경우 다음 명령어로 볼륨을 확인
    1. fdisk 사용

      fdisk -l
      CODE
    2. view LVM volumn

      pvdisplay
      vgdisplay
      lvdisplay
      CODE
  4. 실수로 base 패키지들을 삭제해서 부팅이 안 되거나 mount, ls 등의 기본 명령어들이 안 먹을때 다음과 같이 base group 을 새로 install

    yum groupinstall base 
    CODE


Booting into single user Rescue Mode

RHEL/CentOS 7, 8

  1. 시스템 부팅 후 tab 키를 눌러서 커널 선택 모드로 진입
  2. 부팅할 커널을 선택하고 e 키를 누름

  3. 부팅 옵션 화면에서 아래로 스크롤해서 
  4. linux 이나 linuxefi 로 시작하는 라인을 찾은 후에 해당 라인의 맨 뒤에 다음 내용 추가하고 Ctrl-x 를 눌러서 부팅

    rd.break enforcing=0
    CODE

    rd.break : 부팅 프로세스의 초기 단계만 수행(initramfs 에서 실제 시스템으로 제어권을 넘기지 않고 부팅 종료)
    enforcing=0 : SELinux 를 permissive mode 로 구동. (disable 하는 selinux=0 과는 다른 옵션)

    enforcing=0 은 생략 가능

    CentOS 8
    CentOS 7

  5. 파일 시스템을 read write 로 다시 마운트

    mount –o remount,rw /sysroot
    CODE
  6. 루트 파일 시스템 변경

    chroot /sysroot
    CODE
  7. root 암호 복구가 필요하면 암호 변경

    passwd
    CODE
  8. SELinux 를 사용할 경우 복구 모드에서 수정한 파일은 SELinux Context 가 없어서 재부팅시 문제가 될 수 있음. 다음 명령을 실행하면 재부팅시 자동으로 파일에 대해 SELinux context relabeling 을 수행함

    touch /.autorelabel 
    CODE
    fixfiles onboot
    CODE

    touch 명령은 파일명 오타를 내도 확인할 수 없으므로 실행 결과를 확인할 수 있는 fixfiles onboot 명령을 권장

  9. 복구가 끝났으면 exit 를 실행해서 재부팅

    exit
    CODE

CentOS 6

  1. 시스템 부팅 후 tab 키를 눌러서 커널 선택 모드로 진입
  2. 부팅할 커널을 선택하고 e 키를 누름
     
  3. 커널 파라미터 선택화면에서 e 키를 눌러서 파라미터 수정화면으로 진입
     
  4. 파라미터 수정. 싱글 유저로 진입하고 SELinux 를 끌 경우 다음 옵션 추가
     
  5. 수정후 엔터를 쳐서 파라미터 선택화면(3번) 으로 돌아온 후에 b 키를 눌러서 부팅


See Also

Ref