systemd 사용 여부를 두고 벌어지는 논쟁은 GNU/Linux 세계에서 vi vs emacs 논쟁에 버금가는, 혹은 그 이상으로 뜨거운 주제입니다. systemd를 직접 쓸지 말지는 누구도 대신 결정해 줄 수 없지만, 다행히 Ubuntu 및 Canonical 계열 배포판을 사용한다면 지금은 그 선택권이 남아 있습니다. Ubuntu에서 systemd를 비활성화하는 것 자체는 어렵지 않습니다. Bourne 셸을 다뤄본 경험이 있다면 커널 서비스 작업 경험이 거의 없더라도 몇 가지 간단한 명령어로 충분히 처리할 수 있습니다.
진짜 어려운 부분은 '영구적으로' 비활성화 상태를 유지하는 것입니다. 예전의 Unix System V처럼 systemd는 사용자 공간(user space)을 부팅한 뒤 모든 프로세스를 관리합니다. 개발자들이 이 패러다임에 맞춰 Ubuntu 패키지를 만들기 때문에 많은 패키지가 systemd에 최적화되어 있고, 경우에 따라서는 systemd를 필수 의존성으로 요구합니다. 다행히 apt-get 패키지 관리자에게 systemd를 다시 받아오지 못하도록 규칙을 강제하는 우회 방법이 존재합니다. 이 방법은 장기적으로 일부 패키지에 문제를 일으킬 수 있지만, Ubuntu를 포기하지 않으면서 systemd를 피하고 싶은 사용자에게는 시도할 가치가 충분합니다. 실제로 systemd에 대한 가장 큰 비판 중 하나가 GNOME 3 데스크톱 환경이 한동안 systemd에 의존했다는 점이었습니다.
방법 1: 데비안 스타일 패키지 핀닝(Pinning) 기법
Ubuntu 기반 배포판에서 systemd를 제거하는 한 가지 방법은 데비안식 패키지 핀닝 기법을 활용하는 것입니다. 일부 시스템에서는 매우 잘 동작하지만, 환경에 따라 결과가 달라질 수 있습니다. 작업을 시작하기 전에 반드시 전체 백업부터 수행하세요.
먼저 systemd를 제거한 뒤 그 자리를 대신할 무언가가 필요합니다. 터미널에서 다음 명령을 실행해 새 sysvinit 서비스를 설치하고 활성화 상태를 확인합니다.
apt-get install upstart-sysv sysvinit-utils -y
그다음 머신을 완전히 재부팅하기 전에 아래 명령으로 초기 램디스크(initramfs)를 업데이트합니다.
update-initramfs -u
재부팅 후 시스템이 정상적으로 올라오면, 다음 명령으로 systemd 자체를 제거합니다.
apt-get remove --purge --auto-remove systemd systemd:i386 -y
이어서 여러 echo 명령을 실행해 각 설정 파일에 차단 규칙을 추가함으로써 systemd가 다시 돌아오지 않도록 잠급니다. 이 명령들을 bash 스크립트로 묶어도 좋지만, 터미널에서 하나씩 순서대로 입력하는 것이 불편하지 않다면 굳이 스크립트를 만들 필요는 없습니다.
모든 과정이 끝나면 재부팅 전에 sync 명령을 한두 번 실행해 변경 사항이 디스크에 확실히 기록되도록 하는 것이 좋습니다. 여기까지 완료하면 systemd가 다른 패키지의 의존성으로 몰래 설치되는 문제는 사라지지만, 그래도 apt-get 출력을 계속 주시하며 원치 않는 systemd 패키지가 들어오지 않는지 확인하는 습관을 들이는 것이 안전합니다.
preferences.d 디렉터리에 이 설정을 넣으면 apt-get에게 'systemd는 우선순위 패키지가 아니다'라고 알려주는 셈입니다. 값 -1이 0보다 낮기 때문에, 다른 패키지가 요청하더라도 apt-get이 스스로 systemd 패키지를 내려받으려 하지 않습니다. 따라서 어떤 패키지도 이 우선순위를 덮어쓰지 않도록 수시로 점검해야 합니다.
방법 2: systemd 없이 Ubuntu와 비슷한 배포판 선택하기
Ubuntu는 데비안을 기반으로 만들어졌기 때문에 데비안과 마찬가지로 systemd가 제공하는 다양한 기능에 점점 깊이 얽혀가고 있습니다. 일부 개발자들은 이 계열 배포판이 언젠가 Microsoft Windows가 서비스 호스트(svchost)를 쓰는 방식처럼 systemd에 완전히 의존하게 될 것이라고 전망합니다. 더 급진적인 해결책이긴 하지만, 애초에 systemd를 쓰지 않는 배포판으로 갈아타는 것도 하나의 대안입니다.
기존 Ubuntu 사용자라면 이런 배포판의 ISO 이미지를 다루는 데 큰 어려움이 없을 것입니다. Canonical의 Ubuntu 이미지와 거의 같은 방식으로 부팅 가능한 USB 메모리나 SD 카드에 구워 사용할 수 있기 때문입니다.
systemd 패키지를 피하고 싶은 *buntu 계열 사용자라면 먼저 Devuan을 살펴볼 것을 권합니다. Devuan은 systemd를 뺀 데비안 기반 배포판으로, 익숙한 인터페이스와 운영체제 구성 방식을 그대로 제공합니다. 개발진 상당수가 전직 데비안 프로젝트 멤버여서 설계 철학 또한 같은 뿌리에서 나옵니다. 다만 Devuan은 의존성 문제로 libsystemd0을 여전히 유지하고 있어 일부 순수주의자들은 선호하지 않을 수 있습니다. 그럼에도 devuan.org에서는 Ubuntu에 필적하는 사용하기 쉬운 ISO 이미지를 제공합니다. 이 중 하나를 내려받아 지워도 되는 이동식 미디어에 dd 명령으로 기록하면 됩니다. 운영체제 설치용으로 미디어에 기록하면 기존 파일 시스템이 사실상 삭제된다는 점을 기억하세요. 물론 작업이 끝난 뒤에는 언제든 포맷해서 다른 용도로 재사용할 수 있습니다.
systemd를 쓰지 않는 여러 배포판을 한눈에 비교하고 싶다면 DistroWatch의 검색 도구가 유용합니다. DistroWatch는 리눅스 기반 운영체제를 빠르게 훑어볼 수 있는 개요를 제공하며, systemd 패키지가 필요 없는 배포판만 걸러 보는 기능도 갖추고 있습니다.
목록은 기본적으로 인기순으로 정렬됩니다. 다만 이 목록에는 FreeBSD, TrueOS처럼 리눅스가 아닌 다른 자유 운영체제도 섞여 있다는 점에 유의하세요. Ubuntu 사용자에게는 다소 생소할 수 있지만 이들 역시 Unix 계열입니다. 이 문제에 강한 신념을 가진 사용자라면 Bourne 셸을 기본으로 쓰고 Xfce 같은 익숙한 데스크톱 환경을 갖춘 BSD 기반 운영체제로 옮겨가면, 평소 쓰던 환경을 크게 포기하지 않으면서도 systemd로부터 완전히 자유로워질 수 있습니다.
저자 소개
Kevin Arrows는 10년 이상의 업계 경력을 지닌 기술 전문가입니다. MCTS(Microsoft Certified Technology Specialist) 자격을 보유하고 있으며, 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅 등 다양한 분야에서 폭넓게 집필해 왔습니다. 복잡한 기술 개념을 명확하고 간결하게 풀어내는 능력으로 동료들에게 폭넓은 인정을 받고 있습니다.