評価版のBash on Ubuntu on Windowsを試してみる
こんにちは。
開発チームのワイルド担当、まんだいです。
今夏最大のトピックは、Windows10でのBashサポートだと個人的には思っているのですが皆さんはいかがでしょうか。
Build 2016で発表されて以来、大した情報もなくてどうなんだろうと思っていたら、Windows10のプレビュー版をインストールすることで開発中のBashが試せるということで早速試してみましたのでレポートしたいと思います。
プレビュー版がインストールされる環境に設定する
通常のWindows10環境では正式版がインストールされるまで待つことになるので
LAVIE Hybrid ZEROでいち早くBash on Ubuntu on Windowsを体験する | デジタル生活部の記事を参考に、Windows Insider Previewプログラムへ参加手続きを行います。
細かい設定等はリンク先の情報を全面的に信用して設定するとうまくいきました。
実際最新版の開発者プレビューが案内されるまで数日掛かると書いてありましたが
なんと次の日最新版の開発者プレビューへのアップデート通知が来たのでびっくりしました。
幾度か再起動を繰り返すと、無事インストールが完了しました。
Please enter a UNIX user nameで悩む
いざbashを起動するぜということで、Windowsキーを押して「bash」と入力すると、「Bash on Ubuntu on Windows」という文字が!
起動すると、コマンドプロンプトとなんら変わらないコンソール画面が表示されます。
ただ、日本語環境は中途半端で、文字化けしまくっていて何が書いてあるのか分からず、「Please enter a UNIX user name」という表記で悩みました。
結論から言うと
rootと打つとノンパスでログインできる!
ということでした。まぁ、プレビュー版ですしね。
細かいことは気にしないで行きましょう。
windowsのCドライブは/mnt/c以下にマウントされている
なんだかディレクトリ構成がキモチワルいですね。
/mnt/cがCドライブだったら、/ は一体どの位置にあるんだ?という疑問は尤もだとおもいますが、プレビュー版ですしね。
rootの割にはDocuments and Settings以下にはアクセスできないスーパーユーザーぶり(Permission denied)です。
ファイル名が日本語のものはlsすると途中で切れる
全般的にですが、全般的にマルチバイト文字のサポートは未実装のようです。
dfコマンドも上手く動いておらず、確認できません。
カーネルはLinuxではないので仕方ないのでしょうか。
この辺りも色々見えるようになると、かなり便利ですね。
psを打つとほとんどプロセスが動いていない
psコマンドにタスクマネージャのような機能を期待してはいけません。
Bash環境とWindows環境は完全に別で管理されているようです。
実際どこまでできるのか
それでは、今の段階でどの程度まで使えるものなのか、幾つかソフトウェアをインストールしてみました。
ssh
リモートホストへのアクセス可能。鍵を使った認証も問題なく動作しました。
sed
デフォルトでインストール済み。問題なく動作します。
awk
デフォルトでインストール済み。問題なく動作します。
vi
デフォルトでインストール済み。問題なく動作します。
top
デフォルトでインストール済み。動作しますが、PID以外の情報は取れていません。
grep
デフォルトでインストール済み。問題なく動作します。
wget
デフォルトでインストール済み。問題なく動作します。
curl
デフォルトでインストール済み。問題なく動作します。
FTPなどのHTTP以外の通信は未テストなので要注意。
ping
デフォルトでインストール済み。
「ping icmp open socket: Socket type not supported」という表示が出て、pingを送信する事はできない。
netstat
デフォルトでインストール済み。問題なく動作します。
ただし、ソケット通信はできないのが原因なのか、何も表示されず。
シェルスクリプト
bash、dashが用意されています。
ちなみにubuntuからの移植なので、/bin/shは/bin/dashへのシンボリックリンクになっています。(この辺りはUbuntuと同じ)
apache
インストールはできたけど動かず。
ソケットがうまく作れない的なエラーで起動できず。
PHP
apt-get install php5
でインストール可能。
php5-curlなどもapt-getからインストール可能なので、コマンドラインツールなら問題なく動作しそう
コンソールからメールを配信してみる
mailコマンドがインストールされていないので、以下のコマンドでインストール。
apt-get install mailutils
ただ、mailコマンドは上手く動かず。
mysql
以下のコマンドでインストール可能。
apt-get install mysql-server
動く!(それも普通に)
ただし、以下のエラーが表示される。
/etc/init.d/mysql start df: Warning: cannot read table of mounted file systems: No such file or directory /lib/lsb/init-functions.d/50-ubuntu-logging: line 5: 46 Aborted (core dumped) plymouth --ping > /dev/null 2>&1 * Starting MySQL database server mysqld /lib/lsb/init-functions.d/50-ubuntu-logging: line 5: 485 Aborted (core dumped) plymouth --ping > /dev/null 2>&1 [ OK ] * Checking for tables which need an upgrade, are corrupt or were not closed cleanly.
まとめ
curlやwgetが普通に動くのにはびっくりですが、apt-getでソフトウェアをインストールできるのを考えると、TCP/IP通信はできるレベルなのかと。
ただ、pingコマンドが使えないのは驚きでした。
普段何気なく使っているコマンドが、どのように動いているかわかっていないのがバレましたね。
MySQLが普通に動いているのには衝撃を受けました。
ただ、MySQL serverの起動時にエラーが出ているので完全な動作は期待できないかも知れません。
stop → startした後もデータは残っていましたし、PCの電源を落としてもデータは残っていたので一応は動いているようです。
この調子だと、コンソールからPHPとMySQLを連携させたツールなどは動くような気もしています。
ただ、my.cnfに書かれているソケットファイルは生成できていないし、netstatを見ても3306ポートを掴んでいる形跡はありません。
エラーログもバンバン出ているので、動作はかなり不安定なんだろうというのは推測できます。
今できそうなこと
簡単なバッチ処理の確認? いやいや、まだテストできる環境でもありません。SSHがcygwinやgit bash不要でできるようになったくらいでしょうか。
MSP的な立ち位置からbash on Ubuntu on Windowsを使うのは、監視用途で確認作業がLinuxと同じようにできるくらいなのかと思いますが、それすらできていない現状では、評価は難しいですが、大きな一歩だと思います。
うまく動くようになれば、Windowsの監視方法をガラリと変えることになりそうです。
以上です。