📌 개요
🔑 학습 키워드
┗ 운영체제 부팅 과정: BIOS, MBR 영역, 부트 로더(GRUB), 커널, systemd
┗ 초기화 데몬(systemd): PID1번에 해당하는 조상 프로그램 -> 다른 백그라운드 프로그램을 관리함
┗ 유닛: systemd가 관리하는 시스템 자원, 서비스와 같은 시스템 구성요소(컴포넌트) 의미
┗ 타깃(런레벨): systemd 유닛 종류 중 하나
┗ systemctl: systemd 을 사용자가 직접 제어하기 위한 인터페이스(제어용 CLI 도구)임
┗ 시스템 종료: systemctl, shutdown(종료 및 재부팅 영역에선 좀 더 다양한 기능 제공)
💡 1. 운영체제의 부팅
[ 리눅스 일반적인 부팅 과정 ]
['부팅 과정']
(1) 전원ON
(2) ROM BIOS(부트 펌웨어)가 MBR 영역에 존재하는 부트 블록 프로그램 실행
(3) 블록 프로그램 -> 운영체제 파티션에 있는 부트 로더(GRUB, LILO 등)를 실행
(4) 부트 로더(GRUB) -> 리눅스 커널 이미지 & initramfs(부팅에 필요한 임시 파일시스템) 로드
(5) 커널 실행
(6) 커널 -> 하드웨어 점검 및 초기화 -> 루트(/) 파일 시스템 마운트 및 검사(read권한만)
(7) 커널 -> /lib/systemd/systemd 프로그램 실행시키고 제어를 넘김
(8) systemd 프로세스 -> 시스템 운영을 위한 나머지 초기화 과정 처리 및 부팅 이후에도 계속 수행
-> systemd 는 시스템 초기화 작업 및 사용자 공간을 준비하고 사용자 프로세스를 관리함
['부트 로더 종류']
- 'LILO(LInux LOader)': 전통적인 리눅스 부트 로더
- 'GRUB(GRand Unified Bootloader)': 다양한 기능 제공 -> 편리한 부트로더 -> 현재 가장 널리 사용
[ MBR(Master Boot Record) ]
┗ 부트 블록: 부트 로더(GRUB)의 일부이며, 보조기억장치에 적재된 프로그램 중 가장 먼저 실행됨
┗ 파티션 테이블: 파티션의 시작과 끝 주소, 부팅 가능한 파티션 여부, 파티션 타입 등이 기록
- 즉, 파티션 테이블의 정보를 통해 어떤 파티션 어디에 부트로더(GRUB) 본체가 있는지 찾는것임
[ 부트 로더의 동작(GRUB) ]
┗ (1) MBR 부트 블록이 운영체제의 파티션에 있는 부트 로더(GRUB)를 실행
┗ (2) 부트 로더는 "커널 이미지", "initramfs"을 찾아 메모리에 적재
[ 커널 부팅 과정 ]
['커널 부팅 과정']
(1) 압축된 커널 이미지 -> 메모리에 로드된 후 압축이 풀리고 메모리에 커널 실행
(2) 커널은 커널의 자체 기능 및 설치된 하드웨어 점검
(3) 루트(/) 파티션을 읽기 전용으로 마운트하여 디스크 검사
(4) 디스크 검사 끝난 후 root 파티션을 쓰기 가능 모드로 다시 마운트
(5) 커널 -> systemd 프로세스 시작시키고 제어권 넘김
['systemd']
(6) systemd 프로세스 -> 기본 타킷으로 /etc/systemd/system/default.target 파일을 읽음
(7) 기본 타깃에 따라 시스템의 실행 모드가 정해짐에 따라 실행되는 서비스와 프로세스 그룹이 결정됨
-> 예를 들면, 기본 타깃 graphical.target 유닛의 경우
-> GNOME 디스플레이 관리자 또는 계정 관리자와 같은 시스템 서비스를 시작시키며,
-> multi-user.target도 활성화시킴
💡 2. 초기화 데몬
[ systemd (초기화 데몬 프로그램) ]
┗ systemd: 커널이 가장 처음 실행시키는 사용자 프로세스 -> PID1번을 가지는 프로세스임
- 즉, 커널 프로세스를 제외한 모든 프로세스의 부모 또는 조상 프로세스임
- systemd 는 나머지 부팅 과정 즉, 시스템 초기화 작업을 실행
-> 해당 'systemd' 를 '초기화 데몬' 이라고도 함
-> 사용자 환경 준비, 파일 시스템 마운트, 시스템 운영을 위한 서비스 프로그램 실행 등
-> 서비스들의 병렬 시작, 온디맨드 활성화, 서비스 간 의존성 해결
- 이후에도 계속 수행되며 시스템 운영을 관리하고 셧다운까리 처리
-> 시스템 상태 모니터링, 데몬 관리, 사용자 프로세스의 정리, 로그아웃 처리와 로그인 서비스 제공 등
┗ 초기화 데몬: 백그라운드 서비스와 프로세스를 초기화하고 관리하는 최상위 관리 프로그램(백그라운드)
┗ 프로세스: 커널의 관리하에 있는 실행 중인 상태의 프로그램
┗ PID: 프로세스 고유 번호, PPID: 부모 프로세스의 고유번호
- 즉, 프로세스A -> 프로세스B 실행시 A는 B의 부모가 되며, B는 PID, PPID를 가짐
┗ systemd 수행하는 기능:
- '초기화': 커널 초기화 이후의 초기화 과정을 수행
- '파일 시스템 마운트': /etc/fstab 파일을 읽어 마운트 유닛 파일을 자동 생성하고 파일 시스템을 마운트
- '시스템 서비스 활성화': 부팅 과정에서 실행될 서비스를 활성화하고 시스템 서비스를 병렬로 시작 시킴
-> 필요한 데몬만 필요한 시점에 활성화시키는 온디맨드 활성화를 제공
- '의존성 해결': 서비스 간의 의존성을 체계적으로 관리하고 해결한다.
-> 이것은 서비스가 실행되기 전에 필요로 하는 다른 서비스를 자동으로 실행시킴으로써 수행됨
- '로그인 서비스 시작': 로그인 서비스를 시작시킨다.
-> 이것은 시스템이 부팅될 때 자동으로 실행되는 데몬으로 사용자 로그인을 처리하고,
-> 시스템에서 실행 중인 다른 프로그램과 상호작용한다.
- '시스템 상태 모니터링': 부팅된 시스템의 상태를 모니터링한다.
-> 이를 통해 시스템의 문제를 식별하고 해결하며, 시스템 상태의 스냅숏을 저장한다.
- '데몬 관리': 실행 중인 데몬 프로세스를 관리한다.
- 이와 같은 기능을 통해 systemd는 부팅 속도의 증가, 자원 사용의 효율화, 보안 강화,
안정적이고 신뢰성 있는 시스템 관리 기능을 제공한다.
┗ 결론:
- systemd는 셸과 같은 백그라운드 프로그램을 실행(셸 = PID1의 자식이 됨)
- 셸을 통해 사용자는 응용 프로그램(예:python)을 실행(응용 프로그램 = 셸(PID?) 자식이 됨)
- 결론은 [systemd -> 셸(백그라운드) -> 응용프로그램] 같은 연결점이 생김
-> **이래서 systemd(PID1)은 모든 프로그램의 조상 PID 인것임**
[ 유닛 ]
┗ 유닛: systemd가 관리하는 시스템 자원, 서비스와 같은 시스템 구성요소(컴포넌트) 의미
┗ 유닛의 동작, 의존성, 실행 옵션 등은 "유닛 설정 파일"에서 설정 항목으로 제어됨.
┗ 유닛 종류: 시스템 서비스, 소켓, 마운트, 타깃, 디바이스 등 다양한 유형의 유닛(설정 파일) 존재

