본문 바로가기
IT/Linux

부팅 문제 해결

by 혁클 2021. 4. 6.

 

 

부팅 문제 해결

 

root 패스워드 복구

1. root 패스워드 임의 설정

# echo “2 njksehlwjhiw” | passwd --stdin root

 

2.재부팅 후 부트로더의 동작(GRUB) 중 잠시 정지시키고 카운트 멈춤

 

3.부팅 항목 중 하나를 선택 후 ‘e’ 눌러서 편집

 

4.명령어 편집기에서 linux16으로 시작하는 항목 맨 끝에 rd.break 추가 => 부팅 단계에서 멈춤

 

5.부팅이 완료되었으나, 사용중인 리눅스 시스템이 정상적으로 로드되지는 않은 상태(파일시스템)

 

6. 파일 시스템은 현재 /sysroot에 마운트 되어 있으며, 수정하기 위하여 읽기/쓰기 가능하도록 마운트 설정을 변경하여야 함

# mount -o rw, remount /sysroot

 

7. 패스워드 변경을 하기 위해 chroot 명령을 사용

# chroot /sysroot

 

8. 패스워드 변경

# passwd

 

9.SELinux 콘텍스트 규칙에 맞게 콘텍스트를 수정하기 위해 다음 명령을 수행

# touch /. autorelabel

 

리눅스 시스템 부팅 과정

  1. 시스템 전원 인가
  2. BIOS/EFI 동작
  3. POST(Power On Self Test) 수행
  4. MBR/GPT 정보를 확인하여 부팅 가능 파티션 정보 확인
  5. 부팅 가능 파티션의 VBR(Volume Boot Record)를 참고하여 부팅 단계 시작
  6. 부트로더(리눅스 GRUB, GRand Unified Bootloader)
  7. 시스템 Kernel 로드
  8. systemd 로드 (initramfs 파일 시스템 마운트) <= rd.break
  9. pivoting (/sysroot, /)
  10. local-fs.target
  11. sysinit.target
  12. basic.target
  13. default.target

 

타깃 변경

  • 현재 시스템의 상태(=런레벨)를 변경

systemctl isolate <타깃 이름>

  • 재부팅 시 초기 상태를 지정 ( = /etc/inittab init 기반 시스템)

systemctl set-default <타깃 이름>

=> default.target에 원하는 타깃의 파일이 링크로 생성됨

  • 재부팅 시 초기 타겟 확인

systemctl get-default



===============================================

 

/etc/fstab 파일 오류로 인한 부팅 문제 해결

 

/etc/fstab 파일 오류 시 기본 동작

  1. 마운트 하려는 파일시스템이 손상 : systemd가 fsck를 시도 => 긴급 쉘(emergency.target), 사용자가 직접 fsck 명령을 사용하여 해결
  2. 마운트하려는 장치의 UUID 정보가 없을 경우 : 긴급 쉘로 이동
  3. 마운트하려는 마운트 포인트가 없음 : systemd가 해당 경로를 생성할 수 있을 경우 자동으로 생성하고 진행, 생성할 수 없을 경우 긴급 쉘 전환
  4. 마운트 설정에서 잘못된 마운트 옵션 : 긴급 쉘로 전환

 

부팅 시 실행할 타깃 지정

  • 부트로더 단계에서 부팅 명령 수정 (‘e’)
  • linux16 항목 맨 끝에 systemd.unit=emergency.target
  • 시스템이 즉시 해당 모드로 부팅됨

 

/etc/fstab 파일 오류 수정

  1. 시스템 부팅 오류 확인 (화면상 출력되는 부팅 메시지 확인)
  2. 자동으로 긴급 쉘로 들어가거나, 사용자가 직접 긴급 쉘로 전환

긴급 쉘 진입 설정은 위 항목 확인

  1. mount 정보 확인
  • 자동으로 긴급 쉘로 들어갈 경우, / 경로가 rw 상태로 마운트
  • 사용자가 긴급 쉘로 지정한 경우, / 경로가 ro 상태로 마운트
  1. / 경로가 ro 마운트 상태일 경우 rw로 다시 마운트

# mount -o rw, remount /

  1. /etc/fstab 파일의 오류 수정
  2. mount -a 명령을 사용하여 오류 수정 확인
  3. 재부팅

 

=============================================

조기 디버그 쉘

  • # systemctl enable debug-shell.service
  • 인증절차가 없는 콘솔을 제공
    • Ctrl + Alt + F9
    • root로 로그인되어 있음
  • 보안 상 설정하지 않는 것을 권장

*이 포스팅은 엔코아 플레이 데이터 수업 내용을 참고로 합니다.

'IT > Linux' 카테고리의 다른 글

네트워크 관리(기초,NetworkManger,호스트이름)  (0) 2021.04.08
NTP  (0) 2021.04.07
SELinux  (0) 2021.04.05
방화벽관리(firewalld)  (0) 2021.04.03
로그관리(rsyslog,journal)  (0) 2021.04.01

댓글