Microsoft公式!WindowsPCでLinux(& cron)を動かす”WSL2”導入最短手順書

こんにちは!GMOアドパートナーズ人事総務部の Y.O. です。
元WEB・サーバーサイドエンジニアだった私が、
人事総務部の業務でも cron で 簡易なシェルスクリプトは動かしておきたい!
でもサーバー立てるまでもない!費用もかけたくないし、社内審査の通ってない社外のプログラムも入れたくない!

そんな欲張りな欲求をかなえてくれる素敵な環境「WSL2」を知ったものの、
せっかくならエンジニアでなくても、迷わず1本道でマネできる手順を残しておきたいと思い立ち、記事を執筆しました。

WSL2 環境構築と、最低限PCの電源が入っていれば、あとは自動で cron が動くところまでの設定を、
最短手順書としてまとめ公開します。
(2023年6月執筆)

How to Install

(1)Windows サブシステムオプション機能有効化

管理者として Windows PowerShell を開き、以下を実行。

(2)Windows 仮想マシン機能有効化

管理者として Windows PowerShell を開き、以下を実行。
PC を再起動するかどうか問い合わせがあるので、Y を入力。PC が自動的に再起動。

(3)WSL2 用 Linux カーネルのインストール

最新のパッケージ「wsl_update_x64.msi」を入手。

公式サイト「 Microsoft Learn 」:以前のバージョンの WSL の手動インストール手順ー手順 4 – Linux カーネル更新プログラム パッケージをダウンロードする

「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」をクリックすると msi ファイルが落ちてくるので、
ダブルクリックして実行。
管理者特権のアクセス許可が出るので「はい」。

(4)WSL 2 を既定のバージョンに設定

Linux ディストリビューションをインストールする際に、デフォルトで WSL2 を使うように設定。
Windows PowerShell を開き、以下を実行。

(5)Linux ディストリビューション「Ubuntu」の入手とインストール

安定版、Ubuntu 20.04 を入手します。
当社は企業ネットワークポリシーにて、Microsoft Store の使用が非許可のため、手動でインストールします。

公式サイト「 Microsoft Learn 」:以前のバージョンの WSL の手動インストール手順ーディストリビューションのダウンロード

上記にて「Ubuntu 20.04」をクリックすると、AppxBundle ファイルが落ちてくるのでダブルクリックして実行します。
「準備ができたら起動」にチェック入れたまま「インストール」。

(6)ユーザー設定

初回起動時に Ubuntu 用ユーザIDとパスワードを設定して、インストール完了
ここで入力するユーザ名はWindowsのユーザ名とは関係ないものの、自身の苗字等にしておく。
(例:熊谷なら kumagai 等)
root権限が必要な場合は、sudoで実行できる。

(7)Windows ターミナルをインストール (省略可能)

Windows PowerShell や コマンドプロンプト、そして今インストールした Ubuntu を、
一緒くたにタブ区切りで操作できる Microsoft 謹製「Windows ターミナル」がとってもおすすめです!

Microsoft GitHubリリース ページ:Windows Terminal v1.17.11461.0 Latest

上記にて「Microsoft.WindowsTerminal_1.17.11461.0_8wekyb3d8bbwe.msixbundle」をクリックすると、msixbundle ファイルが落ちてくるのでダブルクリックして実行します。
「準備ができたら起動」にチェック入れたまま「インストール」。

起動すると、デフォルトで Windows PowerShell が開くようになっています。

※もしうまくいかない場合は、少し古いバージョンをお試しください。
Microsoft GitHubリリース ページ:Windows Terminal v1.14.228
「∨」ボタンを押すと・・・
Ubuntuのコンソールが、新たなタブで開けます

(8)WSL2 の自動起動設定

PC をシャットダウンしたら当然 WSL2 も落ちるわけですが、
PC の電源を入れたら、自動で WSL2 が起動しているように設定しておかないと cron も動きません。

Ubuntu の実行ファイルへのショートカットを作成し、Windows のスタートアップフォルダに配置します。

a. 「Windowsキー + R」で「ファイル名を指定して実行」を開き「 shell:startup 」と入力し、OK

b. スタートアップフォルダが開くので、右クリック「新規作成」>「ショートカット」。
c. 「項目の場所」に以下入力し「次へ」。
 名前の変更の必要はないので「完了」でショートカット作成完了。

(9)WSL2上での、cron自動起動設定

WSL2 が起動したら cron も自動起動してほしいですが、cron 起動には管理者権限が必要です。
つまり sudo コマンドがパスワード入力なしで実行できるようにしておく設定が必要。
(個人 PC へのログオンが前提ではありますが、パスワード無しのリスクは認識ください)

まず sudo のパスワード入力を不要にします

a. Ubuntu コンソールを開き以下入力。GNU nano エディタが起動します。
b. 「%sudo ALL=(ALL:ALL) ALL」と書かれた部分に方向キーでカーソル移動し、先頭に「# 」(半角シャープと半角空白)を追加し、次の行に以下追加。
この状態になっていればOK

c. 「Ctrl + x」を入力、「y」を入力、「File Name to Write: /etc/sudoers.tmp」と表示されたら「Enter」で保存終了。

続いて cron を自動起動する設定(root権限での実行とします)

a. 引き続き Ubuntu コンソールにて、以下1行ずつ実行。

(10)cron 動作確認

ここまでの設定により、PC を再起動しても自動で WSL2 環境が起動し、
かつ cron も自動で動き始めているはずです。

PC を再起動し、Ubuntu コンソールにて、 以下1行ずつ実行し「 * cron is running」と表示されたら成功です。