리눅스 부팅 과정, 이제 원리를 파헤쳐 보자!
BIOS/UEFI는 하드웨어 점검 후 부트로더(Bootloader)를 실행하여 시스템 초기화
GRUB 부트로더는 리눅스 커널(Kernel)을 메모리에 로드하여 운영체제 시작
Systemd는 커널 시작 후 시스템의 모든 서비스와 데스크톱 환경을 관리
BIOS/UEFI와 부트로더(Bootloader)의 역할
리눅스 시스템 부팅 과정은 BIOS/UEFI(BIOS/UEFI)에서 시작하여 하드웨어 초기화 및 부트로더(Bootloader)를 로드하는 순서로 진행된다.
BIOS/UEFI: 메인보드에 내장된 펌웨어로, POST(Power-On Self-Test)를 수행하여 하드웨어의 이상 유무를 검사
부트로더(Bootloader): BIOS/UEFI가 하드웨어 검사를 마치면 커널(Kernel)을 메모리에 로드하는 역할 수행
GRUB: 리눅스에서 가장 널리 사용되는 부트로더로, 다중 부팅 환경(Multi-boot Environment) 구성 지원
부트로더(Bootloader) 설정 오류는 시스템 부팅 실패의 주요 원인이 되므로, 정확한 설정을 유지하는 것이 중요하다.
커널(Kernel)과 Systemd의 관계
커널(Kernel)은 운영체제의 핵심이며, 하드웨어 자원 관리 및 시스템의 첫 번째 프로세스인 init을 시작한다. 최근 리눅스 시스템에서는 init 대신 Systemd(Systemd)가 사용된다.
커널(Kernel): 하드웨어 추상화 계층으로, 메모리 관리, 프로세스 스케줄링(Process Scheduling), 파일 시스템 관리 담당
Systemd: PID(Process ID) 1번으로 실행되며, 시스템의 모든 서비스(Service)를 관리하고 부팅 프로세스 제어
User Space와 Kernel Space: 시스템은 커널 공간(Kernel Space)과 사용자 공간(User Space)으로 분리되어 안정성 확보
Systemd는 병렬 부팅(Parallel Booting)을 지원하여 부팅 시간을 단축하고, 서비스 간 의존성 관리를 용이하게 한다.
dmesg 명령어를 활용한 부팅 과정 분석
dmesg 명령어를 사용하면 커널(Kernel) 부팅 과정에서 발생하는 메시지를 확인할 수 있으며, 시스템 문제 해결에 유용하다.
dmesg: 커널 버퍼(Kernel Buffer)에 저장된 메시지를 출력하여 하드웨어 초기화 및 드라이버 로딩 과정 파악
파이프(|)와 less: dmesg의 출력을 less로 전달하여 긴 로그(Log)를 페이지 단위로 확인
부팅 실패 시: dmesg를 통해 오류 메시지(Error Message)를 분석하여 문제 원인 파악
dmesg는 시스템 부팅 문제를 진단하고, 하드웨어 및 드라이버 관련 문제를 해결하는 데 필수적인 도구이다.