(Week 4 - Day 3) - (1/2)

리눅스 부트 프로세스

리눅스를 부팅하는 동안에 발생하는 단계별 초기화 프로세스

 

부팅 절차(공통)

POST

- Hardware상에서 문제가 없는지 확인하는 작업

- BIOS 또는 UEFI에서 이 과정을 거친 뒤에 선택에 따라 사용자가 추가하거나 변경한

- 디바이스를 설정할 수 있도록 한다.

Booting 가능 장치 확인

CD/DVD -> ODD, HDD, SSD, NIC등을 찾느다.

BIOS에서 부팅 가능한 장치의 순서를 찾는다.

MBR

- Master Bood Record

- 파티션의 정보를 가지고 있다.

- 그 이후 부트 로더를 찾아서 메모리에 적재한 뒤 시스템의 제어권을 부트 로더에게 전달한다.

Boot Loader

- /boot/grub2/gurb.cfg, /etc/default/grub. /etc/grub.d 디렉토리에 존재하는 파일을 메모리에 적재

- 부팅 가능한 커널의 목록을 화면에 출력

- 5초간 입력 없을 시, 최상단 커널 실행

- 'e'키 입력시, /boot/grub2/grub.cfg파일 출력(root pwd 복구, 타겟 유닛 지정 가능)

Kernel

- /boot 디렉토리에 존재하는 initramfs 압축파일 해제하면서 램 디스크 초기화 진행

- 루트 파일 시스템은 /sysroot로 마운트

- initramfs 파일은 /sysroot에 압출 해제 후 필요한 파일들을 메모리에 적재

- 이후 사용 프로세스에 따라 진행 과정 변경(init or systemd)


Init 부팅

- init 프로세스에는 PID 1번이 할당되고 필요한 모든 프로세스 실행

- 그 뒤에 /etc/initab 파일에 등록된 정보를 토대로 런 레벨 결정

- /etc/rc.d/rc.sysinit 파일을 실행해서 스왑이나 네트워크 설정 초기화

- /etc/initab 파일에 저장된 런 레벨을 실행

- 로그인 화면 출력

Systemd 부팅

Systemd

initramfs 파일 해제하고 systemd를 실행하여 메모리에 적재

default.target 활성화후 의존성 관계에 있는 유닛들을 모두 활성화한다.

default.target

- 심볼릭 링크 파일

- 가장 먼저 실행되어 어떤 타켓 유닛으로 부팅을 진행할지를 정한다.

graphical.target

- GUI를 지원하는 다중 사용자 모드

- /etc/systemd/system/graphical.target.wants 내에 존재하는 유닛들을 실행

- 실행 이전에 multi-use.target(CLI기반 다중 사용자 모드)이 먼저 활성화되어야 한다.

multi-user.target

- /etc/systemd/system/multi-user.target.wants 내에 존재하는 유닛들을 실행한다.

- 마찬가지로 실행 이전에 basic.target이 활성화되어야 한다.

basic.target

- firewalld, microcode, SELinux, 커널 메시지와 관련된 서비스 시작

- or 모듈 로드

- /etc/systemd/system/basic.target.wants 디렉토리에 존재하는 유닛들을 실행한다.

- 역시나 실행 이전에 sysinit.target이 활성화되어야 한다.

sysinit.target

- 시스템 마운트, 스왑, 커널의 추가 옵션을 실행하는 서비스 시작

- /etc/systemd/system/sysinit.target.wants 디렉토리에 존재하는 유닛들을 실행한다.

- 또... 실행 이전에 local-fs.target이 활성화되어야 한다.

local-fs.target

- /etc/fstab에 등록된 마운트 정보로 파일시스템을 마운트한다.

- 어.... local-fs-pre.target이 활성화되어야 한다...

Systemd 타겟 유닛

부팅 시 타겟 유닛 구조

런 레벨 vs 타겟 유닛

systemd에서는 런 레벨을 사용하지 않고, 타겟 유닛을 사용한다.

하지만 런 레벨과 같은 기능을 하도록 매핑되는 타겟 유닛이 존재한다.

(모두 매핑되는 것은 아니다.)

Runlevel target 유닛 설명
0 poweroff.target 시스템을 셧다운하고 종료
1 rescue.target 복구 쉘
2 multi-user.target 커맨드 환경의 다중사용자 모드
3 multi-user.target 커맨드 환경의 다중사용자 모드
4 multi-user.target 커맨드 환경의 다중사용자 모드
5 graphical.target 그래픽 환경의 다중사용자 모드
6 reboot.target 시스템을 셧다운하고 재부팅

'Linux' 카테고리의 다른 글

[Linux] 20. SELinux  (0) 2022.08.09
[Linux] 19. 소프트웨어 패키지  (0) 2022.08.03
[Linux] 17. 로그 관리  (0) 2022.08.02
[Linux] 16. Systemd  (0) 2022.08.02
[Linux] 15. 논리 볼륨(LVM)  (0) 2022.08.01
복사했습니다!