🛠️TOOL/📄Linux

[Linux] systemctl 명령 에러 System has not been booted with systemd as init system (PID 1).

KangManJoo 2023. 10. 21. 19:04

에러 원인

WSL을 사용하다보면, systemd 명령을 실행했을때 종종 systemd 환경이 아니라는 오류가 발생한다.

원인은 WSL은 루트 시스템 프로세스가 systemd가 아닌 init이기 때문이다.

pstree

루트 시스템 프로세스는 pstree 명령을 통해 확인할 수 있다. pstree 명령어는 실행되고 있는 프로세스들간의 연결구조를 트리형식으로 보여준다.

최근 리눅스 진영은 init에서 systemd로 바뀌는 추세라고 하며, WSL은 아직 그것을 반영하지 못하고 있는 것이라고 한다.(잘 모름)

해결법

cd /
cd etc
sudo vim wsl.conf

우선 위 명령어로, WSL에서 init 시스템 프로세스를 systemd 체계로 바꿔주어야 한다.

[boot]
systemd=true

해당 파일에 위와같이 작성하고 :wq! 로 저장해준다.

wsl --shutdown
wsl

그리고 윈도우 cmd에서 위 명령어로 WSL을 재부팅 후 다시 pstree로 정상적으로 변경되었는지 확인해준다.

혹시 이렇게 해도 변경이 안된다면, wsl --update로 wsl 버전을 업그레이드한 뒤 다시 재부팅을 해보는 것을 추천한다.

 

reference