IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

WSLで始めるUbuntu

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第22回 WSL2の新機能を試してみよう (宮崎悟) 2020年10月

前回は、WSL 2 と WSL2へ移行する手順について説明しました。今回は、4月に追加された新しいUbuntu20.04、WSLとWSL2を使用できるWindows Terminal 、WSL2でサービスを起動する方法を説明します。

Ubuntu 20.04

Ubuntu 20.04は、2020年4月にリリースされたUbuntuの新しいLTS(Long Term Support)になります。普段ユーザが使用する言語、ライブラリのバージョンアップなどが含まれています。

Ubuntu20.04のインストールは、Windows Storeから行ってください。インストール後の手順はUbuntu18.04 と同様で、アプリケーションを開いた後、ユーザ名とパスワードを設定するだけです。すでにUbuntu 18.04がインストールされている場合、すべてのディレクトリが Ubuntu 20.04 と異なることに注意してください。

また、WSLのデフォルトを WSL2 にしていない場合は、WSL1でインストールされます。WSLインストールのデフォルトをWSL2に変更するには、管理者権限のPowerShellで以下のコマンドを実行します。

wsl --set-default-version 2
Windows Terminal

Windows Terminal は、Microsoftがオープンソースプロジェクトとして開発した、既存のコンソールに代わる新しいターミナルソフトウェアです。Windows Terminalでは、Powershell/cmd.exe とともに、WSLを起動する事ができます。

Windows Terminalをインストールして最初に起動するとPowerShellが起動します。タブ右端の「V」を押すと、メニューが開きます。PowerShellと同様にUbuntuなどが含まれていて、それを選択するとUbuntuが起動します。

fig01

Windows Terminalの機能は様々ありますが、json形式で書かれた設定ファイルを直接設定する必要があります。詳細については、Microsoftの公式ドキュメントを参照してください。

WSL2でサービスを起動

WSL2で動作するLinuxのサービスはWindowsのサービスと異なり、systemd というデーモン(常時動作するプロセス)が管理します。WSLおよびWSL2では、initdと呼ばれるサービス経由でbashが起動します。Linuxでは、systemdを1番めのプロセスとして起動する必要があります。そのための手順は色々あると思いますが、よく使用されるのは geine というコマンドを使用する方法です。

genie とは

genieは、WSL2上でsystemd を起動するためのコマンドです。genieはWSL2の中でPID名前空間を使用して、systemdのpidが1の状態で起動します。これにより、systemdによるサービスの制御が行えます。

genie のインストール

Ubuntu系を使用している場合、最新リリースのページ (現在は1.26)にsystemd-genie.deb というパッケージファイルが用意されてるので、そのファイルをダウンロードします。genieはMicrosoft の.NET Core 3.1 に依存しています。以下のコマンドを実施して、.NET Core のランタイムをインストールします。

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y aspnetcore-runtime-3.1

その後、ダウンロードしたsystemd-denie.deb をインストールします。

sudo dpkg -i systemd-genie.deb 

これで、/usr/bin/genie としてインストールされました。

genie の起動方法

genie の 起動方法は簡単で、root権限でgenie -i を実行するだけです。Windowsへのログオン時に実行するのが望ましいので、タスクスケジューラに登録します。

  1. スタートメニューを右クリックし、「コンピュータの管理」を選択します
  2. 「コンピュータの管理」画面から、「タスクスケジューラ」を選択します
  3. 「操作」メニューから「基本タスクの作成」を選択します
  4. 名前欄に「genie」を入力して、「次へ」を選択します
  5. トリガーとして、「ログオン時」を選択して、「次へ」を選択します
  6. 操作として、「プログラムの開始」を選択して、「次へ」を選択します
  7. プログラムとして、C:\Windows\System32\wsl.exe を、引数として-d Ubuntu-20.04 -- /usr/bin/genie -iを指定して「次へ」を選択します
  8. 「完了」を押してタスクを登録します

上記では、Ubuntu-20.04 を指定していますが、Ubuntu-18.04のように別のディストリビューションも指定できます。

genie 起動後にWSLを起動すると、ホスト名の末尾に「-wsl」が追加されるはずです。もしうまく行かない場合は、PowerShell や cmd.exeの画面で、コマンドwsl -d Ubuntu-20.04 -- /usr/bin/genie -iを実行してください。

終わりに

今回は、新しいディストリビューションUbuntu20.04、Windows Terminal、サービスの起動方法について説明しました。次回は、サービスとサービスの制御方法について説明します。次回をお楽しみに。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes