Why?

리눅스는 어떻게 부팅될까? (EC2 로그로 따라가 보기)

jaeyoung-dev 2026. 5. 18. 01:21

리눅스 부팅 과정을 공부하다 보면 다음과 같은 흐름을 보게 됩니다.

UEFI → GRUB → Kernel → systemd


처음 이 흐름을 봤을 때는 각각의 단어가 무엇을 의미하는것인지 명확하지 않았습니다.

  • UEFI는 BIOS와 비슷한 것인가?
  • GRUB는 왜 필요한가?
  • Kernel은 언제 실행되는가?
  • systemd는 서비스 관리 도구 아닌가?
    ...

그래서
AWS EC2에서 Amazon Linux 2023 인스턴스를 직접 실행하고
실제 로그와 파일을 확인하면서 부팅 과정을 따라가 보기로 결정하였습니다.


실습 환경

Cloud Provider : AWS EC2
OS             : Amazon Linux 2023
Instance Type  : t3.micro
Architecture   : x86_64
AMI            : al2023-ami-2023.11.20260514.0-kernel-6.1-x86_64
접속 방식       : SSH

 

 

이 실습 환경에서 UEFI → GRUB → Kernel → systemd 부팅 과정을 따라가 보겠습니다.


UEFI

운영체제가 실행되기 전에 부팅에 필요한 초기화 작업을 수행하고,
다음 단계의 부트로더 또는 운영체제 로더로 제어권을 넘기는 단계가 필요합니다.

 

이 역할을 하는 펌웨어 인터페이스가 UEFI(Unified Extensible Firmware Interface)로,
UEFI는 컴퓨터 전원이 켜졌을 때 운영체제가 실행되기 전에 가장 먼저 동작합니다.

기존에는 BIOS(Basic Input/Output System)라는 전통적인 방식이 사용되었습니다.
UEFI는 BIOS의 한계를 극복하기 위해 만들어진 후속 표준으로 볼 수 있습니다.

EC2에서는 일반 PC처럼 부팅 화면을 직접 보는 것이 아니기 때문에,
OS 내부에 남아 있는 흔적을 통해 UEFI 여부를 확인해야 합니다.

/sys/firmware/efi 디렉터리의 존재 여부로 UEFI 여부를 확인할 수 있습니다.

 

ls -lah /sys/firmware/efi

 

 

각 구성 항목은 다음과 같은 의미를 가집니다.

 

config_table     : UEFI configuration table 정보
efivars          : UEFI 변수들이 노출되는 위치
fw_platform_size : UEFI 펌웨어의 플랫폼 비트 수 정보
fw_vendor        : 펌웨어 벤더 정보
runtime          : UEFI runtime service 관련 정보
runtime-map      : UEFI runtime memory map
systab           : UEFI system table 정보

 

/sys/firmware/efi 디렉터리가 존재한다는 것은
커널이 UEFI 환경에서 부팅되었음을 인식했다는 의미입니다.


따라서 이 인스턴스는
Legacy BIOS 방식이 아니라 UEFI 방식으로 부팅되었다고 볼 수 있습니다.


GRUB

UEFI 다음에는 부트로더가 동작합니다. 리눅스 환경에서 대표적인 부트로더가 GRUB입니다.

Amazon Linux 2023에서는 부팅에 필요한 파일들을 /boot 아래에서 확인할 수 있습니다.

ls -lah /boot

 

 

vmlinuz-*    : 리눅스 커널 이미지
initramfs-*  : 초기 RAM 파일시스템 이미지
grub2/       : GRUB 관련 파일
efi/         : EFI System Partition 마운트 위치
loader/      : 부팅 항목 관련 파일

 

부트로더 : 컴퓨터의 전원이 켜진 뒤, 운영체제의 커널을 메모리에 적재하고 실행하는 프로그램



UEFI 환경에서는 EFI System Partition(ESP)이 중요합니다.

Amazon Linux 2023 이미지에서는
기본적으로 이 파티션이 /boot/efi에 마운트되는 것으로 확인됩니다.
즉, /boot/boot/efi
UEFI 이후 GRUB와 커널로 이어지는 부팅 흐름을 확인할 수 있는 중요한 위치입니다.


EFI System Partition(ESP) : UEFI 기반 시스템에서 부팅에 필요한 파일들을 저장하는 전용 파티션으로, 부팅 과정에서 UEFI 펌웨어가 참조하는 파티션에 해당

 

ls -lah /boot/efi

 

 



GRUB 설정은 /boot/grub2에서 확인할 수 있습니다.

ls -lah /boot/grub2

 

 

다음으로 확인할 파일은 /proc/cmdline입니다.

/proc/cmdline은 현재 실행 중인 커널이
부팅 시 전달받은 command line 파라미터를 보여주는 가상 파일입니다.


즉, GRUB가 커널을 실행하면서 넘긴 옵션들이
최종적으로 커널에 어떻게 전달되었는지 확인할 수 있습니다.

cat /proc/cmdline

 

 