┗ 유닛 파일이 존재하는 디렉터리:

┗ 각각의 디렉터리 안에 해당하는 유닛 파일들이 존재
┗ 결론:
- 'systemd 유닛': 컴퓨터 부팅 시 운영체제가 기본적으로 제공하여 구동하는 필수 시스템 소프트웨어의 모음
- 즉, 부팅 시 정상적인 컴퓨터 동작을 위해 기본적으로 제공하는 시스템 소프트웨어 구성 요소들임
[ systemd 타깃 & 런레벨 ]
┗ 런레벨:
- 컴퓨터가 켜졌을 때 시스템이 어떤 서비스들을 실행하고 어떤 환경
-> (예: 명령어만 쓰는 모드, 그래픽 화면 모드, 다중 사용자 서버 모드 등)을
-> 제공할지 결정하는 시스템의 동작 모드
┗ 과거에는 "런레벨" -> 현재는 "타깃"이라고 부름
┗ 런레벨(타깃) 종류:
- 'poweroff.target': 시스템을 종료하고 전원을 끔('기존 런레벨 0')
- 'rescue.target': 시스템 복구 모드(문제 발생 시 저수준의 상호작용을 제공하는 타깃)('기존 런레벨 1')
- 'multi-user.target': 다중 사용자 텍스트 모드(일반적으로 서버 환경에서 사용)('기존 런레벨 3')
- 'graphical.target': 다중 사용자 그래픽 모드(주로 데스크톱 환경에서 사용)('기존 런레벨 5')
- 'reboot.target': 시스템을 종료하고 재부팅함('기존 런레벨 6')
┗ 기본 타깃(런레벨)을 확인 & 변경하는 명령:
- '기본 타깃(런레벨) 확인 명령어': systemctl get-default
- '기본 타깃(런레벨) 변경 명령어': systemctl set-default <name.target>
┗ 현재 타깃 -> 다른 타깃 유닛으로 바꾸는 관리자 명령:
- '타겟 변경 명령어': systemctl isolate <name.target>
-> 현재 시스템 타겟을 즉시 중단 -> 지정한 타겟으로 전환 명령어
- 'telinit 명령': 과거 SystemV init 시절에 쓰던 구형 명령어
-> 현대 리눅스는 이를 systemctl isolate로 호환성을 위해 연결(심볼릭 링크)해둔 상태
-> 즉, 동일한 기능을 수행하지만 현재는 systemctl 사용
-> '사용예시': telinit runlevel => telinit 3 = 런레벨 변경(텍스트 모드만 지원)
┗ runlevel 명령: 이전 런레벨과 현재 런레벨을 확인하는 명령
[ 시스템 서비스 관리 ]
┗ "systemctl" 명령을 통해 시스템 서비스의 상태 보기, 시작, 멈춤, 재시작, 활성화 및 비활성화 작업 수행 가능
┗ 사용예시:
'systemctl [options] command [untis]'
- 'command': 서브 명령(sub command)을 나타냄
-> start, stop, reload, restart, status, enable, disable, is-active, is-enabled 등 존재
-> 즉, start = 서비스 실행, reload = 서비스 재시작 등 할 수 있음 (관리 가능)
┗ 서비스 실행 & 상태 확인 명령어:

┗ 서비스 활성화 & 서비스 종속성 확인 명령어:

[ 웹 콘솔의 사용 ]
┗ 웹 콘솔: 웹 브라우저를 이용해 리눅스 서버를 관리하고 모니터링하기 위한 도구
┗ 설치 후"http://localhost:9090"에 접속하고 root 사용자로 로그인함
💡 3. 시스템 종료
[ 전원 관리 명령 ]
┗ Rocky Linux에서는 "systemctl" 유틸리티를 사용하여 전원 관리 명령을 수행
┗ 명령어 형식: systemctl command
┗ 서브 명령: halt, poweroff, reboot, pm-suspend, pm-hibernate 등

┗ 과거 명령 & 현재 명령:
- '과거': 과거 리눅스(system V Ini 시스템)에서는 각 명령들이 독립된 프로그램이었음
- '현재': 현재 리눅스(systemd 기반)에서는 모든 기능을 systemctl 명령어 체계로 통합
-> 즉, systemctl 프로그램 안으로 완전히 통합
[ shutdown 명령 ]
┗ 시간을 정해 시스템을 안전하게 종료하는 명령
┗ systemctl 과 다르게 shutdown 은 시간 예약 및 접속자 안내 메시지 역할을 해줌
┗ shutdown 명령도 결국 내부적으로 systemctl 을 통과하도록 설계되어있음
┗ 명령어 형식: shutdown [options] time [message]
┗ 옵션 및 time 인수:
['옵션']
'-r': 시스템 종료 후 재부팅
'-H': 전원을 끄지 않고 시스템 종료
'-P': 시스템 종료 후 전원을 끔
'-f': 재부팅할 때 fsck(file system check)를 하지 않음
'-c': 셧다운 명령어 취소(예약된 셧다운의 취소(time 인수가 필요 없음))
'-k': 실제 셧다운 하는 것처럼 경고 메시지만 보냄(셧다운은 안함)
['time 인수']
- '절대 시간 형식': shutdown -H 23:15
- '~후 종료': shutdown -P + 10 => 10분 후 종료
- 'now': shutdown -h now(즉시 종료를 의미)
[ 시스템 종료 절차(과정) ]
┗ 실제 systemd 프로세스를 통해 셧다운이 처리가 됨
- systemd 프로세스는 모든 프로세스에게 종료를 알림
- 각 프로세스가 스스로 종료하도록 TERM 시그널을 보냄
- 종료하지 않은 프로세스에게 강제 종료를 위한 KILL 시그널을 보냄
- 파일 시스템을 잠그고 루트 파일 시스템을 제외한 모든 파일 시스템을 언마운트함
- 시스템 호출을 통해 커널에 재부팅 & 종료를 요청
-> 해당 과정에서 메모리의 데이터를 디스크에 저장하는 과정도 포함임
[ 시스템 일시 중단 ]
┗ systemctl suspend:
- '일시 중단': 현재 시스템 상태를 RAM에 저장하고 저전력 상태로 함
┗ systemctl hibernate:
- '최대 절전 모드': 시스템 상태를 하드디스크에 저장하고 전원을 끔(전원on => 상태 복구)
┗ systemctl hybrid-sleep:
- '하이브리드 슬립': 메모리 외에 디스크에도 시스템 상태를 저장함
💡 4. 데스크탑
[ 데스크탑 ]
┗ GUI를 제공하는 사용자 환경을 의미
- 그래픽 윈도우, 아이콘, 툴바, 메뉴, 위젯 등을 마우스나 키보드로 조작하는 환경
┗ 대부분의 데스크톱은 X 윈도우 시스템에 기반을 둠
┗ 시각적으로 다양한 스타일의 데스크톱이 존재함(GNOME, KDE 등)
┗ 일반적으로 "서버"로 사용하는 리눅스에선 명령 행 인터페이스만 제공(GUI x)
[ 대표적 데스크탑 환경 ]
┗ GNOME:
- Red Hat 계열 리눅스에서 기본 데스크톱임
- 단순함, 편의성, 안정성에 초점을 맞춤
- 미니멀한 사용자 인터페이스가 특징
┗ KDE:
- 'K 데스크톱'이라고도 하며 MS 윈도우 환경과 유사
- 다양한 프로그램을 통합적인 모습으로 보여줌
- yum -y groupinstall 'KDE Plasma Workspaces'으로 설치 가능
- 로그인할 때 'GNOME'또는 'KDE'를 선택할 수 있음'방송통신대학교 > 🐧 UNIX 시스템' 카테고리의 다른 글
| [UNIX 시스템] 4강 - 파일과 디렉터리 (0) | 2026.10.15 |
|---|---|
| [UNIX 시스템] 3강 - 셸 사용하기 (0) | 2026.10.13 |
| [UNIX 시스템] 2강 - 리눅스 설치 (0) | 2026.10.12 |
| [UNIX 시스템] 1강 - 리눅스 소개 (0) | 2026.10.05 |
