1. (stage 1 bootloader) - 초기 부팅, POST, BIOS 초기화
BIOS가 부팅가능한 디스크의 첫 번째 섹터를 RAM에 로딩 후 제어권 넘겨줌
2. (stage 2 bootloader) - 실제 GRUB 부트로더 로딩
GRUB 부트로더를 RAM에 로딩 후 엔트리 포인트로 점프
3. GRUB 부트로더 실행
GRUB 부트로더가 압축된 커널 이미지 (e.g. vmlinuz)와 initramfs 를 전달받아 다음을 수행함
- 로우 레벨 하드웨어 초기화
- 커널 이미지를 특정 용량으로 압축해제 하여 RAM에 적재
- 커널 엔트리 포인트로 점프
4. 리눅스 커널이 제어권을 받아 하드웨어와 소프트웨어 환경 초기화.
이전 단계에서 부트로더가 수행했던 일과 관계없이 수행
5. 초기화가 끝난 후 커널은 initramfs 의 존재유무를 확인 (CONFIG_BLK_DEV_INITRD 옵션이 y 인지 확인)
6. 존재할 경우, initramfs(initrd)를 일시적인 root filesystem 으로 마운트 (within RAMdisk)
7. initrd startup scripts 가 실행되어 필요한 커널 모듈을 RAM에 로딩 (in effect, loading the root filesystem drivers or other filesystem module if needed )
8. 커널은 pivot_root 를 수행하여 현재 root filesystem 으로 지정된 initrd 를 언마운트 후 실제 root 로 변경
이 단계부터 파일시스템 지원을 제공하는 커널 모듈이 사용가능해짐
9. 루트 파일시스템이 정상적으로 마운트 되면, 시스템 초기화가 시작됨. 커널은 최종적으로 첫번째 유저 스페이스 프로세스 (=PID 1 , /sbin/init or systemd)를 부름
10. SysV init이 시스템을 초기화, 시스템 서비스를 실행함.
- 9~10번 단계에 관한 자세한 설명은 아래 링크 참조
Linux System Process Initialization (SysV)
Linux System Process Initialization (SysV) Traditionally, Linux systems (and Unix systems before them) have used a sequential startup mechanism, which is described here. There is another page that describes a newer mechanism, known as Upstart and yet anoth
glennastory.net
- 대부분의 현대 리눅스 시스템에선 9, 10번 단계를 systemd가 수행한다.
출처: Linux Kernel Programming
'미분류 > Kernel' 카테고리의 다른 글
| [Linux] vmlinux 와 bzImage (0) | 2022.02.21 |
|---|