Windows Subsystem for Linux で Ubuntu

今のWindows Subsystem for Linux (WSL) はUbuntuがストアアプリになってるんですね。
しかもUbuntu以外にDebianやらopenSUSEやらもあるようです。

f:id:licheng:20190402175602p:plain:w640

古いBash on Ubuntu on Windowsのアンインストール

初期のWSLの頃にインストールしたBash on Ubuntu on Windowsをアンインストールしたい場合にはDOS窓で下記のコマンドを実行します。

lxrun /uninstall /full /y


ストアアプリのWSL版Ubuntuのインストール

ストアアプリのWSL版Ubuntuは下記の手順でインストールします。

  • スタートメニューから「設定」→「アプリ」→「プログラムと機能」→「Windowsの機能の有効化または無効化」を開きます。
  • Windows Subsystem for Linux」にチェックを入れます。
  • 再起動を求められるので「今すぐ再起動」します。
  • Microsoft Storeで「Ubuntu」を検索します。
  • Ubuntu」を「入手」し「起動」します。
  • 初回起動には数分かかります。ユーザー名とパスワードの設定を求められるので適宜設定します。
  • インストールが成功すると、Bashのプロンプトが表示されます。

f:id:licheng:20190402175726p:plain

  • コンソールへの/からのテキストのコピペのためには、プロパティの「オプション」の「簡易編集モード」にチェックを入れます。
  • 以下のコマンドを実行してパッケージを最新の状態に更新します。
sudo apt update
sudo apt upgrade


バージョン確認

Ubuntuのバージョンを確認するには下記のコマンドを実行します。

cat /etc/lsb-release

実行結果は下記のようになります。

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"


WindowsUbuntuディレクトリ参照

Ubuntu側から見ると、WindowsのCドライブは下記のパスになります。

/mnt/c/

Windows側から見ると、Ubuntuのルートファイルシステムは下記のネットワーク共有フォルダとして見えます。ネットワーク共有フォルダのため、コマンドプロンプトでの移動はできません。

 \\wsl$\Ubuntu

WindowsUbuntuでファイルを共有したい場合、実体をWindows側に置くならUbuntu側からはシンボリックリンクを張るとよいでしょう。ただし、Windowsファイルシステムにファイルを置く以上、パーミッションが効かない(777になる)のは仕方ありません。

たとえば、C:\Users\Nishimura\Documents\Hoge へのシンボリックリンクUbuntu側のホームディレクトリ直下に張るには下記のようにします。

ln -s /mnt/c/Users/Nishimura/Documents/Hoge ~/Hoge

以下は古い内容です。(2021/06/06 改訂)

Windows側から見ると、Ubuntuのルートディレクトリは下記のパスになります。
 %LOCALAPPDATA%\Packages\
  CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
ただし、Windows側からUbuntu側のファイルを操作すべきではありません。たとえばWindows側からUbuntuディレクトリにファイルを追加してもUbuntu側からは見えません。またWindows側からUbuntuのファイルを変更しても、Ubuntu側からは見るとタイムスタンプは変化しません。詳しくは下記ページを参照してください。
Do not change Linux files using Windows apps and tools - Windows Command Line
【2019/04/09 追記】
Windows 10 19H1 で改善されると発表されました。これでようやくWSLが本格的に使えるものになると期待します。
WindowsからLinuxファイルへのアクセスが可能に ~「Windows 10 19H1」におけるWSLの改善 - 窓の杜