WSL에서 systemctl 에러 해결하기: system has not been booted with systemd as init system
WSL(Windows Subsystem for Linux)에서 systemctl 명령어를 사용하려고 할 때, 아래와 같은 에러를 마주쳤다.
system has not been booted with systemd as init system (pid 1).
can't operate. failed to connect to bus: host is down
문제의 원인
1. WSL1은 Systemd를 지원하지 않음
- systemctl은 Systemd라는 리눅스의 init 시스템(부팅 및 서비스 관리 시스템)에서 동작하는 명령어입니다.
- 하지만 WSL1은 Systemd를 기본적으로 지원하지 않기 때문에 systemctl 명령어를 실행할 수 없습니다.
2. WSL2로 전환이 필요
- WSL2는 WSL1과 달리 완전한 Linux 커널을 사용합니다.
- WSL2 환경에서 Systemd를 활성화하면 systemctl을 사용할 수 있습니다.
해결 과정
1. 현재 WSL 상태 확인
먼저, 현재 설치된 WSL 배포판과 버전을 확인합니다.
- 관리자 권한으로 PowerShell 실행
PowerShell을 열고, 관리자 권한으로 실행합니다. - WSL 상태 확인
아래 명령어를 입력해 WSL 배포판 목록과 버전을 확인합니다.
wsl -l -v
출력 예시:
NAME STATE VERSION
* Ubuntu Running 1
VERSION이 1이라면, WSL2로 변경해야 합니다.
2. WSL2로 변경
WSL1은 Systemd를 지원하지 않으므로, WSL2로 전환해야 합니다.
WSL2는 실제 Linux 커널을 사용하므로 Systemd 활성화가 가능합니다
현재 실행 중인 WSL 배포판 종료
실행 중인 배포판을 종료합니다
wsl -t Ubuntu
WSL2로 기본 버전 설정
WSL2로 기본 버전을 설정합니다
wsl --set-default-version 2
다시 실행
Ubuntu 배포판을 실행합니다
wsl -d Ubuntu
3. Systemd 활성화
WSL2로 전환만으로는 Systemd가 자동으로 활성화되지 않습니다.
Ubuntu 설정 파일(/etc/wsl.conf)에 Systemd 활성화 옵션을 추가해야 합니다.
WSL 설정 파일 수정
Ubuntu 환경에서 /etc/wsl.conf 파일을 수정합니다.
sudo vi /etc/wsl.conf
파일에 아래 내용을 추가합니다:
[boot]
systemd=true
WSL 다시 시작
설정 파일을 수정한 후, 파워쉘에서 WSL을 다시 시작해야 합니다
wsl --shutdown wsl
4. WSL 업데이트
모든 설정을 완료했음에도 문제가 계속된다면, WSL 버전이 오래되었을 가능성이 있습니다.
최신 버전으로 업데이트하면 Systemd 활성화와 관련된 버그를 해결할 수 있습니다.
wsl --update
업데이트 후, 다시 WSL을 시작합니다:
wsl
최종 확인
위 과정을 모두 완료한 후, systemctl 명령어를 다시 실행해 봅니다.
systemctl status
정상적으로 실행된다면, 문제 해결 성공입니다! 🎉
참고 사항
- WSL2는 Windows 10 2004 버전 이상 또는 Windows 11에서 지원됩니다.
- 최신 WSL2로 업그레이드할 경우, Microsoft 공식 문서를 참고하세요.
마무리
이번 글에서는 WSL에서 systemctl 명령어 관련 에러를 해결하는 과정을 정리했습니다. 위 방법을 따라하면 대부분의 문제를 해결할 수 있습니다. 그래도 해결되지 않는 문제가 있다면, 댓글로 문의하세요! 😊
🔗 더 알아보기
여러분의 성공적인 개발 환경 설정을 응원합니다! 💻