1. Building
Requirements
- Windows Vista x64, Windows Server 2008 R2 x64, or Windows 7 x64. (Windows XP and previous versions are not supported. 32-bit builds have not been tested.)
- Microsoft Visual Studio 2010
- Windows Driver Development Kit (WinDDK 6000 or later)
- ms-nfs41-client source code:
> git clone git://citi.umich.edu/projects/ms-nfs41-client.git
Building the rpc library and nfs client daemon
- WinDDK does not include the ldap library, so we build the rpc library and nfs client daemon with Visual Studio 2010.
- Open Windows Explorer and navigate to ms-nfs41-client\build.vc10.
- Make a copy of env.props.example, and rename it to env.props.
- Open env.props in a text editor, and verify that the value in
<WDKPATH>C:\WinDDK\7600.16385.0</WDKPATH>points to your WinDDK installation. - Open the solution file ms-nfs41-client.sln in Visual Studio 2010.
- Select the Debug configuration and x64 platform (accessible via Build->Configuration Manager).
- Right-click on the daemon project and select Build. The project and its dependencies should build without errors. The resulting binaries, nfsd.exe and libtirpc.dll, can be found under ms-nfs41-client\build.vc10\x64\Debug\.
Building the driver and utilities
- From the Start menu, open the WinDDK 'x64 Checked Build Environment' for the target platform.
- Change directory to ms-nfs41-client and type
build. All projects should build without errors.
2. Installation
Requirements
- ms-nfs41-client binaries: nfs41_driver.sys, nfs41_np.dll, libtirpc.dll, nfs_install.exe, nfsd.exe, nfs_mount.exe
- ms-nfs41-client configuration files: nfs41rdr.inf, install.bat, uninstall.bat, etc_netconfig, ms-nfs41-idmap.conf
Instructions
- Copy or extract all ms-nfs41-client binaries and configuration files into a directory that's convenient for testing.
- Open a WinDDK 'x64 Checked Build Environment' as Administrator in this directory (right click and 'Run as administrator').
- Create a certificate for test-signing the driver (Creating Test Certificates):
> makecert /pe /ss PrivateCertStore /n CN=nfs41_test nfs41_test.cer - Use the certificate to sign nfs41_driver.sys (Test-Signing a Driver File):
> signtool sign /v /s PrivateCertStore /n nfs41_test /t http://timestamp.verisign.com/scripts/timestamp.dll nfs41_driver.sys - Install the certificate to the 'Trusted Root Certificate Authorities' store:
> certmgr /add /c nfs41_test.cer /s /r localMachine root - Install the driver and update the registry:
> install.bat - Copy configuration files:
> mkdir C:\etc> copy etc_netconfig C:\etc\netconfig> copy ms-nfs41-idmap.conf C:\etc\ - Allow windows to load test-signed drivers:
> bcdedit /set testsigning on - Reboot.
3. Ldap Configuration
Requirements:
- C:\etc\ms-nfs41-idmap.conf from Installation step 7.
Instructions
- Open C:\etc\ms-nfs41-idmap.conf in a text editor.
- Uncomment the
ldap_hostnameandldap_baselines, and configure as appropriate to match your ldap server configuration (we'll add suggestions later).
4. Starting the Client
Instructions
- From a Windows command prompt, run nfsd.exe to start the nfs client daemon. Leave this running in the background until all mapped drives are unmounted.
Usage:> nfsd.exe -d <debug level> [--noldap] <debug level>determines the log verbosity (1, 2, 3 or 0 to disable)--noldapdisables id mapping and uses a default uid=666 and gid=777
5. Mounting
Instructions
- From a Windows command prompt run nfs_mount.exe to mount a share:
> nfs_mount.exe Z: <server_name>:\ - To specify the security flavor, add the 'sec=' mount option with sys, krb5, krb5i, or krb5p:
> nfs_mount.exe -o sec=<flavor> Z: <server_name>:\ - You can later unmount with:
> nfs_mount.exe -d Z
6. Connectathon
Requirements
- Cygwin, including packages gcc-core, make, time, tirpc, git
- Connectathon Test Suite
- ms-nfs41-client source code (patches for connectathon are located in ms-nfs41-client\tests)
Instructions
- Extract nfstests.zip into a directory that's convenient for testing (i.e. cthon04).
- Open a Cygwin shell, and change directory to cthon04.
- Create a git repository to track changes:
> git init> git add *> git commit -m "files from nfstests.zip" - Apply all cthon patches:
> git am /path/to/ms-nfs41-client/tests/*.patch - Build the tests:
> make - Run the test suite on a mounted directory:
> ./runtests -a -t z:/testdir
7. Known Issues
- AUTH_SYS does not handle multiple users, so all operations are sent as the user that established the mount.
- krb5p security has only been tested with DES, as the linux server does not support gss krb5 v2 tokens with rotated date.
- When recovering opens and locks outside of the server's grace period, client does not check whether the file has been modified by another client.
- When nfs_mount.exe is run without arguments, it does not properly list mounted drives.
- If nfsd.exe is restarted while a drive is mapped, that drive needs to be remounted before further use.
- Symbolic links are not supported in Cygwin. Connectathon's basic test8 and special test nfsidem have been commented out.
- Does not properly handle renaming a file on top of an existing open file- the existing file is removed on rename, and not preserved until last close. Connectathon's special test op_ren has been commented out.
Please direct any questions to msv4-devel@citi.umich.edu.