다음을 통해 공유


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

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

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

Linux에서 시스템화되는 것은 무엇인가요?

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

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

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

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

Systemd는 이제 Ubuntu 현재 버전에 기본적으로 설정되어 있으며, 이 버전은 wsl --install 명령 기본값을 사용하여 설치됩니다.

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

  1. WSL 버전이 0.67.6 이상인지 확인합니다.

    • 확인하려면 wsl --version실행합니다. 명령이 Invalid command line option: --version 오류를 throw하는 경우 WSL을 업데이트해야 합니다.
    • 업데이트하려면 wsl --update 또는 을 실행하거나 Microsoft Store에서 최신 버전을 다운로드하십시오.
  2. Linux 배포에 대한 명령줄을 열고 cd / 입력하여 루트 디렉터리에 액세스한 다음 ls 파일을 나열합니다. 배포에 대한 WSL 구성 파일이 포함된 "etc"라는 디렉터리가 표시됩니다. 다음을 입력하여 Nano 텍스트 편집기를 사용하여 업데이트할 수 있도록 이 파일을 엽니다. nano /etc/wsl.conf.

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

    [boot]
    systemd=true
    

    WSL 2에서 systemd 활성화

  4. Nano 텍스트 편집기를 종료합니다(Ctrl + X, Y를 입력하여 변경 내용을 저장하고 enter 키로 확인).

  5. 그런 다음 Linux 배포를 닫아야 합니다. PowerShell에서 명령 wsl.exe --shutdown 사용하여 모든 WSL 인스턴스를 다시 시작할 수 있습니다.

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

Linux 배포가 Debian/Ubuntu/Kali Rolling인 경우 시스템 패키지를 설치했을 뿐만 아니라 systemd-sysv 패키지가 설치되어 있는지 확인해야 합니다.

sudo apt-get update -y && sudo apt-get install systemd systemd-sysv -y

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

Systemd 데모 비디오

Microsoft는 Canonical과 협력하여 WSL에 시스템 지원을 제공합니다. 크레이그 로웬(Microsoft의 WSL PM)과 올리버 스미스(Canonical의 WSL용 Ubuntu PM)가 systemd 지원을 발표하고, 이를 통해 가능해진 몇 가지 데모를 보여 줍니다.

시스템 예제

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

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

  • microk8s: 컨테이너화된 앱의 배포, 크기 조정 및 관리를 자동화하는 오픈 소스, 낮은 운영 부담의, 최소한의 프로덕션 환경 Kubernetes입니다. 지침에 따라 MicroK8s 를 WSL2에 설치하거나, 입문 자습서를 확인하거나, Windows에서 MicroK8s와 WSL2 를 사용하는Kubernetes에 대한 비디오를 시청하세요.

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

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

systemd 활성화가 WSL 아키텍처에 어떤 영향을 미치나요?

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

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