리눅스 부팅 문제 진단 및 해결: 단계별 가이드

펌웨어, GRUB, 커널 매개변수, 파일 시스템, initramfs, 로그 및 복구 미디어를 확인하여 리눅스 부팅 실패를 복구합니다.

리눅스 부팅 문제 진단 및 해결: 단계별 가이드

리눅스 시스템은 일반적으로 견고하지만, 부팅 실패가 발생하면 중요한 작업이 중단될 수 있습니다. 부팅 프로세스를 이해하고 체계적인 문제 해결 단계를 아는 것은 모든 시스템 관리자에게 필수적인 기술입니다. 이 가이드는 하드웨어 점검부터 부트로더 및 커널 단계의 심층 검사에 이르기까지 리눅스 부팅 실패의 근본 원인을 진단하는 구조화된 접근 방식을 제공합니다.

부팅 문제를 성공적으로 해결하려면 인내심과 체계적인 조사가 필요합니다. 리눅스 부팅 시퀀스의 일반적인 단계를 다루고, 실패가 일반적으로 발생하는 위치를 식별하며, 시스템을 복구하는 데 필요한 실용적인 단계와 명령을 자세히 설명합니다.

리눅스 부팅 시퀀스 이해하기

문제 해결 전에 무슨 일이 일어나야 하는지 아는 것이 중요합니다. 리눅스 부팅 프로세스는 순차적이며, 어떤 단계에서든 실패하면 시스템이 로그인 프롬프트에 도달하지 못합니다. 주요 단계는 다음과 같습니다:

  1. BIOS/UEFI 초기화: 하드웨어 POST(Power-On Self-Test).
  2. 부트로더 단계 (예: GRUB): 커널과 초기 RAM 디스크(initrd/initramfs)를 로드합니다.
  3. 커널 초기화: 커널이 시작되고, 루트 파일 시스템을 마운트하며, 필수 드라이버를 초기화합니다.
  4. Init 시스템 단계 (예: systemd, SysVinit): 사용자 공간 프로세스가 시작되어 로그인 프롬프트로 이어지는 최종 단계입니다.

대부분의 부팅 실패는 2, 3 또는 4단계에서 발생합니다.

1단계: 초기 진단 (부트로더 이전)

시스템이 GRUB 메뉴에 도달하지 않으면 문제는 하드웨어 관련 또는 펌웨어 수준일 가능성이 높습니다.

하드웨어 점검

  • 전원 및 주변 장치: 전원 공급이 안정적인지 확인하고 불필요한 주변 장치를 분리하십시오. 고장 난 하드 드라이브나 결함 있는 RAM은 부팅 실패로 나타날 수 있습니다.
  • BIOS/UEFI 설정: 올바른 부팅 장치가 기본값으로 선택되었는지 확인하십시오. 최근에 하드웨어를 변경한 경우 펌웨어가 드라이브를 인식하는지 확인하십시오.

부팅 메시지 검사 (부분적으로 보이는 경우)

하드 정지 또는 재부팅 전에 간단한 메시지가 표시되면 기록해 두십시오. 디스크 컨트롤러 또는 메모리 할당과 관련된 오류를 찾으십시오.

2단계: 부트로더 문제 해결 (GRUB/LILO)

GRUB 메뉴가 표시되지만 항목을 선택하면 실패(예: 커널 패닉 또는 중단)가 발생하는 경우 부트로더 구성 또는 커널/initrd 이미지가 손상되었을 수 있습니다.

GRUB 메뉴 접근

부팅할 때 Shift(BIOS 시스템의 경우) 또는 Esc(UEFI 시스템의 경우)를 반복해서 눌러 GRUB 메뉴가 나타나도록 하십시오. 나타나지 않으면 부트 섹터 또는 UEFI 항목을 복구해야 할 수 있습니다(아래 복구에서 설명).

GRUB 항목 편집

메뉴가 나타나면 원하는 커널 항목을 강조 표시하고 e를 눌러 편집하십시오. 이렇게 하면 영구적인 손상 없이 임시 수정이 가능합니다.

확인해야 할 주요 매개변수:

  1. linux 또는 linuxefi 줄: 커널 이미지(vmlinuz-*)의 경로를 확인하십시오.
  2. root= 매개변수: 이것이 루트 파일 시스템 파티션(예: root=/dev/sda2)을 올바르게 가리키는지 확인하십시오. UUID를 사용하는 경우 올바른지 확인하십시오.

단일 사용자 모드(복구 모드)로 부팅

많은 시작 서비스를 건너뛰고 최소 셸 환경으로 들어가려면 커널 라인 끝에 다음 지시문을 추가하십시오:

init=/bin/bash
# 또는
single
# 또는 (systemd 시스템의 경우)
systemd.unit=rescue.target

