はじめに
X Windowを利用するのに、CygwinをWindowsにインストールします。
Cygwinのインストールには時間がかかります。
Windows機が増えてインストールし直すのは面倒です。
というわけでCygwinを入れたマスタードライブをNASに保存し、使用するWindowsに複製することでどのWindowsでも使えるようにします。
Windowsにログオンしたときにマウントされるようにします。
マスター+差分ディスクの構成で利用します。
仮想VHD (VHDX)の準備
c:\temp
ディレクトリを使って作業します。
VHDの作成
いつのまにか、Windows 10でコンピューターの管理->ディスクの管理からVHDの作成が使えなくなっています。
コマンドプロンプトから作成します。
C:\Users\(yourname)> mkdir c:\temp
C:\Users\(yourname)> diskpart
DISKPART> create vdisk file="c:\temp\cygwin-x11.vhdx" maximum=16384 type=expandable
100% 完了しました
DiskPart により、仮想ディスク ファイルが正常に作成されました。
アタッチと初期化とフォーマット
アタッチします。
DISKPART> select vdisk file="c:\temp\cygwin-x11.vhdx"
DiskPart により、仮想ディスク ファイルが選択されました。
DISKPART> attach vdisk
100% 完了しました
DiskPart により、仮想ディスク ファイルがアタッチされました。
初期化します。
ディスクを間違わないように二重三重にチェックします。
下記の場合、作成した仮想VHDはディスク3にあたります。
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
----------- -------------- -------- --------- --- ---
ディスク 0 オンライン 500 GB 2048 KB *
ディスク 1 オンライン 500 GB 2048 KB *
ディスク 2 オンライン 500 GB 2048 KB *
* ディスク 3 オンライン 16 GB 16 GB *
DISKPART> clean
DiskPart はディスクを正常にクリーンな状態にしました。
DISKPART> convert gpt
DiskPart は選択されたディスクを GPT フォーマットに正常に変換しました。
DISKPART> create partition primary
DiskPart は指定したパーティションの作成に成功しました。
DISKPART> list partition
Partition ### Type Size Offset
------------- ---------------- -------- -------
Partition 1 予約 15 MB 17 KB
* Partition 2 プライマリ 15 GB 16 MB
フォーマットします。
DISKPART> format fs=ntfs label=cygwin64 quick
100% 完了しました。
DiskPart は、ボリュームのフォーマット を完了しました。
マウントします。
DISKPART> assign letter=n
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。
DISKPART> exit
もしディスクが選択されていない場合、select disk *
、パーティションが選択されていない場合はselect partition *
で選択します。
参考資料
仮想ディスクをコマンドラインから作成・管理する(www.atmarkit.co.jp)
Q.【HDD】GPT形式でハードディスクをフォーマットしたい (コマンドプロンプト版)(qa.elecom.co.jp)
エレコムがコマンドプロンプトでFAQを作成していることに驚きです。
Cygwinのインストール
参考資料のURL先を見ながらインストールします。
インストーラー
https://cygwin.com/setup-x86_64.exe
Root Directory
-> N:\
Local Package Directory
-> C:\Users\(yourname)\Downloads
Category -> X11をインストール
Net -> OpenSSHをインストール
(openssh: The OpenSSH server and client programs)
30分くらい待つ
参考資料
3.3 CygwinによるX Window利用(itcweb.cc.affrc.go.jp)
起動のための準備
起動スクリプトの作成
N:\Cygwin.batを修正します。
@echo off
N:
chdir N:\\bin
bash --login -i
バックアップをとって、以下の内容へ修正します。
@echo off
%~d0
set PATH=%SystemRoot%\system32
set cygdrive=%~d0
set cygdir=%~dp0
cd %~dp0\bin
set MAKE_MODE=unix
set CYGWIN=noacl nontsec nosmbntsec
set SHELL=/bin/bash
sh.exe -c "/usr/bin/mintty - &"
exit
単にcygwinを起動するときはこのbatから起動します。
注意!!! ここでこのBAT起動すると、現在のWindowsのユーザーで、N:\homeにユーザーディレクトリが作成されてしまうので実行しません。
X Launchのショートカット作成
N:\にN:\bin\run.exeのショートカットを作成します。
ショートカットが作成できたら、リンク先を以下に変えます。
%windir%\system32\cmd.exe /c start "%cd%" "bin\run.exe" /usr/bin/bash.exe -l -c /usr/bin/xlaunch.exe
作業フォルダは空白にします。
以上でCygwinの準備は終わりです。
DISKPART> select vdisk file=c:\temp\cygwin-x11.vhdx
DISKPART> detach vdisk
DiskPart によって、仮想ディスク ファイルがデタッチされました。
DISKPART> exit
NASの準備
共有フォルダに仮想VHDXをコピーします。
ここでは、\\NAS\cygwin\
ディレクトリに、cygwin-x11.vhdx
を保存したものとします。
コピーツールの作成
以下の2つのファイルを作成します。
openfiles /local > NUL 2>&1
if NOT %ERRORLEVEL% EQU 0 goto NotAdmin
REM cygwin-x11コピーツール
REM ディレクトリの作成
mkdir c:\cygwin
REM cygwin-x11.vhdxのダウンロード
REM IGP:200で40/100(MBps)程度の制限になります。15分程度かかります。
robocopy /IPG:200 "\\NAS\cygwin" "c:\cygwin" cygwin-x11.vhdx
REM 差分ディスク c:\cygwin\cygwin-diff.vhdxの作成
diskpart -s \\nas\cygwin\makediffdisk.txt
REM 自動マウント用スクリプトの作成
echo select vdisk file=c:\cygwin\cygwin-diff.vhdx > c:\cygwin\diskpart-cygwin-x11-diff-select-attach.txt
echo attach vdisk >> c:\cygwin\diskpart-cygwin-x11-diff-select-attach.txt
echo diskpart -s c:\cygwin\diskpart-cygwin-x11-diff-select-attach.txt > c:\cygwin\automount_cygwin.bat
REM 自動マウント用のスクリプトでマウントする
c:\cygwin\automount_cygwin.bat
REM タスクスケジューラの登録
schtasks /Create /RU SYSTEM /SC ONLOGON /TN automount_cygwin_x11 /TR "c:\cygwin\automount_cygwin.bat"
goto End
:NotAdmin
echo 管理者権限で実行してください。
pause
:End
管理者権限で実行するのはタスクスケジューラに登録するためです。
UTF-8で作成するときは先頭にchcp 65001
を入れてください。ただしchcpをUTF-8に変えた状態でパスに2バイト文字が入った場合の動作確認はしていません。
create vdisk file="c:\cygwin\cygwin-diff.vhdx" parent="c:\cygwin\cygwin-x11.vhdx"
コピーの実行
\\nas\cygwin
には、以下の3つのファイルがあると思います。
cygwin-copy.bat
cygwin-x11.vhdx
makediffdisk.txt
NASのコピーBATを管理者権限で実行します。
\\nas\cygwin\cygwin-copy.bat
完了すると、c:\cygwinには、以下の4つのファイルが出来上がり、cygwinがインストールされたNドライブがマウントされます。
automount_cygwin.bat
cygwin-diff.vhdx
cygwin-x11.vhdx
diskpart-cygwin-x11-diff-select-attach.txt
以上で終了です。
1年くらい前にやった内容の焼き直しです。
Windowsで相対パスを書く上で、コマンドプロンプトで使える変数にたどり着くまですごい時間がかかった記憶があります。