■ 리눅스 시스템의 부팅
PC의 전원이 켜지는 순간부터 로그인 프롬프트가 출력될 때 까지가 리눅스의 부팅이다.
부팅 과정은 PC 부팅과 리눅스 부팅으로 나뉜다.
- 바이오스 단계
PC의 전원 스위치를 키면 ROM에 저장된 바이오스가 가장 먼저 동작한다.
이 단계에서 HW 검사 → 부팅 장치 선택 → MBR 로드 → 부트 로더 로드 의 작업을 수행한다.
- 부트 로더 단계
MBR로 인해 부트 로더가 메모리에 올라가면 부팅할 운영체제를 선택할 수 있는 메뉴를 제공하고
리눅스 커널을 메모리에 로딩한다.
- 커널 초기화 단계
부트 로더로 로딩된 커널은 메모리, 디스크, 키보드, 마우스 등에 대해 장치 검사*를 하고
fork를 사용하지 않고 프로세스와 스레드를 생성한다. 이후 systemd 서비스를 동작한다.
장치들이 사용 가능한 상태로 유지되는지 여부
- systemd 서비스 단계
본격적으로 동작하는 것으로 봐도 무방한 단계.
데몬을 모두 실행한뒤 그래픽 로그인 시스템(GDM)을 동작시키고 로그인 프롬프트 화면을 출력
■ systemd 서비스
systemd란? 리눅스의 시스템과 서비스 관리자로 유닉스의 init 프로세스가 하던 작업을 수행
1. 다양한 서비스 데몬 실행
2. 프로세스들의 상태 유지
3. 시스템의 상태 관리
- init 프로세스와 런레벨
init 프로세스는 더 이상 사용하지 않음. (init 프로세스 → systemd)
런레벨이란? 시스템의 상태를 7개로 정의해 현재 상태를 나타내는 한 자리 숫자 (문자 S, s 포함)
- systemd 기본 개념
init에 비해 여러가지 장점을 가지는 systemd는 '유닛'이라는 구성 요소를 사용해 전체 시스템을 관리한다.
관리 대상의 이름은 '서비스명.유닛 종류'의 형태로 관리한다.
유닛 | 기능 | 예 |
service | 시스템 서비스 유닛. 데몬을 시작·종료·재시작·로드 | atd.service |
target | 유닛을 그루핑 | basic.target |
automount | 디렉터리 계층 구조에서 자동 마운트 포인트를 관리 | proc-sys-fs-binfmt_misc.automount |
device | 리눅스 장치 트리에 있는 장치 관리 | sys-module-fuse.device |
mount | 디렉터리 계층 구조에서 마운트 포인트를 관리 | boot.mount |
path | 파일 시스템의 파일이나 디렉터리 등 경로를 관리 | cups.path |
scope | 외부에서 생성된 프로세스를 관리 | init.scope |
slice | 시스템 프로세스를 계층적으로 관리 | system-getty.slice |
socket | 소켓 관리 유닛. 소켓 스트림과 데이터그램, 큐를 지원 | dbus.socket |
swap | 스왑 장치 관리 | dev-mapper-fedora~.swap |
timer | 타이머 관련 기능 관리 | dnf-makecache.timer |
- systemd 관련 명령
systemctl [옵션] [명령] [유닛명] : systemd 서비스를 제어
-a : 상태 관계 없이 유닛 전체 출력
-t 유닛 종류 : 지정한 유닛만 출력
-start : 시작 / stop : 정지 / reload : 설정 파일 다시 읽어오기 / restart : 재시작 / status : 상태 출력
-enable : 부팅 시 유닛 시작 / disable : 부팅 시 유닛 시작 X
-is-active : 동작 여부 확인 / is-enabled : 시작 여부 확인
-isolate : 지정 유닛과 관련된 유닛만 시작, 나머지 정지 / kill : 시그널 전송
- systemd와 런레벨
■ 리눅스 시스템의 종료
- shutdown 명령
가장 정상적으로 종료하는 방법. 시스템 종료 외에 런레벨을 바꿀 때도 사용할 수 있다.
shutdown [옵션] [시간] [메시지] : 리눅스를 종료
-k : 종료 X, 메세지 전달
-r : 재시작
-h : 종료 및 halt 상태로 이동
-f : 빠른 재시작
-c : 이전에 내린 shutdown 명령 취소
- 런레벨 변경 명령
telinit 명령으로 런레벨을 0으로 변경하면 종료, 6으로 변경하면 재시작된다.
단, systemd 기능을 사용할 때 target을 바꿔야한다.
- 기타 시스템 종료 명령
halt, poweroff, reboot 명령은 시스템 종료 기록을 남기고 종료하거나 재시작한다.
모두 systemctl의 심볼릭 링크로 결국 systemctl을 사용하는 것과 같다.
런레벨이 1~5일 때 내부적으로 shutdown 명령을 호출한다.
■ 데몬 프로세스
데몬이란? 백그라운드에서 동작하며 특정 서비스를 제공하는 프로세스
- 데몬의 동작 방식
스스로 동작하는 독자형, 데몬을 관리하는 슈퍼데몬에 의해 동작하는 2가지 방식이 존재.
각각 장단점이 존재 (독자형 - 자원 낭비 가능성, 슈퍼데몬 - 효율적인 자원 관리)
- 슈퍼데몬
네트워크 서비스를 제공하는 데몬만 관리
- 데몬의 조상
대부분의 데몬을 동작시키는 조상 데몬이 있다. 바로 systemd와 커널 스레드
- 주요 데몬
매우 다양한 데몬들이 존재하고, 사용자가 필요하다면 만들 수도 있다.
■ 부트 로더
리눅스에는 LILO와 GRUB라는 두 가지 부트 로더가 있다. CentOS에서는 GRUB를 기본으로 지원.
- GRUB의 개요
'grand unified bootloader'의 약자. 기존의 부트 로더 LILO의 단점을 보완해 설정과 사용이 쉽고,
멀티 부팅 기능, 부팅 시 명령 사용 가능, 윈도우 지원의 장점이 존재한다.
- GRUB2 관련 디렉터리와 파일
/boot/grub2/grub.cfg 파일은 menu.lst 대체하는 기본 설정 파일이다.
직접 수정할 수 없어 /etc/default/grub 파일과 /etc/grub.d 디렉터리 아래 스크립트를 수정해야 한다.
/etc/grub.d 디렉터리는 GRUB 스크립트를 가지고 있다.
GRUB 명령 실행 시 스크립트 내용이 순서대로 실행되어 grub.cfg 파일이 생성된다.
/etc/default/grub 파일에는 GRUB 메뉴 설정 내용이 저장되어 있다.
GRUB 스크립트가 이 파일을 읽어서 grub.cfg에 기록한다.
'개인 공부 > Linux (CentOS 리눅스)' 카테고리의 다른 글
CentOS 리눅스 : 소프트웨어 관리 (9장) (0) | 2022.06.17 |
---|---|
CentOS 리눅스 : 연습문제 해답 (8장) (0) | 2022.06.17 |
CentOS 리눅스 : 연습문제 해답 (7장) (0) | 2022.06.17 |
CentOS 리눅스 : 파일 시스템과 디스크 관리 (7장) (2) | 2022.06.16 |
CentOS 리눅스 : 연습문제 해답 (6장) (0) | 2022.05.04 |
댓글