시스템이 루트 셸 프롬프트(#)로 부팅되면 커널이 성공적으로 로드된 것이며, 문제는 서비스 시작 시퀀스 또는 파일 시스템 무결성에 있습니다.

3단계: 파일 시스템 및 커널 문제

셸로 성공적으로 떨어졌거나(또는 시스템이 initramfs 단계에서 중단된 경우) 루트 파일 시스템 무결성 또는 누락된 모듈에 초점을 맞춥니다.

파일 시스템 무결성 확인

시스템이 일찍 중단되면 종종 손상으로 인해 루트 파일 시스템을 마운트하지 못할 수 있습니다. 파티션을 읽기/쓰기로 마운트할 수 없을 가능성이 높으므로 복구 환경(예: Live CD/USB 또는 단일 사용자 모드 셸)을 사용해야 합니다.

손상된 파티션(예: /dev/sda2)에서 파일 시스템 검사(FSCK)를 실행하십시오:

# 복구 환경에 있고 파티션이 마운트 해제되었다고 가정
e2fsck -f /dev/sda2 

파티션이 마운트된 경우(예: 단일 사용자 모드) 먼저 읽기 전용으로 다시 마운트하거나 외부 미디어에서 부팅해야 할 수 있습니다.

Initramfs 누락 또는 손상

initramfs(초기 RAM 파일 시스템)에는 실제 루트 파일 시스템을 마운트하는 데 필요한 드라이버가 포함되어 있습니다. 이것이 손상되면 시스템이 일찍 중단됩니다.

해결 방법: 작업 환경(Live CD 또는 복구 셸)에서 initramfs를 다시 빌드합니다.

루트 파티션이 /mnt에 마운트되었다고 가정:

# 설치된 시스템으로 chroot
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
chroot /mnt

# 현재 커널 버전에 대한 initramfs 다시 빌드
update-initramfs -u -k all 
# 또는 (RHEL/CentOS 시스템의 경우)
dracut -f 

exit
# 마운트 해제 및 재부팅

4단계: 라이브 환경을 사용한 복구

어떤 형태의 단일 사용자 모드에도 도달할 수 없는 경우 가장 안정적인 복구 방법은 라이브 리눅스 USB/CD(예: Ubuntu Live, CentOS Rescue Image)에서 부팅하는 것입니다.

1단계: 라이브 환경으로 부팅

외부 미디어를 사용하여 시스템을 부팅하고 명령줄에 액세스할 수 있는지 확인하십시오.

2단계: 시스템 파티션 마운트

루트 파티션을 식별하고(lsblk 또는 fdisk -l 사용) 임시 위치(예: /mnt/rescue)에 마운트하십시오.

# 예: 루트가 /dev/sda2라고 가정
mkdir /mnt/rescue
mount /dev/sda2 /mnt/rescue

별도의 /boot 파티션이 있는 경우 해당 파티션도 마운트하십시오:

mount /dev/sda1 /mnt/rescue/boot

3단계: Chroot 및 복구

chroot를 사용하여 셸의 루트 디렉터리를 설치된 시스템으로 전환하십시오. 이렇게 하면 시스템의 기본 도구를 실행할 수 있습니다.

# 필수 시스템 디렉터리 바인드
for dir in dev proc sys run; do mount --bind /$dir /mnt/rescue/$dir; done

# 시스템 환경으로 들어가기
chroot /mnt/rescue

chroot 환경(#) 내부에 있으면 복구 명령을 실행할 수 있습니다:

  1. 로그 확인: journalctl -xb (systemd를 사용할 수 있는 경우).
  2. GRUB 재설치/업데이트: 부트 섹터 문제를 해결합니다.
    grub-install /dev/sda
    update-grub  # 또는 grub2-mkconfig -o /boot/grub2/grub.cfg
    
  3. Initramfs 다시 빌드(위에 표시된 대로): update-initramfs -u -k all

4단계: 정리 및 재부팅

chroot를 종료하고(exit), 모든 파티션을 마운트 해제한 다음, 라이브 미디어 없이 재부팅하십시오.

모범 사례: 라이브 환경을 사용하는 경우에도 주요 복구를 시도하기 전에 항상 중요한 구성 파일(/etc/fstab, /boot/grub/grub.cfg)을 백업하십시오.

일반적인 오류 지표

증상 가능한 원인 권장 조치
GRUB 메뉴 없이 즉시 검은 화면 하드웨어 오류, BIOS/UEFI 설정, MBR/EFI 파티션의 GRUB 손상 하드웨어 연결 확인, Live CD를 통한 GRUB 복구 시도.
GRUB 메뉴 항목 표시 후 중단 잘못된 커널 매개변수, 손상된 initrd GRUB 항목 편집(e)하여 root= 변경 또는 single 추가.
initramfs 프롬프트로 드롭 파일 시스템 드라이버 누락, 파일 시스템 손상 시스템 마운트 후 fsck 실행 또는 initramfs 다시 빌드.
부팅되지만 서비스 시작 실패 /etc/fstab 문제 또는 실패하는 시스템 서비스 rescue.target으로 부팅하고 로그(journalctl) 검사.

하위에서 상위로 작업하십시오: 펌웨어, 부트로더, 커널, 파일 시스템, 그 다음 서비스. 이 순서는 실제 문제가 잘못된 /etc/fstab 줄이나 복구가 필요한 파일 시스템일 때 GRUB을 다시 빌드하는 것을 방지합니다.