Share via


Systemd를 사용하여 WSL로 Linux 서비스 관리

WSL(Linux용 Windows 하위 시스템)은 이제 Ubuntu, Debian 등과 같은 많은 인기 있는 Linux 배포판에서 사용하는 init 시스템 및 서비스 관리자인 systemd를 지원합니다. (systemd란?).

init 시스템 기본값은 최근에 SystemV에서 변경되었으며, 이제 systemd는 명령 기본값을 사용하여 wsl --install 설치될 Ubuntu의 현재 버전에 대한 기본값입니다. 현재 버전의 Ubuntu 이외의 Linux 배포판은 SystemV init와 유사한 WSL init를 계속 사용할 수 있습니다. systemd로 변경하려면 systemd를 사용하도록 설정하는 방법을 참조하세요.

Linux에서의 systemd란 무엇인가요?

systemd.io에 따르면 "systemd는 Linux 시스템의 기본 구성 요소 모음입니다. PID 1로 실행되고 나머지 시스템을 시작하는 시스템 및 서비스 관리자를 제공합니다."

주로 init 시스템 및 서비스 관리자인 systemd에는 디먼의 주문형 시작, 탑재 및 자동 탑재 지점 유지 관리, 스냅샷 지원 및 Linux 컨트롤 그룹을 사용한 프로세스 추적과 같은 기능이 포함됩니다.

대부분의 주요 Linux 배포판은 이제 systemd가 실행되므로 WSL에서 사용하도록 설정하면 운영 체제 미설치 Linux를 사용하는 데 더 가까운 환경이 제공됩니다. systemd에서 제공하는 항목에 대한 자세한 내용은 아래의 시스템 데모 비디오 공지 또는 systemd 사용 예제를 참조하세요.

Systemd를 사용하도록 설정하는 방법

Systemd는 wsl --install 명령 기본값을 사용하여 설치될 Ubuntu의 현재 버전에 대한 기본값입니다.

WSL 2에서 실행되는 다른 Linux 배포판에 대해 systemd를 사용하도록 설정하려면(기본값을 systemv init 사용에서 변경):

  1. WSL 버전이 0.67.6 이상인지 확인합니다. (확인하려면 wsl --version을(를) 실행합니다. 업데이트하려면 wsl --update을(를) 실행하거나 Microsoft Store에서 최신 버전을 다운로드하세요.)

  2. Linux 배포에 대한 명령줄을 열고 cd /을(를) 입력하여 루트 디렉터리에 액세스한 다음 ls 파일을 나열합니다. 배포에 대한 WSL 구성 파일이 포함된 "etc"라는 디렉터리가 표시됩니다. 다음을 입력하여 Nano 텍스트 편집기를 사용하여 업데이트할 수 있도록 이 파일을 엽니다. nano /etc/wsl.conf

  3. 이제 열려 있는 wsl.conf 파일에 다음 줄을 추가하여 systemd에 사용된 init를 변경합니다.

    [boot]
    systemd=true
    
  4. Nano 텍스트 편집기를 종료합니다(Ctrl+X, Y를 선택하여 변경 내용 저장). 그런 다음 Linux 배포를 닫아야 합니다. PowerShell에서 wsl.exe --shutdown 명령을 사용하여 모든 WSL 인스턴스를 다시 시작할 수 있습니다.

Enable systemd on WSL 2

Linux 배포가 다시 시작되면 systemd가 실행됩니다. Linux 배포와 연결된 모든 서비스의 상태를 표시하는 systemctl list-unit-files --type=service 명령을 사용하여 확인할 수 있습니다.

(배포별) 및 .wslconfig (전역) 구성 파일 간의 wsl.conf 차이점, 자동 탑재 설정을 업데이트하는 방법 등을 포함하여 WSL의 고급 설정 구성에 대해 자세히 알아봅니다.

Systemd 데모 비디오

Microsoft는 Canonical과 협력하여 WSL에 시스템 지원을 제공합니다. Craig Loewen(Microsoft의 WSL PM)과 Oliver Smith(Canonical의 WSL Ubuntu PM)가 시스템 지원을 발표하고 사용하도록 설정하는 몇 가지 데모를 보여 줍니다.

Systemd 예제

Systemd에 의존하는 Linux 애플리케이션의 몇 가지 예는 다음과 같습니다.

  • snap: Linux kernel과 systemd init 시스템을 사용하는 운영 체제를 위해 Canonical에서 개발한 소프트웨어 패키징 및 배포 시스템 패키지를 "snaps", snaps를 구축하는 명령줄 도구를 "Snapcraft", snaps를 다운로드/설치할 수 있는 중앙 리포지토리를 "Snap Store", snaps를 실행하는 데 필요한 디먼(스토어에서 다운로드, 제자리에 탑재, 제한 및 앱 밖으로 실행)을 "snapd"라고 합니다. 전체 시스템을 "snappy"라고도 합니다. snap install spotify 또는 snap install postman명령을 실행해 보세요.

  • microk8s: 컨테이너화된 앱의 배포, 스케일링 및 관리를 자동화하는 오픈 소스, 저운영, 최소한의 생산성을 갖춘 Kubernetes입니다. 지침에 따라 WSL2에 MicroK8s를 설치하거나, 시작 자습서를 확인하거나, MicroK8s 및 WSL 2가 있는 Windows의 Kubernetes에서 비디오를 시청하세요.

  • systemctl: systemd를 제어 및 검사하고 Linux 배포에서 서비스와 상호 작용하는 데 사용되는 명령줄 유틸리티입니다. systemctl list-units --type=service 명령을 사용하여 사용 가능한 서비스와 해당 상태를 확인합니다.

Systemd를 사용하는 방법을 보여주는 몇 가지 관련 자습서:

systemd 사용 설정은 WSL 아키텍처에 어떤 영향을 주나요?

systemd 지원을 활성화하려면 WSL 아키텍처를 변경해야 합니다. systemd에 PID 1이 필요하므로 Linux 배포 내에서 시작된 WSL init 프로세스는 systemd의 자식 프로세스가 됩니다. WSL init 프로세스는 Linux와 Windows 구성 요소 간의 통신을 위한 인프라를 제공해야 하므로 이 계층 구조를 변경하려면 WSL init 프로세스로 만든 일부 가정을 재고해야 했습니다. 시스템 종료가 systemd에 의해 제어되기 때문에 정상 종료를 보장하고 Linux GUI(그래픽 사용자 인터페이스)를 실행하는 WSL의 구성 요소인 WSLg 또는 명령줄이 아닌 창에 표시되는 Linux 앱과 호환되도록 추가 수정해야 했습니다.

또한 이러한 변경으로 시스템 서비스는 WSL 인스턴스를 활성 상태로 유지하지 않습니다. WSL 인스턴스는 이 업데이트 이전과 동일한 방식으로 활성 상태로 유지되며, 2017년 백그라운드 작업 지원 블로그 게시물에서 자세히 알아보세요.