Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
37
Help us understand the problem. What is going on with this article?
@moriai

WSL (Windows Subsystem for Linux) をコマンドラインでインストールする

はじめに

Windows 10 の環境が増えてきたので備忘録。何度も同じことをするとなると、やっぱコマンドラインの方が、記述するのも、実行するのも楽だと思う。

手順の流れとしては GUI でやることと変わらないが、Microsoftストアに接続しなくても良い、所属ドメインのポリシで色々と制限されている環境でも利用できる、というのが大きなメリット。WSL 2 がサポートされている Windows 10 であれば、WSL 1 での動作を確認した後でも WSL 2 に移行することができるし、さらに WSL 1 に戻ることもできる。

試した環境

  • Windows 10 Professional もしくは Enterprise version 1803 (Redstone 4), 1809(Redstone 5), 1903(19H1), 20H2
  • PC もしくは VMware Fusion

手順

1. WSL のインストール

管理者権限の PowerShell で以下を実行し、リブートする。

PS C:\> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Do you want to restart the computer to complete this operation now?
[Y] Yes  [N] No  [?] Help (default is "Y"):Y

2. ディストロのダウンロード

ディストロパッケージの好みのものを好みの手段でダウンロードする。最新のディストロパッケージ一覧はMicrosoftのオンラインマニュアルに記載されている。
- Ubuntu 20.04 (https://aka.ms/wslubuntu2004)
- Ubuntu 18.04 (https://aka.ms/wsl-ubuntu-1804)
- Ubuntu 16.04 (https://aka.ms/wsl-ubuntu-1604)
- Debian GNU/Linux (https://aka.ms/wsl-debian-gnulinux)
- Kali Linux (https://aka.ms/wsl-kali-linux)
- OpenSUSE (https://aka.ms/wsl-opensuse-42)
- SLES (https://aka.ms/wsl-sles-12)

ディトロのパッケージは Windows 10 に同梱されるようになった curl.exe でダウンロードする。指定した URL からリダイレクトされるため -L を忘れないように。Ubuntu 20.04 LTS のパッケージのダウンロードは次の通り。

PS C:\> curl.exe -L https://aka.ms/wslubuntu2004 -o C:\Users\XXX\Downloads\Ubuntu2004.appx

なお、curlInvoke-WebRequest の別名として定義されていて、curlInvoke-WebRequest でダウンロードすると非常に時間がかかるので、注意が必要。

3. ディストロのインストールと初期化

管理者権限の PowerShell で以下を実行する。

PS C:\> Add-AppxPackage C:\Users\XXX\Downloads\Ubuntu2004.appx

インストールに成功すれば、スタートメニューにディストロの名前があるはず。Windows Update が動作中の場合はインストールに失敗するので、もしそれが原因の場合には終了後に再度インストールを実行すると成功するだろう。そうでない場合の対策は 3a. で。

あとは通常通り。スタートメニューのディストロ名をクリックすると、ディストロの初期化が始まる。

3a. ディストロのインストールや初期化に失敗する場合

次の手順で任意の場所にインストールできる(管理者権限は不要)。

  1. ダウンロードしたディストロパッケージの拡張子を appx から zip に変更する
  2. その zip ファイルを自分の好きなフォルダ(例えば、C:\Users\xxx\ディストロ名 など)に展開する
  3. 展開したフォルダに cd し、そこにある exe ファイルを実行する
  4. ディストロの初期化に成功すれば、Unixユーザ名を聞いてくるので適当なユーザ名(Windowsのログイン名でも良いが、異なっても問題なし)とパスワードを設定する
  5. (optional)上記の exe ファイルをスタートにピン留めする
  6. (optional)同じフォルダにある install.tar.gz を消去する
PS C:\Users\xxx\Downloads> Rename-Item .\Ubuntu2004.appx .\Ubuntu2004.zip
PS C:\Users\xxx\Downloads> Expand-Archive .\Ubuntu2004.zip C:\Users\xxx\Ubuntu2004
PS C:\Users\xxx\Downloads> cd C:\Users\xxx\Ubuntu2004
PS C:\Users\xxx\Ubuntu2004> .\ubuntu2004.exe
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: xxx
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Installation successful!
...
xxx@zzz: $ exit

ディストロのインストールや初期化に失敗する原因は色々あるようだが、以上の手順でもダメな場合には、あきらめた方がよさそう。

4. ディストロのアンインストール

上記の 3. でインストールした場合には、管理者権限の PowerShell で以下を実行する。これで、ユーザごとに初期化した(展開された)ディストロも全て消去される。

PS C:\> Get-AppxPackage *ubuntu20* | Remove-AppxPackage -AllUsers -Confirm

Confirm
Are you sure you want to perform this action?
Performing the operation "Remove package" on target
"CanonicalGroupLimited.Ubuntu20.04onWindows_2004.2020.424.0_x64__79rhkp1fndgsc".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y

4a. ディストロのアンインストール

上記の 3a. でインストールした場合には、wslconfig で unregister してから、ディストロを展開したフォルダごと消去する。

PS C:\Users\xxx> wslconfig /u Ubuntu-20.04
PS C:\Users\xxx> Remove-Item .\Ubuntu2004 -Recurse

5. WSL 2 への移行

次に WSL 2 を試してみよう。

まず、管理者権限の PowerShell で以下を実行し、リブートする。

PS C:\> Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Do you want to restart the computer to complete this operation now?
[Y] Yes  [N] No  [?] Help (default is "Y"):Y

次に、通常の権限で PowerShell を起動し、ディストロ名を確認し、WSL 2 へ移行したいディストロの WSL バージョンを 2 に設定すると、WSL 1 から WSL 2 へディストロイメージが変換される。

PS C:\Users\xxx> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         1
PS C:\Users\xxx> wsl --set-version Ubuntu-20.04 2
Conversion in progress, this may take a few minutes...
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
Conversion complete.
PS C:\Users\xxx> wsl -l -v
  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2

あとは、いつもと同じように WSL を起動すれば良い。

WSL 1 に戻る場合は wsl --set-version ディストロ名 1 を実行すれば良い。また、アンインストールは上記の 4. または 4.a でできる。

37
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
moriai
元OSカーネル屋(Unix, Mach, ...).昔々は機械学習屋(音声認識).趣味で Rust & Swift プログラミングをぼちぼち.現在の本業は、ま、色々といういうことで。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
37
Help us understand the problem. What is going on with this article?