Bash on Ubuntu on Windows をバージョンアップ(Ubuntu 16.04.2 LTS)


【2018年3月 追記】本ブログは、ベータ版についての記述です。

正式版については、ここを参照してください。


はじめに

2017年4月、Windows 10 Creators Updateにより「Bash on Ubuntu on Windows」がバージョンアップしました。「Bash on Ubuntu on Windows」とは、Windows Subsystem for Linux(WSL)の仕組みで動作するUbuntu環境のことで、Windows10でUbuntuが動作します。

Bash on Ubuntu

Bash on Ubuntu

Windows 10 Creators Updateにより、Ubuntu環境が 14.04.5 LTSから16.04.2 LTSへバージョンアップしました。

  • 2016年8月 : Ubuntu 14.04.5 LTS リリース (By Windows 10 Anniversary Update)
  • 2017年4月 : Ubuntu 16.04.2 LTS リリース (By Windows 10 Creators Update)

Bash on Ubuntu on Windowsのバージョンアップ

私のPCにインストールした「Bash on Ubuntu on Windows」をバージョンアップしました。

Windows10 Creators Updateを実施

Windows10アップグレードアシスタントを起動して、Windows 10 Creators UpdateによりWindows10をバージョンアップします。

Windows10 アップグレードアシスタント

Windows10 アップグレードアシスタント


Windows10 更新

Windows10 更新

Windows10 更新

Windows10 更新

Windows10のバージョンは、『Windowsの設定→システム→バージョン情報』で確認できます。
バージョン番号1703、OSビルド15063.250です。

Windows10 バージョン

Windows10 バージョン


「Bash on Ubuntu on Windows」は、Windows 10 Anniversary Updateによりすでにインストール済みです。「Bash on Ubuntu on Windowsとは」を参照してください。

Windows 10 Creators Update しましたが、「Bash on Ubuntu on Windows」のバージョンや環境には変化ありません。

pi@RZ82:~$ uname -a
Linux RZ82 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
pi@RZ82:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty

Bash on Ubuntu on Windowsのアップデート方法

Bash on Ubuntu on Windowsのアップデートを実施するために、Ubuntu環境を一度アンインストールしてから再インストールします。

Windowsコマンドプロンプトでコマンドを実行します。

アンインストールは、下記コマンドを実行します。

lxrun /uninstall

ホームディレクトリの内容もまとめて削除する場合は、「/full」オプションを付けます。

lxrun /uninstall /full

再インストールするには、下記コマンドを実行します。

lxrun /install

Bash on Ubuntu on Windowsのアップデートしてみる

最初にアンインスールします。

C:\Users\yuki> lxrun /uninstall
これにより Windows 上の Ubuntu がアンインストールされます。
Ubuntu 環境および次の項目を除くすべての変更内容と新しいアプリケーションが削除されます。

C:\Users\yuki\AppData\Local\lxss\home
C:\Users\yuki\AppData\Local\lxss

続行するには、"y" を入力してください: y
アンインストールしています...

次に、再インストールします。

C:\Users\yuki> lxrun /install
-- ベータ機能 --
これにより Windows に Ubuntu がインストールされます。Ubuntu は Canonical によって配布される製品であり、
次のサイトに示される条件に基づいてライセンスされています。
https://aka.ms/uowterms

続行するには、"y" を入力してください: y
Windows ストアからダウンロードしています... 100%
ファイル システムを展開しています。この処理には数分かかります...
Ubuntu のロケールを Windows のロケール (ja-JP) と一致するように設定しますか?
既定のロケールは en_US です。
続行するには、"y" を入力してください: y
既定の UNIX ユーザーを復元しています: pi
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: password updated successfully
インストールが正常に終了しました

Bash on Ubuntu on Windowsを実行して、ターミナルを開きます。

インストールしているパッケージを最新版に更新します。

sudo apt update
sudo apt upgrade

Bash on Ubuntu on Windowsのバージョンを確認します。

pi@RZ82:~$ uname -a
Linux RZ82 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 x86_64 x86_64 GNU/Linux
pi@RZ82:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:        16.04
Codename:       xenial

Ubuntu 16.04.2 LTS にバージョンアップしました。

初期設定 hosts

Ubuntu 14.04.5 LTS の時は、/etc/hosts にホスト名を追記しましたが、Ubuntu 16.04.2 LTS では自動的にホスト名が追記されるようになりました。

pi@RZ82:~/test$ cat /etc/hosts
# This file was automatically generated by WSL. To stop automatic generation of this file, remove this line.
127.0.0.1 localhost
127.0.1.1 RZ82.localdomain RZ82

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

初期設定 リポジトリの変更

apt-getコマンドによりパッケージをインストールする時のサーバー指定が、海外のサーバーになっているので日本のサーバーに変更します。

/etc/apt/sources.list のホスト名を変更します。

オリジナルの sources.list は、下記のように記述されています。

pi@RZ82:~$ cat /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse

国内のサーバーに変更します。

pi@RZ82:~$ cat /etc/apt/sources.list
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ xenial main restricted universe multiverse
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ xenial-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse

UbuntuファイルとWindowsファイル

Ubuntu環境は、Windowsの「%LocalAppData%\LxSS」に隠しファイル(保護されたオペレーティングシステムファイル)としてインストールされます。
私のPCのユーザー名は「yuki」ですので、%LocalAppData% は「C:\Users\yuki\AppData\Local」となり、「C:\Users\yuki\AppData\Local\LxSS」にインストールされます。

UbuntuファイルとWindowsファイル

UbuntuファイルとWindowsファイル

Windows側からUbuntu環境のファイルへの(追加/変更/削除)アクセスは禁止しています。もし、ファイルに書き込みした場合は、ファイルシステムが壊れてしまいますので注意が必要です。

逆に、Ubuntu側からWindows環境のファイルへのアクセスは、/mnt/ドライブ名にマウントされていますので /mnt/e/ などでアクセス可能です。

最後に

今回のバージョンアップにより、Ubuntuの日本語環境が安定してきたようなので、活用してみたいと思います。
また、 BashからWindowsプログラムの実行ができたり、DOS環境からBashコマンドが実行できるようになったので、bashとwindowsを連携させた快適な環境を実現させてみたいと考えています。