LINUX

리눅스 부팅 과정: 전원 버튼을 누르면 일어나는 일

최서은 2026. 3. 26. 22:31

 

리눅스 시스템을 사용하다 보면 서버가 정상적으로 부팅되지 않거나, 특정 서비스가 실행되지 않는 문제를 마주하는 경우가 있습니다. 이러한 문제를 정확하게 파악하기 위해서는 단순히 명령어를 사용하는 것뿐만 아니라, 시스템이 어떤 과정을 거쳐 부팅되는지를 이해하는 것이 중요합니다.

리눅스의 부팅 과정은 전원이 켜진 이후 커널이 로드되고, 사용자 환경이 구성되기까지 여러 단계를 거치며 진행됩니다. 각 단계는 서로 다른 역할을 수행하기 때문에, 어느 단계에서 문제가 발생했는지를 구분할 수 있다면 보다 빠르고 정확한 문제 해결이 가능합니다.

이번 글에서는 리눅스의 부팅 과정을 단계별로 정리해보겠습니다.

 

 

BIOS와 UEFI


리눅스의 전원 버튼을 누르는 순간, 가장 먼저 BIOS 또는 UEFI 라는 프로그램이 실행됩니다.

BIOS와 UEFI는 메인보드의 플래시 메모리(ROM)에 내장된 firmware(펌웨어), 운영체제보다 먼저 실행되는 소프트웨어입니다.

이 소프트웨어들은 키보드, 모니터, 하드 드라이브 등 컴퓨터의 주요 부품들이 작동할 준비를 하도록 돕는 역할을 합니다. 

 

UEFI는 기존의 BIOS보다 부팅 속도가 빠르고 'Secure Boot'과 같은 더 나은 보안 기능을 제공하는 최신 방식입니다.

두 방식의 큰 차이점 중 하나는 디스크 저장 방식입니다. BIOS는 전통적으로 MBR(Master Boot Record) 시스템을 사용하여 디스크 용량이 2TB로 제한되지만, UEFI는 일반적으로 GPT(GUID Partition Table)를 사용하여 이러한 용량 제한을 없애고 더 유연한 솔루션을 제공합니다. 

이 외에도 여러 차이점이 존재합니다.

 

BIOS와 UEFI 실행 - POST


BIOS와 UEFI 실행이 되자마자 가장 먼저 수행하는 작업이 POST(Power-On Self-Test) 입니다.

이 테스트는 시스템을 완전히 켜기 전에 CPU, 메모리, 그래픽 카드 등 핵심 하드웨어가 정상적으로 작동하는지 확인하는 과정입니다. 만약 POST 과정에서 문제가 발견되면 화면에 오류 메시지를 표시합니다. 

 

 

Boot Loader 찾기


POST를 무사히 통과하면, 운영체제를 실행해 줄 부트로더 소프트웨어를 찾아 로드해야 합니다. 

보통 부팅 순서(Boot Order)는 하드 드라이브를 먼저 확인하고, 없으면 USB나 CD를 확인하도록 설정되어 있습니다.

이 순서는 BIOS 설정에서 사용자가 변경할 수 있습니다.

  •  BIOS : 부트로더 코드가 하드 드라이브의 첫 번째 섹터인 MBR에 저장됩니다.
  •  UEFI : 별도의 파티션에 .efi 부트로더 파일이 저장됩니다.

펌웨어가 디스크에서 부트로더를 메모리에 올립니다.

 

Boot Loader의 역할과 GRUB2


부트로더 화면

부트로더의 핵심 임무는 다음 세 가지입니다.

1.  디스크에서 운영체제 커널의 위치를 찾아 메모리(RAM)로 읽어들입니다.
2.  커널을 실행하며 커널 파라미터를 전달합니다. (루트 파티션 위치 설정, 로그 출력 여부 등)
3.  커널이 실제 디스크 드라이버를 로드하기 전까지 initramfs(초기 램 파일 시스템)을 메모리에 함께 올립니다.

 

* initramfs : 커널이 실제 루트 파일 시스템(/)을 마운트하기 전까지 필요한 임시 루트 파일 시스템

 

과거엔 LILO라는 부트로더도 있었지만 지금은 거의 쓰이지 않으며, 현재 가장 많이 사용되는 것은 GRUB2입니다.

GRUB2는 여러 운영체제 부팅(멀티 부팅)을 지원하며, 그래픽 메뉴와 고급 설정 옵션을 제공합니다.

GRUB2가 로드되면 리눅스 커널을 메모리에 올리고 제어권을 커널에 넘깁니다.

 

