【2018年3月 追記】本ブログは、ベータ版についての記述です。
正式版については、ここを参照してください。
Bash on Ubuntu on Windows 概要
2016年11月、WindowsでUbuntuが動作するソフトツールが気になり、私のPCにBash on Ubuntu on Windows(ベータ版)をインストールしました。
日経Linux 2016年10月号にも「ついにデビュー! Windows版Linuxの始め方」という記事が掲載されていました。また、ネットで検索するといろんな情報が書かれてます。
「Bash on Ubuntu on Windows(UoW または BoW)」とは、Windows Subsystem for Linux(WSL)の仕組みで動作するUbuntu環境のことです。WSLは、2016年8月にリリースされた「Windows 10 Anniversary Update」により使用可能となりました。
私は、今までWindowsでUNIXコマンドを使用したい場合は、CygwinというUNIXライクな環境をインストールしていました。しかし、これからはマイクロソフト社が提供するUoWというUbuntu環境が使えるようになります。
UoWが使用できるのは、64ビット版のWindows10でバージョン番号1607、OSビルド14393以降です。
バージョン番号は、『Windowsの設定→システム→バージョン情報』で確認できます。
インストール方法
開発者モードの設定
『Windowsの設定→更新とセキュリティ→開発者向け』で開発者モードを選択して、再起動します。
Windows機能からWSLを有効化
スタートアイコンを右クリックして、『プログラムと機能』を選択します。
『Windowsの機能の有効化または無効化』をクリックします。
□Windows Subsystem for Linux(Beta)をチェックして、「OK」を押して再起動します。
Ubuntuのインストール
コマンドプロンプトを起動して「bash」を実行すると、Ubuntu環境をダウンロードします。
「y」を入力
Windows ストアからダウンロードが開始されます。
ファイルシステムを展開します。
UNIX ユーザー名を入力します。その後、パスワードを入力します。
ユーザー名は、Windowsのユーザー名と無関係でLinux環境で使用ためのものです。sudoで管理者権限のコマンドを使用する時に、このパスワードを使用します。
インストールが完了します。
「exit」コマンドでWindows10のコマンドプロンプトに戻ります。もう一度「exit」コマンドでコマンドプロンプトを閉じます。
ショートカットの作成
UoWのインストールが完了すると、スタートメニューに「Bash on Ubuntu on Windows」が追加されます。
ファイルの場所を調べると、下記場所にショートカットが作成されています。
これをデスクトップにコピーします。
このショートカットのプロパティを見ると、Windowsのホームディレクトリを指定して「bash.exe」を起動しています。
ドキュメントの参照
ドキュメントは、https://aka.ms/wsldocsから参照できます。
ベータ版で完了していないので、問題点や不完全な機能があることが重要事項として記述されています。
Important note
This is the first release of this brand new technology and it is branded “beta” deliberately – it’s not yet complete! We know there are issues and incomplete features, you should expect some things to work and for many things to fail. But we appreciate you playing with this feature and helping us identify the issues we need to fix in order to deliver a great experience.
下記項目がこのWEBページに記載されています。
- Windows上のUbuntuのBashについて
- インストールガイド
- コマンドリファレンス
- Linuxのユーザーアカウントと権限
- 相互運用性
- よくある質問
- リリースノート
インストール先は?
UoWは、隠しフォルダで「%LocalAppData%\LxSS」にインストールされます。
私のPCのユーザー名は「yuki」ですので、%LocalAppData% は「C:\Users\yuki\AppData\Local」です。
隠しフォルダなので、フォルダは見えません。しかし、\LxSSをパスに追加するとインストールされたファイル一覧が見られます。この隠しフォルダは、[保護されたオペレーティング システム ファイルを表示しない]という特別な隠しフォルダです。
Ubuntu環境は、rootfsにインストールされています。見慣れたLinuxのフォルダが並んでいます。
システム情報を調べる
システム情報を調べてみます。
uname -a
Linux OSのディストリビューションとバージョンを確認します。
lsb_release -a
Ubuntu 14.04.5 LST がインストールされています。
初期設定(その1) hostsの変更
管理者権限でコマンドを実行する時はsudoコマンドを使用します。しかし、初期状態のままではホスト名の名前解決で警告メッセージが表示されしばらく待たされます。
/etc/hosts にホスト名を追加して、名前解決できるようにします。
オリジナルの hosts は、下記のように記述されています。
localhost の後ろに、PCのホスト名を追加します。ホスト名は、$(hostname)で参照することができます。
sudo vi /etc/hosts
初期設定(その2)リポジトリの変更
apt-getコマンドによりパッケージをインストールする時のサーバー指定が、海外のサーバーになっているので日本のサーバーに変更します。
/etc/apt/sources.list のホスト名を変更します。
オリジナルの sources.list は、下記のように記述されています。
国内のサーバーに変更します。
pi@RZ82:~$ cat /etc/apt/sources.list deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu trusty main restricted universe multiverse deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu trusty-updates main restricted universe multiverse deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu trusty-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse pi@RZ82:~$
パッケージのインストール
最初にパッケージ情報データベースのローカルキャッシュを最新状態に更新します。
sudo apt update
インストールしているパッケージを最新版に更新します。
sudo apt upgrade
インストールできるパッケージ名を調べます。
sudo apt-cache -n search パッケージ名
パッケージをインストールするには、パッケージ名を指定して install コマンドを使用します。
gccを使用できるように開発ツールをインストールしてみます。
sudo apt install build-essential
gccを使用してみる
C言語で簡単なテストプログラムを書いて、ビルド&実行しました。
#include <stdio.h> main() { printf("Hellow \n"); }
プログラムをビルドします。
pi@RZ82:~/test$ gcc test.c -o test pi@RZ82:~/test$ ls -l 合計 16 -rwxrwxrwx 1 pi pi 8518 11月 3 16:24 test -rw-rw-rw- 1 pi pi 56 11月 3 11:37 test.c
実行します。
pi@RZ82:~/test$ ./test Hellow pi@RZ82:~/test$
UoWのアンインストールについて
Ubuntu環境をアンインストールするには、Windowsコマンドプロンプトで下記コマンドを実行します。
lxrun /uninstall
ホームディレクトリの内容もまとめて削除する場合は、「/full」オプションを付けます。
lxrun /uninstall /full
再インストールするには、下記コマンドを実行します。
lxrun /install
最後に
UoWは、簡単なインストールでUbuntu環境が使えるようになりますので、もう私にはCygwinは不要となりました。Windowsユーザーが手軽にUbuntu環境を使えるようになります。
また、ARMプロセッサなどの組み込み機器開発においてWindows上でクロス開発環境を構築するため、VMware/VirtualBoxなどの仮想化環境にLinuxをインストールしていましたが、UoWをクロス開発環境として利用できる時代が到来したのかもしれません。