운영체제 기본/x86-64 Linux의 BIOS 부팅
외관
Linux 커널이 제어를 넘겨받은 뒤, 사용자 공간의 첫 프로그램을 실행하기까지의 과정을 따라간다. 기준은 Linux v6.12, x86-64, bzImage의 64비트 부트 프로토콜이다. 다른 부팅 방식과 갈라지는 지점은 해당 장에서 구분한다.
전체 흐름은 진입 환경 준비 → 압축 해제된 커널의 초기화 → PID 1 생성 → init 실행이다. 아래 장을 순서대로 읽으며 각 단계가 무엇을 넘겨받고 무엇을 준비해 다음 단계로 넘기는지 살펴본다.
읽는 순서
- 진입 규약과 압축 해제 — 로더가 준비할 CPU 상태와 부트 정보, 두 startup_64의 차이.
- 커널 초기화 — 초기 주소 공간과 C 실행 환경에서 start_kernel까지.
- PID 1 생성 — 부트 태스크에서 별도 태스크를 만들고 나머지 초기화를 이어가는 과정.
- init 실행과 사용자 모드 진입 — /init과 init=의 선택, exec, 실제 사용자 모드 전환.
함수 호출, 주소로의 분기, 태스크 생성, 프로그램 교체는 서로 다른 사건이다. 흐름도의 화살표를 읽을 때 이 차이를 구별하면 부팅 경로를 이해하기 쉽다.