Anniversary Updateの変更点 Bash編

「Bash on Ubuntu on Windows(以下、BUW)」は開発者向け機能として、Anniversary Updateから加わる新機能だ。経緯や概要は過去の寄稿記事をご覧頂きたい。MicrosoftはBUWを"開発者向け機能"と説明し、X Window SystemなどGUI環境は未サポートである。だが、XmingもしくはVcXsrvといったWindows上で動作するXサーバーをインストールすれば、Ubuntuのデスクトップ環境であるUnityを実行することは可能だ。

テキストベースのアプリケーションは、パッケージをインストールすれば動作する

BUWに各種パッケージをインストールし、Unityを無理矢理動かした状態

ただし、上図のように日本語フォントを用いると表示面で不具合が発生し、icmpソケットを開けないなど、ネットワーク周りは不完全な部分が多い。この辺りはWindows 10が成長するように改善していくと思われるが、今すぐ使おうとするユーザーにとっては厳しい状況だ。それならターミナル(端末)を変更すればとWindows版SSHクライアントのPuTTYでアクセスしても応答はない。「/usr/sbin/sshd」は存在するのだが、起動することはできなかった。

そこで軽量なSSHサーバーであるDropbearをインストールして、SSHサーバーを起動してみたが、一方のPCではDropbearがどうしても起動しない。Unity環境の構築でパッケージの依存関係がおかしくなってしまったようである。そこで別のPCでDropbearをインストールし、「/etc/default/dropbear」を編集して起動可能にしてから、SSHサーバーがようやく動作した。

「/etc/default/dropbear」の「NO_START=0」に変更してから、「sudo service dropbear start」で起動する

PuTTYでローカルホスト(127.0.0.1)に接続すると、BUW上のセッションにアクセスできた

tmuxで画面分割し、vimやlsとslを実行している状態。Windows 10上でも十分実用的になることが確認できた

1つ注意しておきたいのが、BUWは「Windowsの機能」で<Windows Subsystem for Linux>を無効化→有効化としても以前の環境を消すことはできない点だ。BUWをアンインストールするには、管理者権限でコマンドプロンプトを起動し、「lxrun /uninstall /full」を実行する。改めて再インストールするには「lxrun /install /y」を実行すれば、真っ新なBUW環境に戻る。何らかの問題が発生した場合は、「%LOCALAPPDATA%\lxss\rootfs\」フォルダーなどから、必要なファイルをあらかじめ回収した後にアンインストール&再インストールするとよい。

「lxrun /uninstall /full」を実行すると、BUWが使用するフォルダーをすべて削除できる

「lxrun /install /y」と実行すれば、イメージファイルのダウンロードからやり直せる

ちなみにPuTTYの文字セット設定が間違っていると、ロケールがPOSIXになるため日本語が表示されなくなる。その際は「リモートの文字セット」として<UTF-8(CJK)>を選択すればよい。冒頭で述べたように本稿はWindows 10 Insider Previewをベースに執筆し、RTM(製造工程)版に相当するビルド14393.5で検証を行っている。今後はSSHサーバーも問題なく動作し、今回のような設定は不要かもしれないが、BUWは「本気で使えるLinux環境」であることは確かだ。