UNIXベースアプリケーション用サブシステムの導入

Vista Ultimate x64にUNIXベースアプリケーション用サブシステム(SUA:Subsystem for UNIX Application)を導入してみました。

Vista以降は、UAC機能が有効やAdminstratorアカウントが無効になっている点でXPの場合とは状況がことなります。
また、Vista以降ではSUAとSUFに分かれている点でもことなります。
※SFU:Windows Service for UNIX

SUAはWindows Vista UltimateとEnterpriseに機能がありますが、標準では無効化されています。

1.UNIXベースアプリケーション用サブシステムの有効化

①コントロールパネル⇒プログラム⇒Windows機能の有効化または無効化
②一覧から「UNIXベースアプリケーション用サブシステム」にチェックし、OKをクリック
※進捗バーはまったく進みませんが約5分くらいすると進みだします。非常に時間がかかりますので気長にお待ちください。

2.UNIXベースアプリケーション用サブシステムのユーティリティのダウンロード

①スタートメニューにある「UNIXベースアプリケーション用サブシステム」⇒「UNIXベースアプリケーション用サブシステムのユーティリティのダウンロード」をクリックし、ダウンロードサイトへ接続する。
②「CONTINUE」をクリックする

③「No, I do not want to register. Take me to the download.」にチェックし、「CONTINUE」をクリックする
ダウンロードが始まります。

3.UNIXベースアプリケーション用サブシステムのユーティリティのインストール

①ダウンロードしたファイルを実行し、インストールを開始します。
※ダウンロードしたファイルは自己解凍式ですので、解凍後インストールがはじまります。

②Setup Wizardの開始
そのまま「Next」をクリック

③Customer Infomationの入力
適切に入力して「Next」をクリック

④License and Support Information
内容を確認してよければ「I accept the agreement」にチェックし、「Next」をクリック

⑤Installation Option
「Custom Installation」にチェックを入れて、「Next」をクリック
※Standardではほとんどのコンポーネントが導入されません。

⑥Selecting Components
すべてをインストールするように変更し、「Next」をクリック

⑦GNU SDK
内容を確認して、「Next」をクリック

⑧Security Settings
すべてにチェックを入れて、「Next」をクリック

⑨Summary
内容を確認してよければ、「Install」をクリック

⑩インストールの実行中

⑪Setup Wizardの終了
「Finish」をクリック

⑫再起動の確認
すぐに再起動をする場合は、「Yes」をクリック
※再起動するまでは有効になりません。

3番まででSUAは利用できるようになっています。
これ以降の4番と5番は、SFU/Interixパッケージをインストールする場合に必要になります。

4.ブートストラップインストーラの入手とインストール

この作業をしておくとhttp://www.suacommunity.com/tool_warehouse.aspxからダウンロードしたり以下の手順のようにpkgされたプログラムを追加で導入できるようになります。

①Package Install Instructions for Interix, SFU & SUA (Subsystem for Unix-based Applications)[英語] のサイトから適切なインストーラをダウンロードします。
今回は、Bootstrap Installer (6.0/x86)をダウンロードしました。

②コマンドプロンプトを管理者権限で起動します。
※UACが有効の場合は、System領域への書き込みができません。そのためにコマンドプロンプトを管理者権限で起動してインストールを行います。

③ダウンロードした「pkg-current-bootstrap60.exe」を実行します。
※対話式のインストーラなので途中、入力を求められることがあります。

正常に終了すれば完了です。
※pkg_info,pkg_add,pkg_updateコマンドが使用できるようになります。
以下はpkg_infoを実行した画面です。

5.SFU/Interixパッケージの入手とインストール

以下は用途別に用意されているパッケージセットを導入する方法です。プログラム個別で導入する場合は、Tool Warehouseからダウンロードしてきて導入してください。
※事前にsudoを導入しておけば、コマンドプロンプトを管理者権限で起動しなくても「sudo pkg_update -L パッケージファイル名」で導入可能です。

①「Welcome to our SUA / SFU / Interix Community」のサイトから適切なパッケージをダウンロードします。
種類は以下の4種類です。それぞれx86版とx64版があります。
・PowerUser
・Developer
・System Administrator
・Complete Toolset

今回は、Complete Toolset のSUA/Interix 6.0/6.1 64-bit [Only: Vista, Win7, W2K8 & W2K8/R2]を選択しました。

②コマンドプロンプトを管理者権限で起動します。

③ダウンロードした「pkg-current-bundlecomplete60x64.exe」を実行します。
※対話式のインストーラなので途中、入力を求められることがあります。

正常に終了すれば完了です。
bashが使えるようになっています。

以下はpkg_infoを実行した画面です。

6.捕捉

(1)セキュリティに関して

