amtoaer

晓风残月

叹息似的渺茫,你仍要保存着那真!
github
x
telegram
steam
nintendo switch
email

wsl2でsystemdを完璧に有効化する

WSL2 で systemd を有効にする方法は少なくとも以下の 3 つあります:

  1. genie
  2. subsystemctl
  3. wsl-distrod

この記事では、第 3 の方法について詳しく説明し、なぜ第 3 の方法を選ぶべきかについても説明します。

インストール方法#

インストールには 2 つのオプションがあります:

  1. systemd を備えた新しいディストリビューションをインストールする
  2. 既存のディストリビューションに systemd サポートを追加する

それぞれについて説明します。

systemd を備えた新しいディストリビューションをインストールする#

  1. distrod_wsl_launcherをダウンロードして展開し、展開されたバイナリファイルを実行します。

  2. ガイドに従って新しいディストリビューションをインストールします。

  3. [オプション] 次のコマンドを使用して、Windows の起動時にディストリビューションが自動的に実行されるようにします:

    sudo /opt/distrod/bin/distrod enable --start-on-windows-boot
    

既存のディストリビューションに systemd サポートを追加する#

  1. 最新のインストールスクリプトをダウンロードして実行します:

    curl -L -O "https://raw.githubusercontent.com/nullpo-head/wsl-distrod/main/install.sh"
    chmod +x install.sh
    sudo ./install.sh install
    
  2. ディストリビューションで distrod を有効にします。

    2 つの選択肢があります:

    1. Windows の起動時にディストリビューションを実行する場合:

      /opt/distrod/bin/distrod enable --start-on-windows-boot
      
    2. それ以外の場合:

      /opt/distrod/bin/distrod enable
      

      注:次に/opt/distrod/bin/distrod enable --start-on-windows-bootを実行することで、ディストリビューションが Windows の起動に従って実行されるようになります。

  3. ディストリビューションを再起動します。

    WSL ウィンドウを閉じ、PowerShell で次のコマンドを実行します:

    wsl --shutdown
    

    次に、新しい WSL ウィンドウを開き、シェルが systemd セッションで実行されます。

他の方法との比較#

公式ドキュメントによれば、Distrod は次のように説明されています:

簡単に言えば、Distrod は systemd を init プロセスとして使用し、WSL セッションを実行するためのシンプルなコンテナを作成します。これを実現するために、Distrod は次のことを行います:

  1. 特定のディストリビューションの rootfs を変更して、WSL と systemd との互換性を確保します。
    1. systemd サービスを変更して、WSL と互換性があるようにします。
    2. /opt/distrod/bin/distrodおよびその他のリソースを rootfs に配置します。
    3. Distrod バイナリをログインシェルとして登録します。
  2. Distrod が WSL の init プロセスとして起動されると、Distrod は次のことを行います:
    1. シンプルなコンテナで systemd を起動します。
    2. このコンテナで実際のシェルを起動します。
    3. systemd セッションと WSL の対話環境の間にブリッジを確立します。

実際、Distrod と genie、subsystemctl の動作原理は似ています:コンテナを作成し、コンテナ内で pid 1 として systemd を起動し、シェルを使用します。公式ドキュメントでも言及されています:

Distrod をスタンドアロンのワンショットコマンドとして実行する場合:この場合、Distrod の動作は genie や subsystemctl と似ています。

ただし、Distrod は自動起動の面でより多くの作業を行っています。上記の手順により、Distrod は次のことを実現します:

  1. インストールおよび有効化後、WSL が自動的に systemd を起動します。
  2. --start-on-windows-bootパラメータを追加すると、Distrod は Windows のタスクを登録し、Windows の起動時に WSL が実行されるようにします。

手動でシェルスクリプトを作成して自動起動を実現する他の方法と比較して、より簡単にインストールでき、より便利に使用できる Distrod がユーザーにとって魅力的です。

まとめ#

インストールや使用中に問題が発生した場合は、公式ドキュメントを参照してください。

記事に誤りがある場合は、コメントで指摘してください!~

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。