PR

目的はローカルでの開発の支援

 ところで、米Microsoft社はなぜWSLを提供することにしたのでしょうか?その最大の目的は、システムの開発者や運用担当者がWindowsマシン上でも、Linux向けに書かれたオープンソースのツールを使って日々の開発や運用をできるようにすることにあります。

 最近のシステム開発では、「プログラミング言語」や「フレームワーク」「ライブラリ」「コマンドラインツール」「Webサーバー」「データベース」など、フロントエンドからバックエンドに至るまで、さまざまなオープンソースソフトウエア(OSS)が利用されています。これらのOSSはLinuxでの利用を想定して開発されていることが多く、実際にOSSを使って開発されたシステムの本番環境としても、Linuxが広く使われています。

 Microsoft社は長年にわたって、人気の高い一部のOSSについては、Windows上でもLinux上と同じように利用できるようにする取り組みを、コミュニティーとともに進めてきました。それでも、OSSの巨大なエコシステム全体をカバーすることが難しいのが現状です。

 こうしたなか、OSSを利用するエンジニアの多くが、開発環境として「macOS」を選択しています。macOSはBSD系のUNIXをベースにしたOSで、LinuxベースというわけではありませんがLinux向けと同じOSSを使えることが少なくないからです。Windows上でもmacOSと同様にOSSを利用した開発や運用をしやすくするために、Microsoft社はWSLの提供を始めたのです。

 WSLの目的は、CUI(コマンドライン)でLinuxのツールやユーティリティーを使えるようにすることです。「GNOME」や「KDE」といったLinuxのデスクトップ環境はサポートしていません。後で紹介しますが、GUIのアプリケーションを実行する方法はあります。けれども、そうした使い方は少なくとも現時点では、Microsoft社はサポートしていません。

 同社はまた、WSLで本番環境向けのサーバーを動かすことも推奨していません。このため、サーバーの運用で使われることの多い「デーモン」と呼ばれるサービスを自動実行する機能も、WSLでは実行できないようになっています。とはいえ、WSLでWebサーバーやデータベースを実行すること自体は可能です。ローカルの開発やテスト環境、クリティカルではない本番環境として使うことは問題ありません。

 ここからはWindows版Linuxを使いこなすコツや注意点などを見ていきましょう。

ファイルの相互操作は基本NG

 WSLでは、二つのファイルシステム「VolFs」と「DrvFs」を扱っています。VolFsは、Linux側の「/」(ルート)や「/home」(ホーム)などのディレクトリーをマウントするのに使われます。「ファイルパーミッション」や「シンボリックリンク」「デバイスファイル」といったLinuxの標準的なファイル管理もサポートしています。

 マウントポイント「/」のファイル群は、「C:¥Users¥ユーザー名¥AppData¥Local¥Packages¥パッケージ名¥LocalState¥rootfs」に存在します。隠しファイルに設定されていますが、表示を有効にすればエクスプローラーでアクセスできます。

 ただし、これらのファイルはLinux側でのみアクセスすべきものであって、Windowsからの操作は推奨されていません。また、ファイルパーミッションはLinuxでのファイル管理に従います。このため、初回起動時に作成した「UNIXユーザー」やsudoコマンドを実行するときに使われる「rootユーザー」を意識することになります。

 もう一つのファイルシステムであるDrvFsは、Windowsアプリケーションとファイルを共有したいときに使うファイルシステムです。たとえば、WindowsのCドライブは「/mnt/c」にマウントされます。ファイルパーミッションはWindowsでのファイル管理に従います。

 例えば、通常のWindowsユーザーは「C:¥」フォルダーにある管理者権限が必要な一部のファイルにはアクセスできません。このため、UbuntuやopenSUSEなどの端末画面を通常のWindowsユーザーで起動したとき、/mnt/c/ディレクトリー以下にあるこれらのファイルにはアクセスできません。端末画面を「管理者として実行」すれば、アクセスできるようになります。

Windows側で管理者権限が必要なファイルにはアクセスできない
Windows側で管理者権限が必要なファイルにはアクセスできない
[画像のクリックで拡大表示]
Ubuntuを管理者権限で実行する方法
Ubuntuを管理者権限で実行する方法
[画像のクリックで拡大表示]