-
부팅 절차 (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) → 커널 이미지

참고 자료
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
'SWUFORCE > 인프런' 카테고리의 다른 글
[인프런] 기초부터 따라하는 디지털포렌식 3 (0) 2026.04.28 [인프런] 기초부터 따라하는 디지털포렌식 02 (0) 2026.04.07 [SWUFORCE] 부팅과 데이터 저장/전송 (0) 2026.03.31 [인프런] 기초부터 따라하는 디지털포렌식 01 (0) 2026.03.24 댓글