런레벨(Runlevel)의 개념
런레벨(runlevel)은 유닉스(Unix) 및 유닉스 기반 운영체제에서 정의되는 운영 상태(operating state)로, 리눅스 시스템에는 사전에 설정되어 있습니다. 런레벨은 0부터 6까지의 숫자로 표현됩니다.
런레벨은 운영체제가 부팅된 후 어떤 프로그램을 실행할지 결정하며, 부팅 이후 머신이 어떤 상태로 동작할지를 정의합니다.
런레벨 확인 방법
시스템 관리자는 필요에 따라 시스템의 기본 런레벨(default runlevel)을 설정하거나, runlevel 명령어를 사용해 현재 머신의 런레벨을 확인하여 시스템 상태를 진단할 수 있습니다. 예를 들어, 런레벨을 통해 시스템의 네트워크가 작동 중인지 여부를 파악할 수 있습니다.
현재 런레벨과 이전 런레벨을 확인하려면 다음 명령어를 사용합니다.
/sbin/runlevel
런레벨 0~6의 종류와 용도
런레벨 0부터 6까지는 일반적으로 단일 사용자 모드, 네트워크 서비스 활성화 여부에 따른 다중 사용자 모드, 시스템 종료, 시스템 재부팅 등으로 할당됩니다. 다만 이러한 구성 방식은 리눅스 배포판과 유닉스 버전에 따라 차이가 있을 수 있습니다.
각 런레벨별 역할
- 런레벨 0: 시스템 종료(shutdown)
- 런레벨 1: 단일 사용자 모드(single-user mode)
- 런레벨 2: 네트워크 미지원 다중 사용자 모드
- 런레벨 3: 네트워크를 지원하는 다중 사용자 모드
- 런레벨 4: 사용자가 자유롭게 정의 가능(user-definable)
- 런레벨 5: 네트워크와 그래픽 환경을 지원하는 다중 사용자 모드(배포판에 따라 GUI 모드)
- 런레벨 6: 시스템 재부팅(reboot)
각 기본 레벨마다 고유한 목적이 있으며, 그중 런레벨 0, 1, 6은 모든 배포판에서 항상 동일한 역할을 합니다. 반면 런레벨 2~5는 사용 중인 리눅스 배포판에 따라 의미가 달라질 수 있습니다.
런레벨 실행 방식의 특징
시스템이 부팅될 때는 단 하나의 런레벨만 실행되며, 런레벨이 순차적으로 진행되지 않습니다. 예를 들어 런레벨 4, 5, 6 중 하나가 실행될 뿐, 4 → 5 → 6 순서로 차례대로 전환되는 것이 아닙니다.
사용자는 사전에 설정된 런레벨을 수정하거나, 필요하다면 새로운 런레벨을 직접 만들 수도 있습니다. 일반적으로 런레벨 4가 사용자 정의 런레벨용으로 활용됩니다.
런레벨을 활용한 문제 해결
시스템을 서로 다른 런레벨로 부팅하면 특정 문제를 해결할 수 있습니다. 예를 들어 다음과 같은 상황에서 유용합니다.
- 손상된 설정 파일로 인해 시스템 부팅에 실패하는 경우
- /etc/passwd 파일이 손상되어 로그인이 불가능한 경우
- root 비밀번호를 잊어버린 경우
이런 문제들은 단일 사용자 모드(런레벨 1)로 부팅하면 대부분 해결할 수 있습니다.
systemd 타깃(Target)으로의 전환
최근 리눅스에서는 전통적인 런레벨을 대체하는 systemd 타깃(targets) 방식이 도입되었습니다. systemd 타깃은 리눅스 기반 시스템을 시작하고 관리하는 보다 현대적인 방법입니다.