공든탑앱 열기

런레벨과 systemd target

리눅스마스터 2급 · 리눅스 설치 · 약 10분

쉽게 말하면

컴퓨터를 어떤 상태로 켤지 정한 '운영 모드'예요. 끄기, 관리자 혼자 점검하기, 글자 화면만으로 여러 사람이 쓰기, 그래픽 화면까지 켜기, 다시 켜기 같은 모드가 있어요. 예전에는 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뜻
0poweroff.target시스템 종료
1 (S, single)rescue.target단일 사용자 모드 (root만, 복구용)
2multi-user.target다중 사용자 (배포판에 따라 NFS 없음)
3multi-user.target다중 사용자 + 네트워크, 텍스트 모드 (서버 기본)
4multi-user.target사용 안 함(사용자 정의)
5graphical.target3 + 그래픽 로그인 (데스크톱 기본)
6reboot.target재부팅
-emergency.targetrescue보다 더 최소한의 비상 셸

명령

명령뜻
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.targetgraphical.target의 다른 이름(옛 런레벨 5와 맞춘 링크). runlevel3.target은 multi-user.target
startx텍스트 모드에서 X 윈도를 바로 시작하는 명령

시험에 이렇게 나와요

확인 문제

Q1. 서버를 부팅할 때 그래픽 화면 없이 텍스트 로그인으로 시작하게 하려면 기본 target을 무엇으로 해야 할까?

  1. graphical.target
  2. poweroff.target
  3. rescue.target
  4. multi-user.target
정답 보기

4번 multi-user.target

multi-user.target은 네트워크와 여러 사용자를 지원하는 텍스트 모드로, 옛 런레벨 3에 해당한다. graphical.target은 GUI(런레벨 5). systemctl set-default multi-user.target으로 바꾼다.

Q2. 서버를 재부팅하면 텍스트 모드로 시작하도록 바꾸는 명령은?

  1. systemctl set-default multi-user.target
  2. systemctl isolate reboot.target
  3. startx -text
  4. systemctl set-default graphical.target
정답 보기

1번 systemctl set-default multi-user.target

multi-user.target(런레벨 3).

Q3. 런레벨 5에 해당하는 systemd target은?

  1. rescue.target
  2. default.target
  3. multi-user.target
  4. graphical.target
정답 보기

4번 graphical.target

graphical.target이다. 런레벨 3은 multi-user.target, 1은 rescue.target이다. default.target은 기본으로 쓸 target을 가리키는 이름이다.

Q4. 현재 기본 target을 확인하는 명령은?

  1. systemctl get-default
  2. systemctl default
  3. runlevel -d
  4. systemctl show-target
정답 보기

1번 systemctl get-default

systemctl get-default다. 바꿀 때는 systemctl set-default graphical.target처럼 쓴다.

Q5. 시스템을 재부팅하는 런레벨은?

  1. 0
  2. 1
  3. 5
  4. 6
정답 보기

4번 6

6 = reboot. 0 = 종료.

Q6. 재부팅 없이 지금 바로 rescue.target으로 전환하는 명령은?

  1. systemctl set-default rescue.target
  2. systemctl start rescue
  3. systemctl isolate rescue.target
  4. init rescue
정답 보기

3번 systemctl isolate rescue.target

isolate는 즉시 전환, set-default는 다음 부팅부터.

헷갈리기 쉬운 O·X

런레벨 1은 root만 로그인할 수 있는 단일 사용자 모드다.

정답 보기

O 맞는 설명이다.

systemctl set-default는 현재 실행 중인 모드를 즉시 바꾼다.

정답 보기

X 다음 부팅부터. 즉시는 isolate.

런레벨 0은 재부팅이다.

정답 보기

X 0은 종료, 6이 재부팅.

함께 보면 좋은 개념