OS/Linux

[Linux] Booting Process

ping핑이 2025. 3. 3. 14:59

시작이 반이다 라는 말이 있듯이 리눅스가 어떻게 부팅되는지도 중요할 것이다.

서버가 부팅이 안되는 상황에서 부팅 프로세스를 아는 것은 문제해결에 있어 중요할 것 이다.

 

1. BIOS/UFEI

먼저 서버의 전원버튼을 누르면 ROM에 저장돼있는 BIOS/UFEI가 실행된다.

POST(Power On Self Test)를 거치고 MBR(Master Boot Record)/GPT(GUID Partition Table)를 참조하여 부트 로더를 탐색한다.


1.1 MBR (Master Boot Record)

부트디바이스(USB, CDROM)의 첫 섹터

부트로더, 파티션테이블, 부트 시그니처로 구성되어있다.

 

1.2 GPT (GUID Partition Table)

MBR의 단점인 손상시 복구불가, 제한적인 파티션 개수, 디스크 크기 제한(2TB)를 극복함

보안 부팅 가능 (Secure Booting)

UEFI 부팅시 ESP 파티션의 efi 부트로더를 로드


 

2. Boot Loader (GRUB2)

BIOS 의 경우

MBR 을 거쳐 로더를 구동 ( stage 1 )

엑세스 할 수 없을 경우 stage 1.5 를 통해 파일시스템을 읽어옵니다.

stage 2 에서 사용자에 부팅 후보를 표시

 

UEFI 의 경우

ESP의 grub2.efi 를 바로 구동하여 부팅 후보를 표시

 

3. 커널 로드

사용자가 부팅 후보를 지정하면 grub2 는 해당 리눅스 커널(vmlinuz)을 로드합니다.

vmlinuz는 압축된 커널 이미지입니다.

 

4. initramfs

커널은 initramfs.img를 로드하고 초기화 스크립트를 실행하여 블록디바이스 및 드라이버를 초기화하 루트 파일을 마운트 합니다.

여기서 systemd[1]가 실행이 되고 /etc/fstab 마운트, /etc/systemd/system/default.target 에 따라 부팅레벨을 결정하고, NetworkManager와 같은 시작 프로세스를 기동합니다.

그 후 로그인 화면을 표시합니다.

 

실제 /boot 파일 내부의 구성입니다.

initramfs.img 파일과 vmlinuz 파일이 있는 것을 확인 할 수 있습니다.

initramfs.img의 경우 dracut -f -v 를 통해 생성 됩니다.

초기 GRUB2 설정 내용입니다.

만약 해당내용을 수정하게된다면 grub2-mkconfig -o /boot~ 명령을 통해 config를 생성해 줘야합니다.

 

도움이 되셨다면 하트한번 부탁드립니다!!

 

공격적이고 비판적인 댓글 환영합니다.