런레벨과 systemd target
쉽게 말하면
컴퓨터를 어떤 상태로 켤지 정한 '운영 모드'예요. 끄기, 관리자 혼자 점검하기, 글자 화면만으로 여러 사람이 쓰기, 그래픽 화면까지 켜기, 다시 켜기 같은 모드가 있어요. 예전에는 0~6 숫자(런레벨)로, 지금은 이름(target)으로 불러요.
시험용 정의
런레벨은 예전 SysV init에서 시스템의 동작 상태를 0~6 숫자로 나눈 것이고, systemd에서는 이를 target이라는 유닛으로 표현한다. 부팅 때 도달할 기본 target이 시스템의 기본 모드다.
비유로 이해하기
건물의 운영 모드다. 0은 소등·폐쇄, 1은 관리인만 들어가는 점검 모드, 3은 모두 출입하지만 조명 쇼 없음, 5는 조명 쇼까지, 6은 문 닫고 다시 열기.
자세히
init, SysV init, systemd
커널이 부팅을 마치면 맨 처음 init 프로그램(PID 1)을 실행하고, init이 나머지 서비스(네트워크, 로그, 로그인 화면)를 켠다. 어떤 서비스까지 켤지를 정한 것이 시스템의 동작 상태다.
- SysV init: 유닉스 System V에서 온 옛 init. 동작 상태를 런레벨 숫자(0~6)로 나누고, 런레벨마다 정해진 셸 스크립트를 차례로 실행했다
- systemd: 지금 대부분 배포판의 init. 서비스·마운트·장치 같은 관리 대상을 유닛이라 부르고, 서로 의존 관계를 따져 동시에 시작해 부팅이 빠르다. 동작 상태는 여러 유닛을 묶은 target 유닛으로 나타낸다
systemd도 옛 명령(runlevel, init 3)을 알아듣도록 runlevel3.target 같은 별칭을 두었다.
런레벨과 target 대응
| 런레벨 | target | 뜻 |
|---|---|---|
| 0 | poweroff.target | 시스템 종료 |
| 1 (S, single) | rescue.target | 단일 사용자 모드 (root만, 복구용) |
| 2 | multi-user.target | 다중 사용자 (배포판에 따라 NFS 없음) |
| 3 | multi-user.target | 다중 사용자 + 네트워크, 텍스트 모드 (서버 기본) |
| 4 | multi-user.target | 사용 안 함(사용자 정의) |
| 5 | graphical.target | 3 + 그래픽 로그인 (데스크톱 기본) |
| 6 | reboot.target | 재부팅 |
| - | emergency.target | rescue보다 더 최소한의 비상 셸 |
명령
| 명령 | 뜻 |
|---|---|
| systemctl get-default | 기본 target 확인 |
| systemctl set-default multi-user.target | 기본 target 변경 (/etc/systemd/system/default.target 링크를 바꿈) |
| systemctl isolate rescue.target | 지금 바로 다른 target으로 전환 |
| runlevel | 이전·현재 런레벨 (예: N 5) |
| init 3 / telinit 3 | 옛 방식 런레벨 전환 (systemd도 호환) |
| who -r | 현재 런레벨 |
예전 방식
SysV init은 /etc/inittab의 id:5:initdefault: 줄로 기본 런레벨을 정했고, 런레벨별 시작 스크립트는 /etc/rc.d/rcN.d/에 있었다. systemd 시스템에서 inittab은 쓰이지 않는다.
시험에 나오는 그 밖의 말
| 말 | 뜻 |
|---|---|
| runlevel5.target | graphical.target의 다른 이름(옛 런레벨 5와 맞춘 링크). runlevel3.target은 multi-user.target |
| startx | 텍스트 모드에서 X 윈도를 바로 시작하는 명령 |
시험에 이렇게 나와요
- 현재 기본 부팅 모드 확인 →
systemctl get-default - 부팅하면 그래픽 모드로 →
systemctl set-default graphical.target(= runlevel5.target) - 부팅하면 텍스트 모드로 →
systemctl set-default multi-user.target(= runlevel3.target) - 텍스트 모드에서 X 윈도를 바로 실행 →
startx
확인 문제
Q1. 서버를 부팅할 때 그래픽 화면 없이 텍스트 로그인으로 시작하게 하려면 기본 target을 무엇으로 해야 할까?
- graphical.target
- poweroff.target
- rescue.target
- multi-user.target
정답 보기
4번 multi-user.target
multi-user.target은 네트워크와 여러 사용자를 지원하는 텍스트 모드로, 옛 런레벨 3에 해당한다. graphical.target은 GUI(런레벨 5). systemctl set-default multi-user.target으로 바꾼다.
Q2. 서버를 재부팅하면 텍스트 모드로 시작하도록 바꾸는 명령은?
- systemctl set-default multi-user.target
- systemctl isolate reboot.target
- startx -text
- systemctl set-default graphical.target
정답 보기
1번 systemctl set-default multi-user.target
multi-user.target(런레벨 3).
Q3. 런레벨 5에 해당하는 systemd target은?
- rescue.target
- default.target
- multi-user.target
- graphical.target
정답 보기
4번 graphical.target
graphical.target이다. 런레벨 3은 multi-user.target, 1은 rescue.target이다. default.target은 기본으로 쓸 target을 가리키는 이름이다.
Q4. 현재 기본 target을 확인하는 명령은?
- systemctl get-default
- systemctl default
- runlevel -d
- systemctl show-target
정답 보기
1번 systemctl get-default
systemctl get-default다. 바꿀 때는 systemctl set-default graphical.target처럼 쓴다.
Q5. 시스템을 재부팅하는 런레벨은?
- 0
- 1
- 5
- 6
정답 보기
4번 6
6 = reboot. 0 = 종료.
Q6. 재부팅 없이 지금 바로 rescue.target으로 전환하는 명령은?
- systemctl set-default rescue.target
- systemctl start rescue
- systemctl isolate rescue.target
- init rescue
정답 보기
3번 systemctl isolate rescue.target
isolate는 즉시 전환, set-default는 다음 부팅부터.
헷갈리기 쉬운 O·X
런레벨 1은 root만 로그인할 수 있는 단일 사용자 모드다.
정답 보기
O 맞는 설명이다.
systemctl set-default는 현재 실행 중인 모드를 즉시 바꾼다.
정답 보기
X 다음 부팅부터. 즉시는 isolate.
런레벨 0은 재부팅이다.
정답 보기
X 0은 종료, 6이 재부팅.