Kernel의 초기화와 Systemd


부트로더로부터 제어권을 넘겨받은 커널은 시스템의 메모리와 CPU 등 자원을 초기화하고 장악합니다.

커널은 스스로 메모리에서 압축을 풀고, 앞서 부트로더가 준비해 준 initramfs를 활용해 필요한 장치 드라이버와 모듈을 로드하여 실제 하드웨어와 파일 시스템에 접근할 준비를 마칩니다.

 

이후 커널은 init이라 불리는 초기 프로세스를 실행하며 제어권을 넘깁니다.

현대 리눅스 시스템에서는 init 역할을 보통 Systemd가 이 역할을 수행하며, PID 1번 프로세스로 실행됩니다.

Systemd는 과거의 SysVinit이나 Upstart를 대체한 시스템으로, 리눅스에서 실행되는 모든 프로세스의 부모가 됩니다.

Systemd는 이전의 SysVinit과 달리 서비스를 병렬로 실행하여 부팅 속도를 개선했습니다

 

시스템 서비스 가동 및 로그


Systemd는 시스템이 완전히 부팅되어 사용할 준비가 될 때까지 수많은 일을 처리합니다. 

  • 드라이버 로드가 필요한 남은 하드웨어가 있는지 확인
  • 파일 시스템과 디스크를 마운트하여 접근 가능하게 만듦
  • 네트워크, 사운드, 전원 관리와 같은 백그라운드 서비스들을 실행
  • 로그인 화면이 뜨면 사용자 로그인을 처리하고, 데스크탑 환경(메뉴, 패널 등)을 로드

Systemd는 타겟(Target) 설정 파일을 사용하여 어떤 모드로 부팅할지 결정합니다. 

텍스트 위주의 'Multi-user target'으로 부팅할지, 우리가 매일 사용하는 'Graphical target'으로 부팅할지 정하는 것입니다.

이는 과거 리눅스의 런레벨(Runlevel) 개념과 대응됩니다.

로그인 모드 비교

  • 텍스트 모드 (Multi-user target): getty라는 프로세스를 실행하여 검은 화면에 login: 프롬프트를 띄웁니다.
  • 그래픽 모드 (Graphical target): GDM이나 LightDM 같은 디스플레이 매니저가 실행되어 마우스로 조작 가능한 로그인 창을 띄웁니다.

 

사용자 인증 및 환경 설정 로드


사용자가 아이디와 비밀번호를 입력하면, 시스템은 인증 과정을 거쳐 사용자의 개별 환경을 구축합니다.

  1. 인증 확인 : /etc/passwd/etc/shadow 파일을 확인하여 사용자가 적합한지 판단합니다.
  2. 쉘 실행 : 인증이 성공하면 해당 사용자에게 지정된 기본 쉘(주로 /bin/bash)을 부여합니다.
  3. 프로필 로드 : /etc/profile, ~/.bashrc 등 환경 설정 파일을 읽어와 사용자가 사용할 경로(PATH), 별칭(Alias), 프롬프트 모양 등을 세팅합니다.

이후 부팅의 모든 프로세스가 끝나고 시스템의 주도권은 로그인 한 사용자에게 넘어갑니다.

사용자는 터미널을 열어 명령어를 입력하거나 프로그램을 실행할 수 있는 상태가 됩니다.

이 시점에서 리눅스 부팅 프로세스는 공식적으로 종료됩니다.

 

 

 


 

전원 버튼을 누른 순간부터 사용자 로그인 화면이 뜨기까지, 시스템의 제어권은

BIOS/UEFI → Bootloader → Kernel → systemd

User

 

순서로 이동합니다.

 

 

전체 흐름도

 

정리하면, 리눅스 부팅 과정은

펌웨어(BIOS/UEFI)가 하드웨어를 초기화하고,
부트로더(GRUB)가 커널을 메모리에 로드한 뒤,
커널이 systemd를 실행하고,
systemd가 시스템 서비스를 실행하여
최종적으로 사용자 로그인 환경을 구성하는 과정입니다.

 

 

 

잘못된 내용이나 보완이 필요한 부분이 있다면 댓글로 알려주시면 감사하겠습니다.
궁금한 점도 편하게 남겨주세요.

 

 

참고자료

- [How Does Linux Boot Process Work?] (Youtube)

https://youtu.be/XpFsMB6FoOs?si=8nWDegMH4lJaPT4_

- 부트로더 이미지 [위키백과]

- 전체 흐름도, 로그인 모드 비교 이미지 [gemini nanobanana]