(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 |