Windows10でプログラミングをはじめる(1) ~WSL2によるLinuxの導入~


「はじめに」の前に (2022/1/27 追記)

以下の記事は古い内容となっております。

最新のインストール方法については、WSL2 インストールガイド:Microsoft Windows Subsystem for Linux Installation Guide for Windows 10をご確認ください。

はじめに

プログラミングを行うには準備が必要です.たとえば

  • エディタ
  • コンパイラ(C言語などコンパイラ型言語の場合)
  • インタプリタ(pythonなどインタプリタ型言語の場合)
  • バージョン管理システム
  • デバッガ

こういった,プログラミングを行うにあたり必要となるものをまとめて開発環境などといいます.
そして,こういった環境を準備することを環境を構築するなどといいます.

Windowsでプログラミングを行う場合,開発環境として次のようにいくつか選択肢があります:

  • 統合開発環境(IDE)(Visual Studio, Eclipse等)
  • エディタ(Emacs, Atom等)+コンパイラ(Cygwin, MinGW等)1
  • Windows Subsystem for LinuxWSL

この記事では3番目の,WSL を用いて環境を構築する方法を説明します.

WSL とは?

WSL は Windows Subsystem for Linux という名前の通り,Windows10 上に Linux 実行環境を作る仕組みです2

この記事を書いている時点では WSL1 と WSL2 という2つのバージョンがあります.

これらの2つのバージョンは実装がかなり異なっており,WSL1 が Linux システムコールを Windows API に変換する仕組みであるのに対し,WSL2 では専用の軽量な仮想マシンを使用して,実際の Linuxカーネルを動かします.

2つのバージョンの詳しい比較は Microsoftの公式ドキュメント(Comparing WSL 1 and WSL 2)を参照してください.

ここでは WSL2 の利点をいくつか書いておきます:

  • WSL1 に比べ,git cloneapt undatecmakeなどのファイル処理が速い
  • WSL1で使用できなかったDockerなどが動く
  • 勝手に Linuxカーネルを更新してくれる

Dockerとか使ったことないんですけど,拡張性を考えると,とりあえず WSL2 にしたほうがいいんじゃないかと思います.

WSL2 の導入前に

まずはWindowsのバージョンを確認しましょう.
Microsoftによると,WSL2 を導入するための要件は次の通りです:

  • x64 システムの場合:バージョン 1903 以降、ビルド 18362 以上。
  • ARM64 システムの場合:バージョン 2004 以降、ビルド 19041 以上。

これを確認するためには,デスクトップ左下のWindowsアイコンをクリックし,「設定」>「システム」>「バージョン情報」を選択してください.画面を少しスクロールすると,次のように表示されます.

「システムの種類」の項目に「x64 ベース プロセッサ」とあるので,画像のPCは「x64 システム」ということになります.
「ARM64 システム」の場合には,この項目が「ARM64 ベース プロセッサ」と表示されると思います.

x64 システムの場合にはバージョン1903以降,ビルド18362以上であればOKですが,画像の下の方を見ると「バージョン 1909」「OSビルド 18363.1440」とあるので,画像のPCは要件を満たしています.

自分のPCでも確認してみましょう.
最初に書いた要件を満たしていれば,WSL2 の導入に進んでください.

WSL2 の導入と Linux のインストール

Microsoft による WSL2 のインストールガイドがあるので,そちらを参照してください.
ここではMicrosoftのドキュメントが読みにくかった人向けの説明を書きます.

1. PowerShellを管理者として起動する

デスクトップの左下にある検索窓に"powershell"と入力し,「管理者として実行する」をクリック(下図参照).

「このアプリがデバイスに変更を加えることを許可しますか?」と表示されると思いますが,「はい」を選んでください.

下のようなウィンドウが表示されたらOKです.

2. WSL を有効にする

上のようなウィンドウが表示されたら,そこに

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

と入力し,Enterキーを押します.

うまくいけば,次のような表示が出ます.

3. 仮想マシンの機能を有効にする

続いて

PowerShell
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

と入力します.

うまくいけば,先ほどと同様に次のような表示が出ます.

4. PCを再起動する

ここまでできれば,一度PCを再起動します.

5. Linux カーネル更新プログラム3をインストールする

自分のPCのシステム(x64 または ARM64)に合わせて,次のリンクをクリックして,Linux カーネル更新プログラムのパッケージをダウンロードしてください.

