Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스 부팅 프로세스 완벽 가이드: 꼭 알아야 할 핵심 단계

리눅스 부팅 프로세스 완벽 가이드: 꼭 알아야 할 핵심 단계

오픈소스 운영체제인 리눅스의 부팅 단계가 궁금하신 적이 있으신가요? 전체 부팅 과정을 이해하고 있으면 문제 해결에 큰 도움이 됩니다. 특히 시스템 관리자라면 더욱 그렇습니다.

전원 버튼을 누르는 순간 장치 내부에서는 어떤 일이 벌어질까요? 지금부터 단계별로 자세히 살펴보겠습니다.

BIOS(바이오스)

BIOS(Basic Input/Output System)는 컴퓨터 메인보드의 작은 메모리 칩에 저장된 저수준 펌웨어입니다. 이 펌웨어는 시스템 시작 과정을 도우며, 마우스·프린터·비디오 어댑터처럼 연결된 장치들과 컴퓨터 간의 데이터 흐름을 관리합니다.

리눅스 부팅 프로세스 완벽 가이드: 꼭 알아야 할 핵심 단계

위 그림에서 볼 수 있듯이 BIOS의 핵심 기능은 POST(Power-On Self Test, 전원 자가 진단 테스트)를 실행하는 것입니다. 이 테스트는 시스템 하드웨어의 작동 여부를 점검하고, 이후 부팅 과정에 필요한 소프트웨어가 담긴 부트 섹터를 찾습니다. POST가 성공적으로 완료되면 BIOS는 다음 단계인 1단계 부트 로더(Stage One Boot Loader)를 시스템 RAM에 불러옵니다.

반대로 POST가 실패하면, BIOS는 문제 해결에 활용할 수 있는 오류 코드를 반환합니다.

1단계 부트 로더

부트 로더의 첫 번째 단계는 MBR(Master Boot Record) 또는 GPT(GUID Partition Table)라고 불리며, 시스템을 구동시키기 위한 준비 작업을 담당합니다.

MBR은 파일 시스템을 인식하지 못하는 아주 단순한 소프트웨어입니다. 그렇기 때문에 2단계 부트 로더는 항상 MBR과 하드 드라이브의 첫 번째 파티션 사이에 위치해야 합니다.

MBR이 2단계 부트 로더를 감지하면 제어권을 넘겨줍니다.

2단계 부트 로더

2단계 부트 로더의 임무는 커널을 찾아 메모리에 적재하는 것입니다.

대부분의 리눅스 배포판은 GRUB, GRUB2, LILO 세 가지 부트 로더 중 하나를 사용합니다. 그중에서도 가장 최신 버전인 GRUB2(아래 이미지 참조)를 가장 자주 접하게 됩니다.

리눅스 부팅 프로세스 완벽 가이드: 꼭 알아야 할 핵심 단계

부트 로더가 커널을 찾아 RAM에 적재하면 제어권을 넘깁니다. 이때 커널이 필요한 모듈을 찾을 수 있도록 장치의 파일 시스템 이미지도 함께 전달합니다.

커널(Kernel)

모든 커널은 하드 디스크 공간을 절약하기 위해 압축된 형태로 저장됩니다. 따라서 커널이 제어권을 받으면 가장 먼저 스스로 압축을 해제한 뒤, 부트 로더로부터 전달받은 파일 시스템 이미지를 마운트합니다.

이후 커널은 시스템의 하드웨어를 감지하고, 임시 이미지를 디스크의 실제 루트 파일 시스템으로 교체합니다.

init(systemd)

다음으로 커널은 초기화(init) 시스템을 시작합니다. init은 부팅에 필요한 모든 프로세스를 만들어내는 첫 번째 프로세스로, 대부분의 시스템에서는 systemd가 이 역할을 수행합니다.

systemd의 주요 기능은 시스템 구동에 필요한 모든 데몬(백그라운드 프로세스 및 서비스)을 실행하는 것입니다. 이러한 서비스들은 초기화 이후에도 계속 실행되며, 각종 시스템 메시지 기록, 장치 추적, 파일 시스템과 시스템 메모리 간 동기화 유지 같은 필수 작업을 관리합니다.

systemd가 실행 중인 서비스 목록이 궁금하다면 systemctl 명령어만 입력하면 전체 목록을 확인할 수 있습니다.

또한 systemctl 명령어와 서비스 이름을 조합하면 부팅 시 특정 서비스를 시작할 수도 있습니다. 예를 들어 NFS 서비스의 상태를 확인하려면 systemctl status nfs-server.service를 입력하면 됩니다. 마찬가지 방식으로 start, stop, enable, disable 명령어를 조합해 서비스를 자유롭게 제어할 수 있습니다.

런레벨(Runlevel)

런레벨(runlevel)은 INIT 프로세스의 상태를 의미하며, 시스템에서 어떤 서비스가 실행될지를 결정합니다. 표준 리눅스 커널은 다음과 같이 7가지 런레벨을 지원합니다:

  • 0: 시스템 halt — 전원을 끌 준비 상태
  • 1: 단일 사용자 모드
  • 2: 다중 사용자 모드(네트워크 파일 시스템 없음)
  • 3: GUI 대신 CLI(명령줄 인터페이스)를 사용하는 다중 사용자 모드
  • 4: 사용자 정의 레벨
  • 5: GUI를 사용하는 다중 사용자 모드 — 대부분의 리눅스 시스템이 기본적으로 부팅되는 레벨
  • 6: 재부팅

리눅스 부팅 프로세스 완벽 가이드: 꼭 알아야 할 핵심 단계

어떤 이유로든 런레벨을 변경해야 한다면, 위 그림과 같이 INIT이 telinit 명령어를 통해 변경을 처리합니다.

부팅 프로세스 총정리

지금까지 살펴본 내용은 리눅스 부팅 과정의 개요이며, 세부적인 기술적 사항 일부는 생략되어 있습니다. 그러나 부팅 중 발생할 수 있는 문제를 진단하고 해결하는 데 필요한 핵심 정보는 충분히 담고 있습니다. 각 단계의 역할을 기억해 두면 시스템 오류 분석에 큰 도움이 될 것입니다.