TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 50 READS

데비안에서 systemd 빼고 OpenRC로 갈아타기: 가능은 한데 각오는 필요해요

리눅스의 'PID 1', init 시스템 이야기

리눅스를 켜면 커널이 부팅된 다음, 가장 먼저 뜨는 프로그램이 하나 있어요. 프로세스 번호가 1번이라 흔히 PID 1이라고 부르는데, 이게 바로 init 시스템이에요. 이 친구가 나머지 모든 서비스(네트워크, 로그, 웹서버 등)를 순서대로 깨우고 관리하는 "모든 프로세스의 조상" 역할을 해요. 이번 글은 데비안에서 기본 init인 systemd를 떼어내고 OpenRC로 바꾸는 실험기예요.

systemd가 욕도 먹고 사랑도 받는 이유

systemd는 지금 거의 모든 주요 배포판의 기본 init이에요. 강력하거든요. 서비스 관리는 물론이고 로그 수집(journald), 네트워크 설정, 시간 동기화, 사용자 세션 관리(logind)까지 한 우산 아래 다 챙겨줘요. 의존성을 보고 서비스를 병렬로 띄워서 부팅도 빠르고요.

근데 바로 그 "다 한다"는 점 때문에 비판도 받아요. "init은 init만 해야지 왜 이것저것 다 삼키냐"는 거죠. 유닉스 철학(한 도구는 한 가지 일만 잘하자)과 안 맞는다는 지적이고, 덩치가 크니 구조가 복잡하고 학습 부담도 크다는 불만이에요. 그래서 "좀 더 단순하고 투명한 init이 좋다"는 분들이 OpenRC 같은 대안을 찾아요.

OpenRC는 뭐가 다르냐면

OpenRC는 젠투(Gentoo)와 알파인(Alpine) 리눅스에서 쓰이는 init 보조 시스템이에요. 핵심은 셸 스크립트 기반의 의존성 관리예요. 각 서비스마다 "나는 네트워크가 떠야 시작할 수 있어" 같은 조건을 적어두면, OpenRC가 그 순서를 풀어서 알아서 띄워줘요. 동작이 대부분 셸 스크립트라 "안에서 무슨 일이 벌어지는지" 눈으로 따라가기 쉽다는 게 매력이에요. systemd가 컴파일된 바이너리 덩어리라면, OpenRC는 열어보면 읽히는 스크립트 모음에 가까워요. 그래서 훨씬 가볍고요.

그런데 갈아타는 게 만만치 않아요

글이 솔직하게 짚는 부분이 바로 이거예요. 데비안 생태계는 systemd를 전제로 너무 많이 엮여 있어요. 가장 큰 골칫거리가 logind(로그인·세션 관리)예요. 데스크톱 환경이나 권한 관리(polkit) 쪽이 이걸 필요로 하는데, systemd를 빼면 이 기능이 사라지거든요. 그래서 elogind라는 걸 대신 깔아요. systemd에서 세션 관리 부분만 떼어내 독립시킨 프로젝트인데, 이걸 OpenRC와 물려줘야 데스크톱이 정상 동작해요.

또 패키지를 지울 때 의존성 때문에 줄줄이 딸려 나가거나, libsystemd0 같은 라이브러리는 다른 패키지들이 참조해서 완전히는 못 지우는 상황도 생겨요. 결국 "systemd의 부팅·서비스 관리 기능은 OpenRC로 대체하되, 일부 라이브러리와 호환 레이어는 남겨두는" 절충이 현실적이라는 결론이에요. 작업 자체는 init 패키지를 바꾸고 부트로더(GRUB)가 OpenRC로 부팅하도록 설정한 뒤 재부팅하는 흐름이지만, 중간에 깨지면 복구 콘솔로 들어가 손봐야 하니 가벼운 마음으로 본 서버에서 할 일은 아니에요.

업계 맥락

init 대안은 OpenRC만 있는 게 아니에요. runit, s6, dinit 같은 미니멀 init도 있고, 데비안에서 갈라져 나온 Devuan은 아예 "systemd 없는 데비안"을 표방하는 배포판이에요. 즉 이 흐름은 한 명의 취향이 아니라, init을 단순하게 유지하고 싶은 꾸준한 커뮤니티 수요가 만든 생태계예요. 반대로 클라우드·컨테이너 세계에선 systemd 의존이 더 굳어지는 추세라, 양쪽 흐름이 공존하는 모양새고요.

한국 개발자에게

당장 실무 서버를 OpenRC로 갈아엎으라는 얘기는 아니에요. 다만 이 글을 따라가다 보면 "부팅 때 서비스가 어떤 의존성으로 어떤 순서에 뜨는가"를 제대로 이해하게 돼요. 이건 systemd를 쓰든 안 쓰든 장애 대응에 직접 도움이 되는 지식이에요. 임베디드나 초경량 환경, 또는 컨테이너 베이스 이미지를 가볍게 만들고 싶을 때 OpenRC 계열은 실제로 좋은 카드이기도 하고요.

한 줄 요약: systemd를 데비안에서 빼는 건 가능하지만, 생태계가 워낙 systemd에 엮여 있어 elogind 같은 보조 장치와 절충이 필요하다. 여러분은 init이 모든 걸 다 해주는 게 좋으세요, 아니면 작게 쪼개진 게 좋으세요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://danielcordova.me/blog/debian-openrc/
SHARE
처리 중...