본문 바로가기

WIL/TIL

1. 리눅스 커널의 부팅 과정 (레거시)

해당 게시글은 [컴퓨터 부팅과정]을 공부하고 정리한 글입니다.
신입의 관점에서 정리한 내용으로, 일부 설명이나 예제가 부족하거나 잘못된 해석이 포함되었을 수 있습니다.
혹시 잘못된 부분이나 부족한 내용이 있다면 댓글이나 피드백으로 알려주시면 감사드리겠습니다.


1. 리눅스 커널의 부팅 과정 (레거시)

1. 전압 공급

→ 컴퓨터가 부팅하려면 우선 CPU와 모든 전자 부품에 일정하고 안정적인 직류 전압이 공급되어야 합니다.

(1) 사용자가 전원 버튼을 누르면 전기적 신호가 파워서플라이로 전달됩니다.
(2) 파워서플라이는 컴퓨터에 들어오는 교류 전류직류 전압으로 변환하여 메인 보드와 여러 장치들에 전원을 공급합니다.


2. 하드웨어 준비

→ 하드웨어가 동작 가능한지 확인하려면 하드웨어 상태를 확인할 프로그램이 필요합니다. 하지만 컴퓨터의 전원이 켜지면서 CPU에 RAM은 초기화된 상태입니다.

(1) 실행시킬 프로그램을 찾기 위해 메인보드의 ROM(펌웨어 저장 영역)에서 BIOS 펌웨어를 실행합니다. ROM은 전원이 꺼져도 데이터가 유지되므로 해당 프로그램이 저장되어 있습니다.
(2) BIOS 펌웨어는 POST(Power-On Self Test)를 통해 하드웨어를 사용할 수 있게 초기화하고 점검합니다.


3. 부팅 가능한 장치 찾기 (운영체제가 저장된 스토리지를 찾는 것)

 BIOS 초기화가 끝나면, 부팅 가능한 장치를 찾아야 합니다.

(1) BIOS 설정에 저장된 부팅 순서에 따라 하드디스크 등을 차례로 검사합니다.
(2) 부팅 가능한 장치를 찾으면, 해당 장치의 MBR(Master Boot Record)을 메모리에 읽어옵니다.
(3) BIOS는 MBR의 부트코드를 실행합니다.

※ MBR란?
- 정의: BIOS 방식 부팅에서 디스크의 가장 첫 번째 섹터(LBA 0, 512B) 에 존재하는 레코드로, 부트스트랩 코드 + 파티션 테이블 + 부트 시그니처로 구성됩니다.

https://positivemh.tistory.com/77


4. 부트로더 실행 (운영체제를 메모리로 불러오고 준비하기)

MBR의 부트 코드가 실행되면, 부트로더(bootloader)가 로드되어 OS의 핵심 부분(커널)을 메모리로 불러오고 실행할 준비를 합니다.

(1) BIOS가 MBR의 1단계 부트로더를 실행합니다.
(2) 1단계 부트로더는 매우 작고 단순함으로 1.5단계의 부트로더를 로드하여 2단계 부트로더를 로드할 준비를합니다. 
(3) 1.5단계 부트로더2단계 부트로더가 저장된 위치를 저장하고 있으므로 파일 시스템을 읽어 2단계 부트로더를 호출합니다.
(4) 2단계 부트로더는 커널을 시작하기 전에 부팅에 필요한 환경 설정(예: 하드웨어 초기화, 메모리 매핑)을 수행합니다.
(5) 2단계 부트로더는 커널 이미지를 디스크에서 읽어 RAM에 복사합니다.
(6) 커널이 메모리에 완전히 적재되면, 2단계 부트로더는 CPU의 제어권을 커널에 넘깁니다.

더보기

부트로더의 단계별 역할

1단계 부트로더 (Stage 1 Bootloader)

  • 위치: MBR(디스크의 첫 번째 섹터, 512바이트)에 저장.
  • 역할: BIOS가 부팅 장치를 선택한 후 MBR의 부트 코드를 실행. 이 코드는 매우 작고 단순하며, 주로 1.5단계 또는 2단계 부트로더를 로드하기 위한 준비 작업을 수행. 디스크의 특정 위치(예: 파티션 테이블이나 추가 부트 코드가 있는 섹터)를 찾아 실행.
  • 특징: MBR의 크기 제한(446바이트 코드 영역)으로 인해 기능이 제한적이며, 직접 OS 커널을 로드하기보다는 다음 단계를 호출.

1.5단계 부트로더 (Stage 1.5 Bootloader)

  • 위치: MBR 바로 뒤의 디스크 섹터(예: 첫 번째 파티션 시작 전의 여유 공간).
  • 역할: 1단계의 크기 제한을 극복하기 위해 추가 코드를 로드. 파일 시스템 드라이버를 포함하여 2단계 부트로더가 저장된 위치(예: 특정 파티션)를 인식하고 로드. 1단계와 2단계 사이의 중간 다리 역할.
  • 특징: 모든 부트로더가 1.5단계를 사용하는 것은 아니며, 주로 GRUB 같은 현대 부트로더에서 복잡한 파일 시스템(예: ext4, NTFS)을 읽을 때 사용.

2단계 부트로더 (Stage 2 Bootloader)

  • 위치: 디스크의 특정 파티션 내 파일 시스템(예: /boot 디렉토리).
  • 역할: 가장 복잡한 단계로, 운영체제의 커널을 메모리에 로드하고 부팅에 필요한 설정(예: 커널 매개변수)을 전달. 사용자 인터페이스(예: GRUB 메뉴)를 제공해 사용자가 부팅할 OS나 커널 버전을 선택할 수 있도록 지원.
  • 특징: 크기 제한이 없어 고급 기능(하드웨어 초기화, 메모리 매핑 등)을 포함. GRUB, Windows Boot Manager 등이 대표적.

5. 커널 실행

(1) 커널은 CPU, 메모리, 입출력 장치 등을 인식하고, 필요한 디바이스 드라이버를 로드합니다.
(2) 커널은 파일 시스템을 루트(/)에 마운트하여 운영체제의 핵심 파일들을 사용할 수 있도록 준비합니다.


6. 초기 프로세스 실행과 사용자 환경 준비

(1) 커널은 첫 번째 프로세스인 /sbin/init(SysVinit, PID 1)을 실행합니다.
(2) init/etc/inittab 설정 파일을 읽어 시스템 초기화 절차(런레벨, 실행할 서비스)를 결정합니다.
(3) 각종 서비스와 데몬을 실행하여 운영체제 환경을 완성합니다.
(4) 초기화가 끝나면 로그인 화면 또는 GUI 데스크톱 환경이 실행됩니다.
(5) 사용자가 로그인하면 로그인 셸이 실행되고, 본격적으로 시스템을 사용할 수 있습니다.

'WIL > TIL' 카테고리의 다른 글

쉘 명령어 동작 과정 (작성중)  (3) 2025.08.15