Windows Subsystem for Linux (WSL)の導入により、Windows上でUbuntuなどのLinuxディストリビューションが簡単に利用できるようになった。Microsoft StoreからUbuntuをアプリケーションと同様にインストールして利用できるようになり、WindowsがUbuntuを利用する上で非常に手軽なプラットフォームとなっている。

まだ開発段階にある次期WSLでは、メモリの動的な管理やネットワーク機能の改善など、多くの新機能や改善が行われている。Ubuntu on WindowsはこれからもUbuntuを利用するのに便利なプラットフォームであり続けることが予想される。

Ubuntu on Windowsの誕生

WindowsにWSLと呼ばれる機能が導入されてから、WindowsでUbuntuをはじめとするLinuxディストリビューションをこれまでよりも簡単に使用できるようになった。この仕組みはWSL (Windows Subsystem for Linux)と呼ばれており、まず1系と2系で仕組みが大きく異なっている。1系はシステムコールを差し替えるレイヤ技術、2系はHyper-Vに基づく仮想マシンでLinuxカーネルを動作させる仮想化技術になっている。

本連載は、WSLの2系(WSL2)がデフォルトで採用されるようになってから始まった。連載開始以降、デフォルトで搭載されている機能に大きな変更はない。Microsoft Storeからアプリケーションと同じ要領でUbuntuをインストールし利用することができる。

  • Microsoft StoreでUbuntuを検索

    Microsoft StoreでUbuntuを検索

  • Microsoft StoreでUbuntu 22.04.2 LTSをインストール

    Microsoft StoreでUbuntu 22.04.2 LTSをインストール

  • インストールしたUbuntu 22.04.2 LTSを開いて最初のセットアップを行う

    インストールしたUbuntu 22.04.2 LTSを開いて最初のセットアップを行う

  • 利用するユーザの名前とパスワードを入力する

    利用するユーザの名前とパスワードを入力する

  • 初回のセットアップ完了

    初回のセットアップ完了

Windowsは世界で最も広く普及しているデスクトップ向けのオペレーティングシステムだ。一方、サーバ向けオペレーティングシステムとしてはLinuxが広く使われている。WindowsでUbuntuの動作をサポートすることはWindowsでこうしたサーバ向けシステムの開発を手軽に行えるようにする狙いが強くあったものとみられる。

  • Ubuntu 22.04.2 on Windows 11

    Ubuntu 22.04.2 on Windows 11

  • sudo apt updateでパッケージメタデータをアップデート

    sudo apt updateでパッケージメタデータをアップデート

  • sudo apt upgradeでパッケージを一斉アップデート

    sudo apt upgradeでパッケージを一斉アップデート

  • neofetchでディストリビューション情報を表示

    neofetchでディストリビューション情報を表示

Windowsでサーバシステムを開発する際は、Visual StudioやVisual Studio Codeが使われることが多く、サーバへのアクセスにはWindows Terminalが使われるケースが増えている。これらアプリケーションは当然のようにWSLに対応している。Microsoftはこれら主要アプリケーションの開発に積極的に投資しており、この1年半でもWSLに関連したさまざまな機能追加や改善が行われた。

現在のところ、Windowsは最も手軽にUbuntuを使えるプラットフォームということになる。Ubuntuを容易に導入でき、Webアプリケーションの開発にもVisual StudioやVisual Studio Codeといった人気の開発環境が利用可能だ。

WSL 2.0.0の登場

この1年半でWSL自体の開発が行われていないかといえばそんなことはなく、WSL自体も開発が進められてきた。本稿執筆時点では、バージョン1.2.5.0がデフォルトのバージョンだが、プレビュー段階にあるものの2.0.x.xも登場しており、試すことができる状態になっている。

  • 執筆時点でのバージョンサンプル

    本稿執筆時点でデフォルトのバージョンサンプル

まだプレリリースの段階なので使用することは推奨できないが、「wsl --update --pre-release」のように、コマンドを実行するとこの新しい2.0.x.xへアップグレードすることもできる。

  • wsl --update --pre-releaseでWSL自体をプレリリース版へアップデート

    wsl --update --pre-releaseでWSL自体をプレリリース版へアップデート

例えば、WSL 2.0.0.0では次のような新機能の追加や改善が行われている。

  • 使用状況に応じてWSLの使用する仮想マシンが確保したメモリを自動的に縮退させたり、開放してWindowsホスト側で使用できるように改善
  • 仮想マシンの仮想ディスクをスパースする機能を実装
  • ローカルホスト(localhost: 127.0.0.1)を使ってLinuxからWindows側に接続可能
  • LANからWSLへの直接接続を可能に変更
  • VPNネットワーク互換性の向上
  • マルチキャストのサポート
  • ミラーモードネットワークの実現
  • DNSトンネリングの実現
  • ファイアウォール機能関連の改善
  • 自動プロクシ機能の実装
  • IPv6をサポート

一部の機能は、WSL 2.0.0.0以降にアップデートすることで利用できるようになるが、本稿執筆時点では設定ファイルに機能を有効化する指定が必要。また、いくつかの機能は開発版Windows 11が必要となっており、そのままでは使えない。

なお、一部の実験的な機能はWindowsでUbuntuを常用する上できわめて有益な機能なので、そう遠くない段階でデフォルトの機能として動作するようになるとみられる。

Ubuntu on Windowsのこれから

WSL2で動作するUbuntuは、ベアメタルや通常の仮想マシンで動作するUbuntuと比較すると、一部の挙動が特殊だった。このため不便なこともあったのだが、不満点は逐次解消されて現在に至っている。

そして、WSLを常用する懸念の一つだったメモリ使用量の多さだが、これもWSL 2.0.x.xの導入である程度解消されることが予測される。これでWindowsでUbuntuを使う上での懸念がさらに軽減されることになると考えられる。

クラウドサービスの充実でWebアプリケーションやWebシステムの開発は徐々に様相を変えつつある。これまでのようにLinuxサーバにべったりしたシステムの開発から、クラウドサービスを呼び出して処理を済ませるといった方法も増えている。従来の開発方法がなくなったわけではないのだが、多様化が進んでいるのは間違いがない。

シーンが多様化しているとは言え、開発やセキュリティにおいてUbuntuやLinuxの基本が大切なことは変わらない。WSLで動くUbuntuはこうした勉強にも実験にも便利だし、本番環境を想定した開発にも利用できる。使ったことがなければ一度試してもらいたい機能であり、Visual Studio CodeやVisual Sudioと組み合わせた開発の便利さも体験してもらいたいところだ。

本連載は今回で終了だ。基本的なことだけを取り上げてきたが、基本を把握しているのとしていないのとでは、作業する段階で大きな違いが生まれる。ぜひ、手を動かしてUbuntu on Windowsの機能を把握してもらえればと思う。

参考