Cygwinの/usr等をネットワーク共有に置く
WindowsでLinux/UNIXライクな環境を提供するCygwin、これをフルインストールするとすごく大きな容量になってします。いまどきHDDはテラバイト級だろというかもしれませんが、SSDだとまだまだ高くて容量少ないし、ほとんど使わないものでSSDの肥やしにしたくないものです。ということで、SSDしかつんでないPCにCygwinをフルインストールするのはあまりやりたくありません。かといって、いざパッケージを絞ろうにもどれを入れたらいいのかを迷うのも人間で、やはり全部入れておきたいと思うのです。
そこで、Cygwinの/usr等にあるバイナリデータを全部、NASなどのネットワーク共有置いてしまおうというのが今回の目的です。
環境と要件
- Windows 8.1 Pro 64bit (たぶん、他でもできるとは思う)
- ローカルはCドライブのみ (SSD)
- Cygwin x86_64 (たぶん、32bit版でもできると思う)
- フルインストール
-
/usr
と/lib
を下記のNASに置く (/bin
とかはたぶん無理だと思う)
- NAS
- TreaStation (たぶん、どんなNASと思う)
- Cygwin用領域として
\\fs.example.jp\share\data\cygwin
を用意- PCからフルアクセスできること
- ユーザー名とパスワードは聞かれないこと (資格情報を保存するなどする)
- ネットワークドライブとして割り当てないこと
- ローカルイントラネットとして認識されること
- オフラインフォルダ無効
- 前提知識
- 「ローカルイントラネット」がどういう物でどういう設定すればわかるぐらいのWindowsについての知識
どういうことかというと、PC利用者にはCygwinが実はネットワーク共有にあるなんてことはわかるようにしたくないと言うことです。ですので、Z:ドライブに割り当てとかは禁止です。
インストール
共有は既にあることが前提です。PCには管理者権限があるユーザでログオンします。
-
\\fs.example.jp\share\data\cygwin
にsetup
フォルダを用意します。 -
Cygwinから
setup-x86_64.exe
をダウンロードして、\\fs.example.jp\share\data\cygwin\setup
に置きます。 -
setup-x86_64.exe
を実行します。「ユーザー アカウント制御」は「はい」を答えます。ここで「セキュリティの警告」が最初に表示される場合はローカルイントラネットとして認識されてません。インターネットオプションでローカルイントラネットに含めるよう設定してください。- 「次へ」
- 「Install from Internet」を選んで「次へ」。
- 「Root Directory」はデフォルトの「C:\cygwin64」、「Install for」は「All Users (RECOMMENDED)」を選んで「次へ」。
- 「Local Package Directory」が「\\fs.example.jp\share\data\cygwin\setup」になっていることを確認して「次へ」。
- 環境に合わせてプロキシ設定を変えて「次へ」。
- jpドメインのミラーを選んで「次へ」。ftpの方がちょっと速いですがプロキシ環境ではうまくいかない場合もあるので注意してください。北海道・東北のSINET傘下は山形大学(ftp.yz.yamagata-u.ac.jp)、その他のSINET傘下は北陸先端科学技術大学院大学(ftp.jaist.ac.jp)、SINET傘下以外はIIJ(ftp.iij.ad.jp)が速いと思います。
- 一覧が表示されますが、Allが「Default」のまま「次へ」。はじめは最低限のパッケージだけ入れます。
- 依存関係は「Selecte required packages (RECOMMENDED」が有効であることを確認して、「次へ」。
- アイコン作成はお好みで「完了」。
- 一度Cygwinが正常に起動できることを確認します。起動できれば、
exit
で終了します。 -
C:\cygwin64
にあるusr
とlib
を\\fs.example.jp\share\data\cygwin
に 移動 します。 -
コマンドプロンプトを「管理者として実行」し、下記コマンドを実行します。
C:\Windows\system32>cd C:\cygwin64 C:\cygwin64>mklink /d usr \\fs.example.jp\share\data\cygwin\usr usr <<===>> \\fs.example.jp\share\data\cygwin\usr のシンボリック リンクが作成されました C:\cygwin64>mklink /d lib \\ fs.example.jp\share\data\cygwin\lib lib <<===>> \\fs.example.jp\share\data\cygwin\lib のシンボリック リンクが作成されました
-
C:\cigwin64\etc\fstab
をLFのみ改行に対応したテキストエディタ(メモ帳不可)で開いて、下記行を末尾に追加します。//fs.example.jp/share/data/cygwin/usr /usr smbfs binary 0 0 //fs.example.jp/share/data/cygwin/lib /usr/lib smbfs binary 0 0 /usr/lib /lib none bind
一度Cygwinが正常に起動できることを確認します。
ls
やmount
で正常に動作することを確認します。正常に動作していれば、exit
で終了します。再度
setup-x86_64.exe
を実行し、パッケージはAllで「Instnall」を選んで、フルインストールを行います。ただし、フルインストールはかなりの時間がかかるので、適当なパッケージを一つ入れて正常動作を確認することを推奨します。最後にCygwinを起動し、動作確認を行って終了です。
解説
ネットワーク共有にシンボリックリンクを貼っただけでは動作しません。シンボリックリンクがUNC接続であるため、Cygwin上の各コマンドが失敗します。そこでfstab
も一緒に設定することで対応します。シンボリックリンクを張るのはインストーラ等Cygwin外のアプリケーションとの整合性を保つためです。
/lib
は特殊でデフォルトで/usr/lib
にマウントされています。/usr/lib
のみだと整合性がなくなるので、bind
なマウントも記述する必要があります。
fstab
の詳細はCygwinのマニュアルを参考にしてください。
NASやネットワークによりますが、ローカルに比べると各コマンドの起動速度はかなり遅いです。これはどうしようも無いです。
以上になりますが、一切無保証ですので、本番環境での実施は十分な検証をしてからにしてください。
Author And Source
この問題について(Cygwinの/usr等をネットワーク共有に置く), 我々は、より多くの情報をここで見つけました https://qiita.com/raccy/items/e130ab842d4198374c89著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .