지금 쓰는 주류 리눅스 배포판(Ubuntu, Fedora, Debian, Arch 등)은 거의 다 systemd를 init 시스템으로 채택하고 있어요. 그런데 이 흐름에 아예 합류하지 않은 배포판도 여전히 존재하는데, Void Linux가 대표적이에요. Void는 runit이라는 훨씬 단순한 init 시스템을 쓰는데, systemd 없는 리눅스는 실제로 써보면 어떤 느낌일까요?
systemd는 왜 논쟁의 중심에 서 있나
systemd는 부팅 프로세스, 서비스 관리, 로그 수집(journald), 네트워크 관리 등을 하나의 통합된 프레임워크로 묶은 시스템이에요. 부팅 속도가 빠르고 서비스 간 의존성 관리가 체계적이라는 장점 덕분에 대부분의 배포판이 채택했지만, 동시에 “하나의 프로그램이 너무 많은 역할을 담당한다”는 비판도 꾸준히 있었어요. 유닉스 철학인 “하나의 도구는 하나의 일만 잘한다”는 원칙에서 벗어난다는 지적이에요.
runit은 단순함으로 돌아간 대안이다
Void Linux가 채택한 runit은 이런 비판에 대한 하나의 대안이에요. runit의 핵심 구성 요소는 극단적으로 단순해요. 각 서비스는 /etc/sv/서비스이름/run이라는 짧은 셸 스크립트로 정의되고, 이 스크립트가 어떻게 서비스를 시작할지를 그대로 담고 있어요. systemd의 유닛 파일처럼 복잡한 문법을 배울 필요 없이, 셸 스크립트를 읽고 쓸 줄 알면 바로 서비스 정의를 이해할 수 있어요.
서비스를 활성화하려면 /etc/sv/서비스이름을 /var/service/에 심볼릭 링크로 연결하기만 하면 돼요. 이 방식은 systemd의 systemctl enable 같은 별도 명령어 학습 없이도, “링크가 있으면 실행되고 없으면 실행되지 않는다”는 직관적인 동작 원리를 가져요.
Void Linux만의 특징이 몇 가지 더 있다
Void Linux는 runit 채택 외에도 몇 가지 독자적인 특징을 갖고 있어요.
- 자체 패키지 관리자 XBPS: pacman이나 apt와는 다른 독자 패키지 관리자를 사용하며, 바이너리 패키지와 소스 기반 빌드(xbps-src)를 모두 지원해요.
- musl libc 옵션: 기본 glibc 기반 이미지 외에도 musl libc 기반 이미지를 별도로 제공해서, 더 작고 가벼운 시스템을 구성할 수 있어요.
- 롤링 릴리즈: Arch처럼 지속적으로 패키지가 업데이트되는 방식을 채택하고 있어요.
실사용에서 체감되는 건 속도보다 투명성이다
부팅 속도는 systemd 기반 배포판과 비교했을 때 체감상 큰 차이는 없어요. systemd도 이미 병렬 시작을 지원하기 때문이에요. 오히려 Void Linux의 진짜 매력은 “시스템에서 무슨 일이 일어나고 있는지 파악하기 쉽다”는 점이에요. 서비스 로그는 각 서비스 디렉터리 안의 단순한 텍스트 파일에 쌓이고, journald처럼 바이너리 형식의 로그를 조회하기 위한 별도 명령어를 배울 필요가 없어요.
다만 생태계 규모는 확실히 작아요. 유명 소프트웨어 대부분은 XBPS 저장소에서 찾을 수 있지만, systemd에 강하게 의존하는 일부 데스크톱 애플리케이션(특정 systemd 서비스 API를 직접 호출하는 소프트웨어)은 Void에서 동작하지 않거나 대체 설정이 필요할 수 있어요. systemd 없이 가려는 시도라는 점에서는 systemd 없는 데비안을 표방하는 Devuan이나 musl과 BSD 유틸리티로 만들어진 Chimera Linux와도 문제의식을 공유해요.
누구에게 어울릴까
- init 시스템 자체를 깊이 이해하고 싶은 학습 목적의 사용자: 셸 스크립트 몇 줄로 서비스가 정의되는 구조를 직접 들여다보고 싶다면 잘 맞아요.
- systemd의 복잡성에 대한 대안을 직접 경험해보고 싶은 사용자: 통합 프레임워크 대신 단순한 도구 조합을 선호한다면 만족스러울 거예요.
- 최소한의 구성 요소로 이루어진 투명한 시스템을 선호하는 사용자: 시스템에서 일어나는 일을 텍스트 파일 수준까지 추적하고 싶은 사람에게 적합해요.
Void Linux는 대중적인 선택은 아니지만, systemd가 사실상 표준이 된 지금의 리눅스 생태계에서 “다른 방식도 가능하다”는 걸 보여주는 좋은 예시예요. 시스템이 어떻게 부팅되고 서비스가 어떻게 관리되는지 근본부터 이해하고 싶다면, 소스를 직접 컴파일해가며 시스템을 통제하는 Gentoo Linux와 함께 한 번쯤 경험해볼 가치가 있어요.
자주 묻는 질문
Q1. runit은 systemd보다 배우기 쉬운가요?
네, 각 서비스가 /etc/sv/서비스이름/run이라는 짧은 셸 스크립트로 정의되어 있어서, 셸 스크립트를 읽고 쓸 줄 알면 systemd 유닛 파일 문법을 새로 배우지 않고도 이해할 수 있어요.
Q2. Void Linux는 부팅 속도가 systemd보다 빠른가요?
체감상 큰 차이는 없어요. systemd도 이미 병렬 시작을 지원하기 때문에 부팅 속도보다는 시스템 투명성 쪽에서 Void의 장점이 두드러져요.
Q3. Void Linux의 패키지 관리자는 뭔가요?
XBPS라는 자체 패키지 관리자를 쓰며, 바이너리 패키지와 xbps-src를 통한 소스 기반 빌드를 모두 지원해요.
Q4. systemd에 의존하는 소프트웨어도 문제없이 돌아가나요?
대부분은 괜찮지만, 특정 systemd 서비스 API를 직접 호출하는 일부 소프트웨어는 Void에서 동작하지 않거나 대체 설정이 필요할 수 있어요.
Q5. musl libc 버전도 따로 있나요?
네, 기본 glibc 이미지 외에 musl libc 기반 이미지를 별도로 제공해서 더 작고 가벼운 시스템을 구성할 수 있어요.
Devuan: systemd 없는 데비안을 원한다면
데비안의 init 시스템 결정에 반발해 갈라져 나온 포크, Devuan의 탄생 배경과 실사용 특징을 알아봅니다.
systemd 서비스 유닛 파일, 이렇게 만들면 됩니다
직접 만든 스크립트나 프로그램을 부팅 시 자동 실행되는 서비스로 등록하는 방법을, systemd 유닛 파일의 구조와 systemctl 명령어 사용법까지 실전 절차로 정리합니다.
BFQ 비디오 재생 벤치마크: 반응성을 높인 대가로 프레임이 얼마나 떨어졌나
BFQ+의 low-latency 휴리스틱이 반응성을 높이는 대신 소프트 실시간 애플리케이션에 어떤 지연 시간 대가를 요구하는지 논문의 비디오 재생 벤치마크로 확인합니다.