Edited at

SurfacePro3にUNIX-like環境整えてみたよ

More than 5 years have passed since last update.

タイトルは釣り気味です。内容的にはWindows8にUNIX-like環境を整えるという話でSurfacePro3そこまで関係ありません。でもSurfacePro3でこの環境構築をして使ってるのは本当だよ!


背景

SurfacePro3は素晴らしいマシンです。フルスペックのノートでありながらMacBookAirより軽量で、タッチとペン入力付き。タブレットとしても使えないことはないなど、モバイルデバイスとしては現時点では満額回答です。

しかし、WindowsというOS故に、UNIX-likeなソフトウェアの調達には難儀することになります。代表的な解決策Cygwinらしいですが、いいか二度とその名を私の前で言うんじゃない(面倒な記憶しかない)。というわけで、Windowsでも恋もといUNIXしたいという需要に向けた記事です。


やることの概要

VMWareにLinuxサーバを導入→sshで接続。これだけだとサンドボックスのVMにアクセス出来るだけなので、Windowsの共有フォルダ機能を使ってVM側からWin側フォルダをマウント。これによりMacのターミナル感覚で使えるようにしつつ、「本物の」LinuxソフトウェアをWindowsのファイル領域を使って走らせることができる。


具体的な作業

今回はVMWareにUbuntu Server 14.04を入れた。Linuxディストリビューションは何でもいいと思う。GUIとかいらないしサーバーエディションみたいな構成でいいんじゃないかな。

VMの設定はネットワークをNATで。他はデフォルトでOK.

Ubuntuインストール後、まずはsshのインストール。VMWareのコンソールからの入力は非常にやりづらいので、さっさとWinのターミナルアプリからの接続に切り替えます。

$ sudo apt-get install openssh-server ssh

/etc/ssh/sshd_config を編集、PasswordAuthenticationのコメントアウトを外す

$ sudo /etc/init.d/ssh restart

これでWin側からターミナルアプリでログイン出来る。

VMのIPアドレスは、VM内でifconfigして確認。192.168.xxx.yyyみたいになってるはず。


Win側でやっておく作業

ターミナルアプリを導入しておく。rloginがいいです。 http://nanno.dip.jp/softlib/man/rlogin/

Windowsでは伝統的にはputtyとかpodrosaとかの名前が出てきますが、こいつらはtmuxのウィンドウ分割がまともに動作しないという致命的な弱点があります。私の知る限り、Winのターミナルアプリでtmuxをまともに扱えているのはrloginだけなので一択です。

Win側でマウントしたいフォルダをプロパティ→詳細な共有設定から共有オン。アクセス権限に普段使ってるユーザを追加してやる。これをやらないと、所有権あるユーザでマウントしてもファイル操作できなくなるよ。あとデフォルトだとEveryoneが読める設定になっているので、必要なければ削っておきましょう。

ちなみに私はC:Users\myNameを共有フォルダにしました。

恐らくMicrosoftアカウントが普段使うユーザになるので、MSアカウント名を確認しておく。MSアカウント名はコンパネ→ユーザ管理→ユーザプロファイルの詳細プロパティ構成で表示。

XXX-SURFACE¥tackman のtackmanの部分がUbuntuからのマウント時に使うユーザ名です。

マウント時に使うユーザ名はyouracount@hotmail.com等のメールアドレスではないので注意。


ssh接続してUbuntu側でする作業

Windowsフォルダをネットワーク越しでマウントするためのツールが素のUbuntu Serverには入ってないので、cifs-utils入れてやる

$ sudo apt-get install cifs-utils

マウント用のディレクトリを作ってマウント。お作法的には/mnt以下に作ることが多いようですが、普通のユーザディレクトリっぽく使いたかったので~/windirとかにしました。

$ cd

$ mkdir windir

$ sudo mount -t cifs -o sec=ntlm,uid=LINUX_UID,gid=LINUX_GID,user=WINDOWS_USER,password=YOUR_PASSWORD,rw,file_mode=0777,dir_mode=0777 //WINDOWS_IP_ADRESS/SHARE_FOLDER_NAME /home/USER_NAME/windir


(http://qiita.com/smzk/items/3fcb51cb118602dc9c9c を参考にしました)

オプションにsec=ntlmついてるのがポイント。これないとdenyされます。

WINDOWS_USERは常用しているアカウント。通常は上で調べたMSアカウントになるはず。

WINDOWS_IP_ADRESSはコマンドプロンプトのipconfigで出てくるやつ。VMWareなんちゃらみたいな名前ついてるはず。

これでUbuntuの~/以下にWindowsのユーザフォルダがあるかのごとく動きます。マウント解除する時はumount -l ~/windirで。


使用感

動かしてる間はかなりMacのターミナルに近い。Windowsのそもそものコマンドライン環境を思えばこの時点で大勝利。

問題はスリープした時。rloginとUbuntu間のセッションは切れることが多く、再接続が必要。VM自体もたまに調子悪くなるので再起動が必要になることも。SurfacePro3のストレージがSSDなためか、起動は速いのでそこまで苦痛はないですが。

とは言え、これらはCygwinでこうむる様々な不幸に比べたらささいなものだと思います。


その他Q&A

Q. VMWare使ってるのにVMWareの共有ディレクトリ機能使わないの?

A. 特定VMツールに依存している感じがキモかったので、なんかうまくいかなかった時点であまり真面目に調べなかった

Q. VM立ち上げっぱなし?メモリとか大丈夫なの

A. 大丈夫っぽい。VMはメモリ1GBの設定にしてますが、リソースモニタ見る限り実際使う分しか確保しないっぽくてChromeとかに比べるとかなり控えめな量しか使ってないです。

Q. 日本語大丈夫なの

A. 不安になるレベルで何も問題がなかった

Q. スリープでsshセッション切れるとか面倒なんだけど

A. tmuxなりscreenなりで状態保存しときましょう。

Q. VMWareはライセンスとかめんどいからVirtualBoxの方がよくね?

A. VirtualBoxはなんかエラー出て、軽くググるとWin8.1でのエラーは次バージョンで直る?かも?みたいなこと言ってたので、ここ乗り越えられる猛者募集中な感じです。とりあえず私は個人用途なのでVirtualBoxは投げました。

Q. アイコン

A. ちえりちゃんぴょんぴょん