다음과 같은 옵션을 볼 수 있습니다.

BOOT_IMAGE=(hd0,gpt1)/boot/vmlinuz-6.1.170-213.321.amzn2023.x86_64
root=UUID=afcd3653-4916-4996-a80d-b02b83e8be92
console=tty0
console=ttyS0,115200n8
nvme_core.io_timeout=4294967295
rd.emergency=poweroff
rd.shell=0
selinux=1
security=selinux

 

이 결과를 통해 GRUB가 커널을 실행하면서 BOOT_IMAGE, root, console, selinux
같은 부팅 옵션을 함께 전달했다는 흐름을 확인할 수 있습니다.


Kernel

GRUB가 커널을 실행하면 이제 Linux Kernel 단계로 넘어갑니다.

커널 버전은 다음 명령어로 확인할 수 있습니다.

uname -r

 

 

사실 이 정보는 AMI 이름에서도 미리 확인할 수 있습니다.

AMI : al2023-ami-2023.11.20260514.0-kernel-6.1-x86_64

 

커널은 부팅 과정에서 CPU, 메모리, 디스크, 네트워크 장치, 파일시스템 등을 초기화합니다.

커널 로그는 dmesg로 확인할 수 있습니다.

sudo dmesg | head -n 80

 

 

조금 더 보기 쉽게 필터링하면,

sudo dmesg | grep -Ei "Linux version|Command line|EFI|ACPI|NVMe|ENA|XFS|EXT4|systemd" | head -n 100

 

 

일부만 캡처한 결과이며,

밑에서 두 번째 줄의 Command line 에서 앞서 /proc/cmdline에서 확인했던
커널 부팅 파라미터와 동일한 내용을 다시 볼 수 있습니다.

 

구성요소는 다음과 같습니다.

Linux version : 실제 실행된 커널 버전
Command line  : 커널이 받은 부팅 파라미터
EFI           : UEFI 관련 흔적
NVMe          : EC2 루트 볼륨이 NVMe 장치로 인식된 흔적
ENA           : EC2 네트워크 드라이버 관련 흔적
XFS 또는 EXT4 : 파일시스템 마운트 관련 흔적
systemd       : 커널 이후 사용자 공간으로 넘어가는 흔적

 

GRUB가 커널을 실행하고 부팅 파라미터를 넘기면,
커널은 해당 정보를 바탕으로 시스템을 초기화합니다.
그리고 이 과정의 흔적은 dmesg 로그에서 확인할 수 있습니다.


systemd

커널이 기본적인 초기화를 마치면 사용자 공간의 첫 번째 프로세스를 실행합니다.
이 역할을 systemd가 담당합니다.


PID 1 프로세스를 확인해보면 다음과 같습니다.

ps -p 1 -o pid,comm,args

 

 

결과를 통해 커널 이후 systemd가 사용자 공간 초기화를 담당하고 있음을 확인할 수 있으며,


부팅 로그도 확인할 수 있습니다.

journalctl -b --no-pager | head -n 100

 

journalctl -b는 이번 부팅에서 systemd-journal에 기록된 로그를 보여줍니다.
여기에는 systemd 서비스 로그뿐만 아니라 커널에서 넘어온 초기 부팅 메시지도 함께 포함될 수 있습니다.

 

systemd가 부팅에 사용한 시간도 확인할 수 있습니다.

systemd-analyze

 

 

마지막으로 SSH 서비스 상태를 확인해보면,

systemctl status sshd --no-pager

 

 

systemd가 사용자 공간 초기화를 진행한 뒤 SSH 서비스까지 정상적으로 올렸다는 것을 확인할 수 있습니다.


정리

지금까지 Amazon Linux 2023 EC2 인스턴스에서 리눅스 부팅과정을 따라가 보았습니다.

  1. /sys/firmware/efi를 통해 UEFI 방식으로 부팅되었음을 확인했고,
  2. /boot/proc/cmdline을 통해 GRUB가 커널을 실행하면서 전달한 부팅 파라미터를 확인했습니다.
  3. dmesg를 통해 커널이 디스크, 네트워크, 파일시스템 등을 초기화하는 과정을 확인했고,
  4. ps -p 1, journalctl, systemd-analyze, systemctl status sshd를 통해 systemd가 사용자 공간의 첫 번째 프로세스로 실행되었고, SSH 서비스까지 올라간 흐름을 확인했습니다.

 

앞으로 지속적으로 여러 고민거리와 이를 해결하는 과정을 작성하도록 하겠습니다.

amazon-linux-boot-capture.mov
1.7 MB

 

 

참고자료

https://www.ibm.com/kr-ko/think/topics/firmware

https://uefi.org/specifications

https://uefi.org/sites/default/files/resources/UEFI_PI_Spec_Final_Draft_1.9.pdf

https://www.gnu.org/

https://docs.aws.amazon.com/linux/al2023/ug/journald.html

'Why?' 카테고리의 다른 글

운영 중인 UniFi 장비에서 NAT 규칙 확인하기  (0) 2026.05.24