컬쥐네 다락방

리눅스 | 부트 프로세스 본문

클라우드/리눅스

리눅스 | 부트 프로세스

코딩하는 갱얼쥐 2022. 3. 3. 12:32

1단계 시스템 전원 on

 

2단계 BIOS 프로그램의 실행

POST (Power On Selt Test) : 부팅이 시작되면 컴퓨터는 가장 먼저 자체 진단 기능을 통해 컴퓨터의 이상 유무를 검사

컴퓨터에 전원이 들어오면 전류는 CPU로 흘러 들어가고 CPU는 BIOS 프로그램을 부른다.

BIOS 프로그램은 CPU를 시작으로 CMOS를 검사하고, 메모리 테스트 후 용량을 확인한다.

그래픽 카드, 키보드 등 각종 장치의 이상 유무를 검사하고 초기화 하는 단계.

 

3단계 부트 매체의 검색

POST 과정에서 하드웨어 검사가 무사히 완료되면 검색된 부팅 매체 (HDD,ODD 등) 중 CMOS에 설정된 순서대로 부팅을 시도한다.

MRB (Master Boot Record)에 존재하는 부트로더 GRUB를 읽어 부트 로더가 메모리에 적재되고, 시스템 제어권을 부트로더가 갖게 된다.

 

4단계 부트 로더의 실행

부트 로더는 kernel을 메모리에 올려놓는다. kernel 이미지를 불러들이고 시스템의 제어권을 넘겨온다.

 

5단계 커널 부트 이미지 적재

GRUB의 부트 메뉴에서 kernel을 선택하면 kernel 이미지가 동작한다.

kernel 이미지는 압축되어 있기 때문에 PID 0번인 swapper 프로세스를 호출한다

swapper 프로세스는 kernel 이미지를 압축해제하고 kernel이 사용할 각 장치를 초기화한다.

 

6단계 루트 파일 시스템 마운트

하드웨어의 검색 후 커널은 루트(/) 파일 시스템을 마운트한다.

마운트는 안전하게 점검될 수 있도록 읽기 전용으로 마운트한다. 이후 읽기/쓰기로 마운트가 이뤄진다.

 

7단계 systemd 프로세스 실행

모든 프로세스의 부모 역할을 하는 PID 1번인 systemd 프로세스를 실행한다.

systemd 프로세스는 사용자가 시스템을 사용할 수 있도록 시스템 초기화를 진행한다.

기본 시스템 초기화 스크립트인 local-fs.target을 통해 파일 시스템 점검

systemd = > default.target (grphical.tearget or multi-user.target )실행

이후 sysinit.target을 시작으로 필요한 스크립트를 통해 커널 모듈의 메모리 적재, 스왑 파티션 초기화, 네트워크 초기화, 시비스 프로세스 관리, 가상 콘솔 접속 관리, 실행 레벨 관리를 실행한다.

graphical.target -> GUI 환경 구성. 그래픽 모드에서 사용할 수 있는 서비스같은 유닛들이 실행

multi-user.target => CLI 환경 구성. 기본적으로 사용되는 서비스 유닛들이 실행(네트워크, 웹 서비스, rsyslog 서비스 등)

basic.target => SELINUX, 네트워크 환경 구성. 보안 서비스 (SELinux), microcode 등

sysinit.target => 마운트 안정화

local-fs.target => /etc/fstab에 등록된 마운트 작업

rescue.target => single mode root/ 비번이 필요. 네트워크 사용 불가능, /read/wirte 읽기쓰기모드

emergency.target => single mod root/ 비밀번호 불필요. 네트워크 불가능 읽기 모드

Comments