今回は、管理者権限のあるユーザ名「tomo」で一連の作業を行いました。
UNIXサーバプログラムも導入しましたが、実際に動作するかどうかは不明です。
Administratorで導入する場合
Vista以降はAdministratorアカウントは無効になっていますので、以下の画面で有効にし、パスワードの設定をすればAdministratorでログインし一連の作業が可能です。

ただし、SUAサブシステムへの接続エラーが発生してUNIXベースアプリケーション用サブシステムの導入に失敗するかもしれません。
この失敗したときにはAdministrator名を変更していたのが原因かもしれません。正確な原因は不明です。

スイッチユーザ(su - コマンド)は現在使えていません。
UNIXでいうところのWheelの設定になるものをする必要がありそうです。
フォーラムのこの情報が参考になりそうですが、管理者グループのユーザで導入後に、Administratorアカウントを有効にするとなぜかシェル画面が起動しなくなりました。
そのあとのレジストリ変更は試していませんが・・・
セキュリティ的にこれをすると他にどういう影響がでるのかが不明です。

(2)アンインストールに関して

管理者グループのユーザでインストールした場合、プログラムのアンインストールからアンインストールを実行してもSUAディレクトリは削除できません。
Administratorでログインすれば削除はできました。
ただし、SUAの/tmpディレクトリ以下は、pkgを解凍した一時フォルダへのフルアクセス権限があるのは実行したユーザのみですので、そのユーザでしか削除できません。

安易にコントロールパネルから「UNIXベースアプリケーション用サブシステム」をアンインストールしてもカスが残ってしまうようです。
確実な方法は、インストールした手順と逆の順番で行うことでだと思います。

追加パッケージを導入したのであれば、そのパッケージのアンインストールから始めればよいと思います。

(3)インストール手順に関して

今回は完全インストールを行いましたが、SFU/Interixパッケージも導入するのであれば、UNIXベースアプリケーション用サブシステムは標準インストールでもよさそうに思います。
ただ、x64の場合は、x86とx64のライブラリが導入されるような記載があったので完全インストールにしましたが、SFU/Interixパッケージはプログラムごとに異なるようにも思えその点だけが把握できていません。なので導入方法は二度手間になっているかもしれません。
不要なものを導入することに抵抗のある人は、4番のブートストラップインストーラを導入後は、プログラム個別で導入すればよいと思います。

感想

SUAはC:WindowsSUA以下に導入されています。ここがSUA上ではルート(/)になります。
ユーザのホームディレクトリは、C:USersユーザ名(SUA表記では/dev/fs/C/Users/ユーザ名)になります。
ここにユーザ環境変数を設定するファイル(.cshrcや.profileなど)をおいておけば、それぞれのシェルを起動したときのユーザ個別の環境に変更できます。たとえば$HOMEディレクトリを変更できます。

私の場合は、D:usrユーザ名(SUA表記では、/dev/fs/D/usr/ユーザ名)にしています。

対話型のシェルであるcshは、UNIX管理者(特にSolaris系)で多く利用されているかもしれませんが、完全互換でないようで$変数名:rなどは動作しませんでした。
SUAではbシェル派生のkshを使うほうがおすすめのようですので、bshの拡張版であるbashを導入して使用すればよいと思います。
SUAの用途としては、動画変換用のWindowsバッチの作成に限界を感じて得意なシェルスクリプトが使えるようにと導入したわけですが、cshがいまいちだったので結局、Bシェル派生を使うことになり微妙です。
できれば、コンパイルなどもしたいと思ってはいますが、実際にコンパイルができるのかどうかは不安な環境です。UNIXのサーバプロセスを使用する予定はありませんが、NFSが使えるなら便利そうだなぁと思っている程度です。リモートシェル環境も上に書いたようにWindowsのセキュリティ関連ではまりそうなので時間に余裕があるときにでも試してみようと思いCompleteパッケージを導入しました。
不要なサービスが多数導入されていますが、/etc/inetd.confで無効化されているはずですので影響はないと考えています。
とりあえず、pkgコマンドで導入するように統一して、あとはpkgのデータベースの整合性を正常に保つようにしておけば問題はなさそうに思います。
気になる点は、このインストールによって、リモートデスクトップ接続の画面との間でコピー&ペーストができなくなったように思います。

それぞれWindowsのセキュリティ設定によっては、導入から躓く場合がありそうな感じです。
私の場合は、UACを有効にして管理者グループのユーザで導入しました。
Administratorアカウントは無効のままです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大阪府門真市に生まれ、高校卒業まで京都府福知山市で育ち、大学は工学部電子工学科を卒業。半導体設計会社に勤務ののちインフラエンジニアとして監視基盤の運用設計業務に就く。現在は都内の施設に勤務。横浜在住。人の役に立てることができればいいなと日々思っています。

目次