ダウンロードしたファイルを実行すると,プログラムのインストールが始まります.
次のような画面が表示されたらインストール完了です.

6. WSLのデフォルトのバージョンをWSL2にする

新たに Linux ディストリビューションをインストールするとき,WSL1 と WSL2 とでは動作の仕組みが全く異なります.
WSL2 をデフォルトのバージョンに設定するために PowerShell で次のコマンドを入力します.

PowerShell
wsl --set-default-version 2

7. Linux ディストリビューションを選択し,インストールする

まずはインストールする Linux ディストリビューションを選択します.

いろいろなディストリビューションが WSL ではサポートされています(こちらのページの「手順6」を参照)が,広く利用されている Ubuntu を選択するのが無難かと思います.

インストールするディストリビューションを決めたら,Microsoft Storeからインストールを行ってください(Ubuntu4の場合はこちらからでも).

以下では,Ubuntu をインストールした場合について書きます.

8. Ubuntuを起動する

デスクトップ左下の検索窓に"ubuntu"と入力するなどして,Ubuntuを見つけ,起動しましょう.

起動すると次のようなウィンドウ(ターミナル)が表示され,ユーザ名の入力を促されます.

ユーザ名を決めて入力しましょう.

その後,パスワードの入力が求められますから,それも入力してください.
(確認のために2回入力を求められます.)

セキュリティの都合上,パスワード入力しても画面に表示されませんが,実際にはちゃんと入力できているので安心してください.

パスワードの入力が完了すると,次のようにユーザ名@ホスト名:~$という文字(プロンプト)が左端に表示されます.

これで,UNIX/Linuxコマンドが使用できるようになりました

たとえば,ルートディレクトリに移動(cd /)して,その中身を表示(ls)し,言語設定を確認(echo $LANG)してみると,次のようになります.

おわりに

これで,Windows10にUbuntuが導入できました.

ところで上の画面,見にくくないですか?
青文字と黒背景とが判別しにくいですよね?

ウィンドウのデザインもダサくないですか?

次の記事では,この欠点を Windows Terminal により解決する方法について書きます.

用語説明

Linux
Linus Torvalds により開発が始められたオープンソースのOS.
Linux カーネル
Linux のうち 主要な部分で,ハードウェア制御を行う.
シェル
ユーザとカーネルとの間のインターフェース.ユーザは直接カーネルに指示を出せないので,シェルを通してカーネルに処理を命令したり,処理の結果を受け取ったりする.
Linux システムコール
シェルからLinux カーネルへの命令.
ターミナルエミュレータ
シェルに渡す指示の入力や,シェルからの結果を表示するためのソフトウェア.単にターミナルということも多い.
Linux ディストリビューション
Linux カーネルは Linux という OS の基礎的な部分でしかないので,そのままユーザに配布しても使い勝手が悪い.そのため,通常は Linux カーネルとその他便利なソフトウェアをセットにして配布する.このセットを Linux ディストリビューションという.

参考資料・読書案内

WSL1 の説明:パソコン工房NEXMAG WSLでWindows 10にLinux仮想環境を構築
WSL1 と WSL2 の比較:Microsoft Comparing WSL 1 and WSL 2
WSL2 インストールガイド:Microsoft Windows Subsystem for Linux Installation Guide for Windows 10
Linux の基礎:三宅英明, 大角祐介,『新しい Linux の教科書』, SB Creative (2015)


  1. CygwinやMinGW自体はコンパイラではなく,「Windowsで動くLinuxのような環境」です.僕がはじめてWindowsでプログラミングをはじめたときは,この2番目の方法(Emacs+Cygwin)をとっていましたが,Cygwinの機能の1つであるCコンパイラ(gcc)を目的に使用していたため,Cygwinなどをコンパイラとみなしました. 

  2. WindowsのPCでLinux環境を作る方法として「デュアルブートを行う」「VirtualBoxなどの仮想マシンを使用する」というやり方もあります. 

  3. WSL2ではLinux カーネルを利用するわけですが,Linux カーネルはたびたび更新されます.この更新を WSL2 では自動で行ってくれますが,その役割を担うのがこの「Linuxカーネル更新プログラム」のようです. 

  4. Microsoft Store には現時点で「Ubuntu」「Ubuntu 20.04 LTS」「Ubuntu 18.04 LTS」という3つのUbuntuがあります.これについてはこちらの記事を参照してください.