ぺんぎんらぼ

お笑いとマンガ好きなしょぼしょぼWeb系エンジニアの日記です。たまに絵を描きます。

お笑いとマンガ好きなしょぼしょぼWeb系エンジニアの日記です

WSL2はじめました

スーパーマリオサンシャインがクリアできないので泣く泣くWSL2を始めました。

1.WSL2の有効化

まず、自分のWindowsのバージョンを確認します。Windowsスタートボタンを右クリック、[システム]>[バージョン情報]を選択。下にスクロールして、「Windowsの仕様」セクションを確認します。

f:id:penguinlabo:20200926205804p:plain

https://docs.microsoft.com/ja-jp/windows/wsl/install-win10

上記MSホームページの通り「バージョン 2004 以降、ビルド 19041 に更新」されている必要があります。自分の場合、バージョン1909、かつ2004バージョンの自動更新の配信がまだの状態だったので、手動でバージョンをUpdateする必要がありました。

https://support.microsoft.com/ja-jp/help/3159635/windows-10-update-assistant

f:id:penguinlabo:20200926214717p:plain

UpdateAssistantをクリック。

https://www.microsoft.com/ja-jp/software-download/windows10

f:id:penguinlabo:20200926214814p:plain

こちらのページからWindows10Upate.exeファイルをダウンロードし実行します。Windowsを再起動後、「ようこそ・・・」といった大幅Update時に出るメッセージが出力されます。

次に、PowerShellからWSL2を有効化します。Windowsスタートボタンを右クリック、[WindowsPowerShell(管理者)]を選択。以下コマンドを入力します。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

これだけでWSL2の有効化作業は完了です。

2. UbuntuDebianのダウンロード

Windowsストアアプリを開いて、Linuxを検索。(本当はCentOSがよかったんですが、有料だったのであきらめてUbuntuDebianを入れてみました。)

ストアアプリの画面から「インストール」をクリック。「起動」をクリック。

f:id:penguinlabo:20200926215638p:plain

起動するとダウンロードしたOSのターミナルが立ち上がり、Userとパスワードを入力後、すぐにコマンドを叩ける状態になります。 ここで作成したユーザーはsudo権限付きユーザーとなるようです。

Ubuntu起動の際に、謎のエラー(エラーメッセージが文字化けしていて読めない)に遭遇しましたが、 https://qiita.com/hali/items/bf04a1e4012025a38d6b こちらを参考にしました。

https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-kernel f:id:penguinlabo:20200926220824p:plain

ここからmsiファイルをダウンロードし、実行後、再度トライするとUbuntuも無事に起動しました。PowerShell側で確認してみると、しっかり二つ入ってます。

PS C:\WINDOWS\system32> wsl -l
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-20.04 (既定)
Debian

全体として動作が軽量で操作性も高くかなり好感触です。 WSL2自体に、ホストOS(コンテナで使われるコンポーネント)+Dockerっぽい技術が同梱されている感じで、 WSL2有効化後は、WindowsストアアプリでUbuntuをインストールすれば、すぐにUbuntuBashを操作することができます。 まぁこれはWSL2というよりWSL自体の良き点です。ただ、WSLの評判で 「一部のdockerコマンドが動かない!泣」のような声をよく聞いていたのでちょっとデビューが遅れました。

特に興味深かったのは、PowerShellUbuntuBashのプロンプトから、ホストOSであるWindowsのCドライブとかも参照できることです。 Dockerコンテナを立ち上げた場合、ふつうはコンテナ内部はホストOSとは隔離されるのに、WSLの場合はホストOSと同居している感じが面白いですね。

以上