부트스트래핑: 두 판 사이의 차이
잔글
→부트스트래핑 예시: 리눅스
잔글편집 요약 없음 |
잔글 (→부트스트래핑 예시: 리눅스) |
||
| 22번째 줄: | 22번째 줄: | ||
== 부트스트래핑 예시: [[리눅스]] == | == 부트스트래핑 예시: [[리눅스]] == | ||
# 전원이 인가되면(Power On) 1단계 부트로더가 작동한다. x86 계열 시스템에서는 BIOS/UEFI가, ARM 계열은 uboot 등이 작동한다. | |||
# 1단계 부트 로더의 작업이 끝나면 GRUB이 작동하여 3개 Stage에 따라 움직인다. | |||
## 먼저 BIOS 기준으로 MBR/VBR에 있는 core.img 파일의 첫 섹터 분량 코드가 실행된다. 이걸로는 보통 코드를 다 로드하지 못하므로 MBR 내 코드는 추가로 코드를 읽어 로딩을 한다. | |||
### UEFI의 경우 GRUB 전체가 직접 실행되기에 추가 로딩은 불필요하다. | |||
## 부팅 파티션 내 코드를 실행하기 위해 core.img 코드 내에 있는 파일 시스템 기능과 디스크 드라이버를 불러온다. | |||
## /boot/grub 내 vmlinuz(압축된 커널 파일)을 주기억장치(이하 메모리)에 압축을 풀어 로드하고, initrd.img에 있는 모든 커널 모듈/디바이스 드라이버 등을 메모리에 가져온다. | |||
# 그 다음 커널이 /var/log/dmesg(dmesg로 읽는 로그 파일)에 주변 장치 목록을 기록한 후 swapper 프로세스(PID 0)를 호출한다. swapper 프로세스는 장치 초기화를 한다. | |||
## 그 이후 루트 파일 시스템을 마운트하고 init 프로세스(PID 1)을 실행한다. | |||
# init 프로세스는 SysV와 Systemd 두 종류가 있다(전자는 정통 유닉스 방식, 후자는 우분투 리눅스 등에서 채용). | |||
## SysV 타입은 /etc 아래에 있는 수많은 설정 파일을 읽으며 각종 OS 기능을 준비한다. | |||
## Systemd 타입은 /lib/systemd/systemd에 정의된 섹션대로 초기화를 수행한다. | |||