Cygwin 1.7 をインストールしたら home が変な場所になった話

Cygwin 1.7 をインストールして、Cygwin Bash Shell を起動したら次のようなエラーが表示されて困ってしまった。

mkdir: cannot create directory `/home': Not a directory
/home/my_account could not be created.
Setting HOME to /tmp.

管理者アカウントで Cygwin Bash Shell を起動したら上記のエラーは出なくなったが、/homeC:\cygwin\home ではなくどこか別の場所にリダイレクトされていた。

リダイレクトの正体は fstab

少し調べてみると、Cygwin 1.7 からは /etc/fstab にマウント情報が記載されるようになったらしい。

Mount points are no longer stored in the registry. Use /etc/fstab and /etc/fstab.d/$USER instead.

1.7 からはマウント ポイントがレジストリに記録されなくなりました。その代わりに、/etc/fstab/etc/fstab.d/$USER を利用します。

What's new and what changed in Cygwin 1.7

実際、C:\cygwin\etc\fstab を見てみると次のような記載があった。

C:/Users/foo/AppData/Roaming/Microsoft /home some_fs binary 0 0

setup.exe と過去インストールした別ユーザーの存在

なぜか別のユーザー foo さんの AppData の下にリダイレクトされているようだ。

どうやら、1.5 の設定を引き継ぐために setup.exe がレジストリから読み取っているようだ。

When you upgrade an existing older Cygwin installation to Cygwin 1.7, your old system mount points (stored in the HKEY_LOCAL_MACHINE branch of your registry) are read by a script and the /etc/fstab file is generated from these entries.

過去のバージョン から 1.7 にアップグレードすると、過去のマウントポイントの情報(レジストリの HKEY_LOCAL_MACHINE に記録されています)がスクリプトによって読み出され、これらの情報を元に /etc/fstab ファイルが生成されます。

Chapter 3. Using Cygwin

なるほど!と思ってレジストリを見てみると、HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/home キーの native に問題の設定があった。どうやら、foo さんが以前、この端末で過去の Cygwin をインストールしたときの設定が残っていたようだ。

そして...

改めてレジストリを削除したあとで新規インストールしたらうまく行った。新規インストールと同等になったので、/etc/fstab はコメントだけになっていた。とほほ。