• [SWUFORCE] 부팅 절차 (Boot Process)

    2026. 3. 31.

    by. 김예삐

    부팅 절차 (Boot Process)

    (1) 공통 부팅 절차 - 전원 ON부터 OS 시작까지

    [전원 ON → ROM BIOS → Pre-POST → POST 1~8 → MBR 로드 → 파티션 검색 → VBR 로드 → OS 부팅]

    * 참고로 이 흐름은 레거시 BIOS + MBR 방식을 기준으로 정리

     

    ① ROM BIOS  (Power On)

    - 전원을 누르면 CPU가 ROM BIOS 라는 곳에 저장된 프로그램을 가장 먼저 실행 

    - 전원 공급기가 외부 전압을 시스템 동작 전압으로 바꿔 CPU에 전달

    - CPU가 리셋되고, BIOS의 시작 코드를 실행

     

    ② POST 기본 테스트 (Pre-POST)

    - POST(Power On Self-Test)는 컴퓨터가 부품들이 제대로 살아있는지 스스로 점검하는 과정

    - 쉽게 말해, 컴퓨터가 지금 부팅해도 되는 상태인지 확인하는 검사

    - 부트 프로그램이 가장 먼저 CPU 이상 유무를 테스트

    - 테스트 결과가 ROM BIOS 저장 값과 일치하면 POST 작업 시작 

     

    단계 검사 항목 설명
    POST 1 시스템 버스 각 부품들이 서로 데이터를 주고받는 통로가 정상적으로 작동하는지 확인
    POST 2 시계(RTC) 컴퓨터 내부 시계가 제대로 작동하는지 확인
    POST 3 모니터(비디오) 화면에 내용을 정상적으로 표시할 수 있는지 확인
    POST 4 RAM(메모리) 임시 작업 공간인 메모리가 정상적으로 동작하는지 확인
    POST 5 키보드 키보드가 제대로 연결되어 있고 입력이 가능한지 확인
    POST 6 드라이브 HDD, SSD 같은 저장장치가 정상적으로 연결되어 있는지 확인
    POST 7 결과 비교 검사 결과가 기존 시스템 설정과 일치하는지 확인
    POST 8 추가 부품 SCSI 같은 추가 장치가 있으면 이를 인식하고 불러오는지 확인

     

    ③ MBR 로드 및 부팅 파티션 검색 (MBR)

    - MBR을 하드디스크 맨 첫 번째 섹터(512바이트)에 있음

    - BIOS 설정에서 정한 부팅 순서대로 장치 탐색

    - MBR의 파티션 테이블을 탐색해 부팅 가능한 파티션 검색

    - MBR 끝 2바이트는 부팅 서명 0x55AA

    - 파티션 테이블을 보고 OS가 설치된 파티션을 찾음

     

    ④ VBR 로드 (VBR)

    - Active 파티션 VBR(Vloume Boot Record)을 메모리에 로드

    - VBR은 해당 파티션 OS 로더를 메모리에 적재하는 역할 수행

    - 이후부터는 OS별 고유 부팅 절차가 시작됨

     

     

    (2) DOS 부팅 절차 

    - DOS는 아주 옛날 OS

    [MBR → VBR → IO.SYS → MSDOS.SYS → CONFIG.SYS → COMMAND.COM → AUTOEXEC.BAT → DOS 프롬프트]

     

    ① IO.SYS 로드 및 실행

    - 하드웨어와 DOS 사이의 통역사 역할 (키보드·화면·저장장치 같은 장치들을 DOS가 쓸 수 있게 준비해줌)

    - VBR 부트 프로그램이 루트 디렉터리의 IO.SYS를 메모리에 로드

    - IO.SYS 내부의 SYSINIT가 다음 단계인 MSDOS.SYS를 읽어 메모리에 복사

    - IO.SYS는 BIOS와 DOS 사이의 하드웨어 추상화 계층 역할 수행

    - 쉽게 말해, DOS가 키보드·화면·디스크 같은 장치를 쓸 수 있게 중간에서 도와주는 파일

     

    ② MSDOS.SYS 실행

    - DOS의 핵심 운영 코드로, 파일 읽기·쓰기, 장치 관리 같은 OS의 기본 기능 담당 

    - SYSINIT가 MSDOS.SYS를 실행

    - 기본 장치 드라이버 초기화, 시스템 장치 상태 점검

    - 기본적인 DOS 실행 환경 및 파일시스템(FAT) 구성

     

    ③ CONFIG.SIS 처리 후 COMMAND.COM 실행

    - CONFIG.SYS는 시동 전에 읽는 설정 파일 같은 것. 

    - SYSINIT가 CONFIG.SYS를 읽어 하드웨어 드라이버 및 확장 메모리 관리자를 메모리에 로드

    - 기존 SHELL이 없다면 우리가 명령어를 입력하는 기본 쉘 COMMAND.COM을 실행

    - COMMAND.COM이 로드되면 SYSINIT 메모리 영역은 덮어써져 종료됨

     

    ④ AUTOEXEC.BAT 수행 (자동 실행 스크립트)

    - 부팅할 때마다 자동으로 실행하고 싶은 명령들을 여기에 기록 

    - AUTOEXEC.BAT 있으 COMMAND.COM에 의해 자동 실행

    - 경로(PATH) 설정, 사운드카드 설정, 기타 환경변수 설정 등 부가 설정 처리 

    - 없을 경우 DATE, TIME 명령 실행 후 카피라이트 메시지 출력

     

    ⑤ DOS 프롬프트 표시 완료

    - 깜빡이는 커서의 DOS 프롬프트(c:\>_)가 표시되면 부팅 완료

     

    (3) Window NT / 2000 / XP 부팅 절차

    [MBR → VBR → NTLDR → NTDETECT.COM → NTOSKRNL.EXE → HAL.DLL → SMSS.EXE → WINLOGON.EXE → 로그인 화면]

     

    ① NTLDR (NT Loader)

    - NTLDR은 전체 부팅 과정을 지휘하는 부트 로더 역할 수행

    - VBR 2번째 섹터에서 NTLDR 위치 정보를 읽어 로드 (NTLDR은 전체 부팅 과정을 지휘하는 사회자 같은 역할!)

    - CPU를 16비트 Real Mode 에서 32비트 Protected Mode로 전환

    - 파일 시스템(NTFS/FAT32) 초기화

    - BOOT.INI 파일을 읽어 부트 메뉴 설정 (F8 고급 옵션 포함)
    * BOOT.INI는 그냥 테스트 파일이 아니라, Windows의 위치 같은 내용이 기록되어 있음 

    - 듀얼 부팅 시 BOOTSECT.DOS 수행, SCSI 있으면 NTBOOTDD.SYS 로드

     

    ② NTDETECT.COM - 하드웨어 탐지

    - NTLDR이 NTDETECT.COM을 로드하여 현재 설치된 하드웨어 정보 수집

    - 수집 결과를 HEKY_LOCAL_MACHINE\HARDWARE에 반영 (메모리 상의 레지스트리 하이브)

    - 복수 하드웨어 프로필이 있을 경우 프로필/구성 복구 메뉴 표시

     

    ③ NTOSKRNL.EXE - 커널 초기화

    Phase 0 - 최소 초기화 (인터럽트도 꺼진 상태로, 아주 기본적인 것만 먼저 준비) 

    - Microkernel 자체 초기화, Executive Subsystem 초기화

    - 인터럽트 비활성 상태에서 가장 기본적인 자료구조 설정

    phase 1 - 완전 초기화 (메모리 관리자, 드라이버, 보안 시스템 등 본격 가동)

    - Object Manager, Executive, Microkernael, Security Reference Monitor, Mevory MAnager, LPCS, I/O Manager, Process Manager 순차 초기화

    - 이 단계에서 그래픽 모드 전환 및 로딩 상태바 표시

    - HAL.DLL, 시스템 레지스트리, 부트 드라이버, TCP/IP 스택 등도 함께 로드

    * HAL.DLL은 하드웨어 차이를 소프트웨어가 신경쓰지 않도록 해주는 중간 다리

    - 쉽게 말해, 운영체제가 하드웨어를 좀 더 편하게 다루게 도와주는 층

     

    ④ SMSS.EXE

    - 윈도우가 제대로 작동하기 위한 환경을 준비

    - 기본 초기화 완료 후 Session Maneger(SMSS.EXE) 로드

    - 추가 레지스트리 설정 및 Win32 서브시스템(WIN32K.SYS) 수행 환경 구성

    - 페이지 파일(PageFile) 생성, Known DLL 목록 설정, 환경 변수 초기화

     

    ⑤ WINLOGON.EXE → LSASS.EXE → 로그인 

    - 로그인 화면이 뜨고, LSASS.EXE가 아이디와 비밀번호를 검사. 맞으면 바탕화면으로 이동~

    - WINLOGON.EXE 로드 → LSASS.EXE (Local Security Authority) 실행 → 로그인 화면 표시

     

    (4) Windows Vista / 7 부팅 절차

    - XP 까지는 NTLED이 중심이었지만, Vista 부터는 역할이 둘로 나뉨

    - BOOTMGR(부팅 메뉴 담당) + WINLOADS.EXE(OS 로딩 담당)

    - BOOT.INI 텍스트 파일이 BCD 라는 데이터베이스로 바뀜

    [MBR → VBR → BOOTMGR → BCD → WINLOAD.EXE → NTOSKRNL.EXE → SMSS.EXE → WINLOGON.EXE → 로그인 화면]

     

    ① BOOTMGR.EXE - Boot Manager

    - XP의 NTLDR에서 분리된 부팅 메뉴 전담 관리자

    - BCD에서 기본 부팅 정보(OS 목록, 타임아웃, 기본 항목)를 읽음

    - 절전(하이버네이션 상태)이면 WINRESUME.EXE를 로드하여 절전 복구

    * BCD는 XP의 BOOT.INI를 대체한 것 (텍스트 파일이 아니라 부팅 설정을 저장하는 데이터베이스 형태)

     

     

    ② WINLOAD.EXE - OS Loader

    - XP의 NTLDR+NTDETECT 역할을 하나로 합친 버전 (커널과 필요한 파일들을 메모리에 로드)

    - Boot Manager가 WINLOAD.EXE를 로드 (XP의 NTLDR + NTDETECT 역할 통합)

    - NTOSKRNL.EXE, HAL.DLL, 부트 드라이버, 시스템 레지스트리 하이브 로드

    - OslArchTransferTokernel 함수로 커널에 제어권 넘김

     

    ③ NTOSKRNL.EXE - 커널 초기화

    Phase 0

    - 커널 자체 초기화

    - 기본 하드웨어/메모리 환경 초기화

     

    Phase 1

    - 메모리 관리자, 프로세스 관리자, I/O 관리자 등 구성요소 초기화

    - 이 단계에서 그래픽 모드 전환 및 로딩 상태 표시

     

    ④ SMSS.EXE - Session Manager

    - 기본 초기화 완료 후 SMSS.EXE 로드

    - 추가 레지스트리 및 WIN32K.SYS 수행을 위한 환경 구성

     

    ⑤ WINLOGON.EXE → LSASS.EXE → 로그인

    - SMSS.EXE가 WINLOGON.EXE를 로드

    - 사용자 세션 프로세스 생성, 서비스 시작, 장치 드라이버 로드

    - LSASS.EXE 로드 후 로그인 UI 표시

     

    (5) Linux 부팅 절차

    [MBR → VBR → GRUB → Kernel + initrd → BSS 초기화 → 커널 압축 해제 → swapper(PID 0) → init(PID 1) → 사용자 환경]

     

    ① Boot Loader - GRUB (리눅스의 부팅 메뉴)

    - 리눅스의 부트로더로, GRUB 부팅 화면에서 어떤 커널로 부팅할지 선택 가능

    - LILO와 GRUB 중 현재는 GRUB2가 표준

    - 설정 파일: /etc/grub.conf 또는 /boot/grub/grub.cfg

    - 부트 메뉴 표시 후 선택된 커널 이미지와 initrd(Initial RAM disk) 이미지 로드

    - GRUB은 Stage 1(MBR) → Stage 1.5(파일시스템 드라이버) →  Stage 2(부트 메뉴)의 3단계로 동작

     

    ② Kernel + initrd 로드

    - 부트 로더가 커널 이미지(vmlinuz)와 initrd/initramfs 이미지를 메모리에 로드

     

    ③ BSS 초기화 및 커널 압축 해제

    - 커널 이미지는 용량을 줄이기 위해 압축돼서 저장 (메모리에 올라오면 압축을 풀고 기본 환경 세팅)

    - 커널 이미지 앞부분의 간단한 하드웨어 검사 루틴 실행

    - 기본 환경 설정 및 BSS(Block Started by Symbol) 영역 초기화

    - 압축된 실제 커널 데이터(zImage / bzImage)를 메모리에 압축 해제

     

    ④ PID 0 - swapper 프로세스 (idle 프로세스)

    - 프로세스 번호 0번으로, CPU가 할 일이 없을 때 실행되는 대기 프로세스 (메모리 페이징과 CPU 검사)

    - 페이지 테이블 초기화 및 메모리 페이징 활성화

    - CPU 유형 및 FPU(Floating-Point Unit) 검사

    - swapper는 CPU가 유휴 상태일 때 실행되는 특수 프로세스

     

    ⑤ PID 1 - init / systemd 프로세스

    - 프로세스 번호 1번으로, 최초의 사용자 공간 프로세스 (모든 프로세스의 조상)

    - 전통 방식에서는 init, 현대 리눅스에서는 보통 systemd가 이 역할 수행

    - 이 프로세스가 사용자환경과 각종 서비스를 순서대로 올림

     

    (6) UEFI 부팅 절차

    왜 UEFI가 중요한가?

    - 현재 판매되는 대부분의 PC와 서버는 레거시 BIOS가 아닌 UEFI(Unified Extensible Firmware Interface) 펌웨어를 사용

    [전원 ON → SEC → PEI → DXE → BDS → ESP의 EFI 부트로더 → OS 커널]

     

    ① SEC (Security Phase)UEFI Phase

    - 펌웨어 최초 실행 단계

    - CPU 캐시를 임시 RAM으로 활용

    - 기본 보안 환경 구성

     

    ② PEI (Pre-EFI Initialization)

    - CPU·칩셋·메인보드 초기화

    - RAM 초기화 (DDR 트레이닝)

     

    ③ DXE (Driver Execution Environment)

    - UEFI 드라이버 로드 및 실행 (그래픽, 네트워크, 스토리지 등)

    - UEFI 서비스(Boot Services, Runtime Services) 초기화

     

    ④ BDS (Boot Device Selection)

    - NVRAM에 저장된 부팅 순서를 기반으로 **ESP(EFI System Partition)**에서 부트로더 검색

    - Secure Boot 활성화 시 디지털 서명이 검증된 부트로더만 실행 허용

    - 기본 경로: \\EFI\\BOOT\\BOOTX64.EFI, Windows: \\EFI\\Microsoft\\Boot\\bootmgfw.efi

     

    ⑤ EFI 부트로더 실행 → OS 커널

    - Windows: bootmgfw.efi → winload.efi → NTOSKRNL

    - Linux: grubx64.efi (GRUB2) → 커널 이미지

     

     

    참고 자료

    https://github.com/dashboard

     

    GitHub · Change is constant. GitHub keeps you ahead.

    Join the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.

    github.com

     

    댓글