2010-10-11 14:59:26 -04:00
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" / >
< title > Windows NFS 4.1 Client Instructions< / title >
< link rel = "stylesheet" title = "CITI Default" href = "http://www.citi.umich.edu/format/citi.css" type = "text/css" / >
< link rel = "icon" href = "http://www.citi.umich.edu/images/citilogo-16x16.png" type = "image/png" / >
< link rel = "shortcut icon" href = "http://www.citi.umich.edu/images/citilogo-16x16.png" type = "image/png" / >
< style type = "text/css" >
/*< ![CDATA[*/
body { min-width: 600px; background-color: #DDDDFF; font-family: serif; }
#page { padding: 0 12px 0 12px; }
#content { margin: 12px 0 12px 0; padding: 8px; background-color: #FFFFFF; border: 1px solid #88A; }
#index { padding-right: 12px; float: right; background-color: #FFFFFF; border: 1px solid #88A; }
a { color: #0282b4; }
a:hover { color: #0244b4; }
h1 { font-size: 2em; text-align: center; background: none; }
h2 { margin: 24px 0 8px 0; font-variant: small-caps; border-bottom: 1px dashed #88A; }
h3 { margin-left: 8px; }
/*]]>*/
< / style >
< / head >
< body >
< div id = "page" >
< h1 > Windows NFS 4.1 Client Instructions< / h1 >
< div id = "content" >
< div id = "index" >
< ol >
< li > < a href = "#build" > Building< / a > < / li >
< li > < a href = "#install" > Installation< / a > < / li >
2010-12-10 13:48:32 -05:00
< li > < a href = "#ldap" > Ldap Configuration< / a > < / li >
< li > < a href = "#startup" > Starting the Client< / a > < / li >
2010-10-11 14:59:26 -04:00
< li > < a href = "#mount" > Mounting< / a > < / li >
< li > < a href = "#cthon" > Connectation< / a > < / li >
< li > < a href = "#issues" > Known Issues< / a > < / li >
< / ol >
< / div >
< h2 > 1. < a name = "build" > Building< / a > < / h2 >
< h3 > Requirements< / h3 >
< ul >
2010-10-13 16:22:37 -04:00
< li > 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.)< / li >
2010-12-10 12:14:35 -05:00
< li > Microsoft Visual Studio 2010< / li >
2010-12-10 13:48:32 -05:00
< li > Windows Driver Development Kit (WinDDK 6000 or later)< / li >
2010-10-20 14:54:14 -04:00
< li > ms-nfs41-client source code:
< br / > < code > > git clone git://citi.umich.edu/projects/ms-nfs41-client.git< / code > < / li >
2010-10-11 14:59:26 -04:00
< / ul >
2010-12-10 13:48:32 -05:00
< h3 > Building the rpc library and nfs client daemon< / h3 >
< ul > < li > WinDDK does not include the ldap library, so we build the rpc library and nfs client daemon with Visual Studio 2010.< / li > < / ul >
2010-12-10 12:14:35 -05:00
< ol >
< li > Open Windows Explorer and navigate to < strong > ms-nfs41-client\build.vc10< / strong > .< / li >
< li > Make a copy of < strong > env.props.example< / strong > , and rename it to < strong > env.props< / strong > .
< li > Open < strong > env.props< / strong > in a text editor, and verify that the value in < code > < WDKPATH> C:\WinDDK\7600.16385.0< /WDKPATH> < / code > points to your WinDDK installation.< / li >
< li > Open the solution file < strong > ms-nfs41-client.sln< / strong > in Visual Studio 2010.< / li >
2010-12-10 13:48:32 -05:00
< li > Select the Debug configuration and x64 platform (accessible via Build->Configuration Manager).< / li >
< li > Right-click on the < strong > daemon< / strong > project and select Build. The project and its dependencies should build without errors. The resulting binaries, < strong > nfsd.exe< / strong > and < strong > libtirpc.dll< / strong > , can be found under < strong > ms-nfs41-client\build.vc10\x64\Debug\< / strong > .< / li >
2010-12-10 12:14:35 -05:00
< / ol >
2010-12-10 13:48:32 -05:00
< h3 > Building the driver and utilities< / h3 >
2010-10-11 14:59:26 -04:00
< ol >
2010-10-20 14:54:14 -04:00
< li > From the Start menu, open the WinDDK 'x64 Checked Build Environment' for the target platform.< / li >
2010-12-10 13:48:32 -05:00
< li > Change directory to < strong > ms-nfs41-client< / strong > and type < code > build< / code > . All projects should build without errors.< / li >
2010-10-11 14:59:26 -04:00
< / ol >
< h2 > 2. < a name = "install" > Installation< / a > < / h2 >
< h3 > Requirements< / h3 >
< ul >
2010-10-20 14:54:14 -04:00
< li > ms-nfs41-client binaries: < strong > nfs41_driver.sys< / strong > , < strong > nfs41_np.dll< / strong > , < strong > libtirpc.dll< / strong > , < strong > nfs_install.exe< / strong > , < strong > nfsd.exe< / strong > , < strong > nfs_mount.exe< / strong > < / li >
2010-12-10 13:48:32 -05:00
< li > ms-nfs41-client configuration files: < strong > nfs41rdr.inf< / strong > , < strong > install.bat< / strong > , < strong > uninstall.bat< / strong > , < strong > etc_netconfig< / strong > , < strong > ms-nfs41-idmap.conf< / strong > < / li >
2010-10-11 14:59:26 -04:00
< / ul >
< h3 > Instructions< / h3 >
< ol >
< li > Copy or extract all ms-nfs41-client binaries and configuration files into a directory that's convenient for testing.< / li >
2010-10-13 16:22:37 -04:00
< li > Open a WinDDK 'x64 Checked Build Environment' as Administrator in this directory (right click and 'Run as administrator').< / li >
< li > Create a certificate for test-signing the driver (< a href = "http://msdn.microsoft.com/en-us/library/ff540213%28VS.85%29.aspx" title = "msdn.microsoft.com" > Creating Test Certificates< / a > ):
2010-10-20 14:54:14 -04:00
< br / > < code > > makecert /pe /ss PrivateCertStore /n CN=nfs41_test nfs41_test.cer< / code > < / li >
< li > Use the certificate to sign < strong > nfs41_driver.sys< / strong > (< a href = "http://msdn.microsoft.com/en-us/library/ff553467%28VS.85%29.aspx" title = "msdn.microsoft.com" > Test-Signing a Driver File< / a > ):
< br / > < code > > signtool sign /v /s PrivateCertStore /n nfs41_test /t http://timestamp.verisign.com/scripts/timestamp.dll nfs41_driver.sys< / code > < / li >
2010-10-13 16:22:37 -04:00
< li > Install the certificate to the 'Trusted Root Certificate Authorities' store:
2010-10-20 14:54:14 -04:00
< br / > < code > > certmgr /add /c nfs41_test.cer /s /r localMachine root< / code > < / li >
2010-10-11 14:59:26 -04:00
< li > Install the driver and update the registry:
2010-10-20 14:54:14 -04:00
< br / > < code > > install.bat< / code > < / li >
2010-12-10 13:48:32 -05:00
< li > Copy configuration files:
2010-10-20 14:54:14 -04:00
< br / > < code > > mkdir C:\etc< / code >
2010-12-10 13:48:32 -05:00
< br / > < code > > copy etc_netconfig C:\etc\netconfig< / code >
< br / > < code > > copy ms-nfs41-idmap.conf C:\etc\< / code > < / li >
2010-10-11 14:59:26 -04:00
< li > Allow windows to load test-signed drivers:
2010-10-20 14:54:14 -04:00
< br / > < code > > bcdedit /set testsigning on< / code > < / li >
2010-10-11 14:59:26 -04:00
< li > Reboot.< / li >
< / ol >
2010-12-10 13:48:32 -05:00
< h2 > 3. < a name = "ldap" > Ldap Configuration< / a > < / h2 >
< h3 > Requirements:< / h3 >
< ul >
< li > < strong > C:\etc\ms-nfs41-idmap.conf< / strong > from < a href = "#install" > Installation< / a > step 7.< / li >
< / ul >
< h3 > Instructions< / h3 >
< ol >
< li > Open < strong > C:\etc\ms-nfs41-idmap.conf< / strong > in a text editor.< / li >
< li > Uncomment the < code > ldap_hostname< / code > and < code > ldap_base< / code > lines, and configure as appropriate to match your ldap server configuration (we'll add suggestions later).< / li >
< / ol >
< h2 > 4. < a name = "startup" > Starting the Client< / a > < / h2 >
< h3 > Instructions< / h3 >
< ol >
< li > From a Windows command prompt, run < strong > nfsd.exe< / strong > to start the nfs client daemon. Leave this running in the background until all mapped drives are unmounted.
< br / > Usage:
< br / > < code > > nfsd.exe -d < debug level> [--noldap]< / code > < / li >
< ul >
< li > < code > < debug level> < / code > determines the log verbosity (1, 2, 3 or 0 to disable)< / li >
< li > < code > --noldap< / code > disables id mapping and uses a default uid=666 and gid=777< / li >
< / ul >
< / ol >
< h2 > 5. < a name = "mount" > Mounting< / a > < / h2 >
2010-10-11 14:59:26 -04:00
< h3 > Instructions< / h3 >
< ol >
2010-12-10 13:48:32 -05:00
< li > From a Windows command prompt run < strong > nfs_mount.exe< / strong > to mount a share:
< br / > < code > > nfs_mount.exe Z: < server_name> :\< / code > < / li >
2011-02-03 15:09:05 -05:00
< li > To specify the security flavor, add the 'sec=' mount option with sys, krb5, krb5i, or krb5p:
< br / > < code > > nfs_mount.exe -o sec=< flavor> Z: < server_name> :\< / code > < / li >
2010-10-11 14:59:26 -04:00
< li > You can later unmount with:
2010-10-20 14:54:14 -04:00
< br / > < code > > nfs_mount.exe -d Z< / code > < / li >
2010-10-11 14:59:26 -04:00
< / ol >
2010-12-10 13:48:32 -05:00
< h2 > 6. < a name = "cthon" > Connectathon< / a > < / h2 >
2010-10-11 14:59:26 -04:00
< h3 > Requirements< / h3 >
< ul >
2010-10-13 16:22:37 -04:00
< li > < a href = "http://www.cygwin.com" title = "www.cygwin.com" > Cygwin< / a > , including packages gcc-core, make, time, tirpc, git< / li >
< li > < a href = "http://www.connectathon.org/nfstests.html" title = "www.connectathon.org" > Connectathon Test Suite< / a > < / li >
2010-10-20 14:54:14 -04:00
< li > ms-nfs41-client source code (patches for connectathon are located in < strong > ms-nfs41-client\tests< / strong > )< / li >
2010-10-11 14:59:26 -04:00
< / ul >
< h3 > Instructions< / h3 >
< ol >
2010-10-20 14:54:14 -04:00
< li > Extract < strong > nfstests.zip< / strong > into a directory that's convenient for testing (i.e. < strong > cthon04< / strong > ).< / li >
< li > Open a Cygwin shell, and change directory to < strong > cthon04< / strong > .< / li >
2010-10-13 16:22:37 -04:00
< li > Create a git repository to track changes:
2010-10-20 14:54:14 -04:00
< br / > < code > > git init< / code >
< br / > < code > > git add *< / code >
< br / > < code > > git commit -m "files from nfstests.zip"< / code > < / li >
2010-10-13 16:22:37 -04:00
< li > Apply all cthon patches:
2010-10-20 14:54:14 -04:00
< br / > < code > > git am /path/to/ms-nfs41-client/tests/*.patch< / code > < / li >
2010-10-13 16:22:37 -04:00
< li > Build the tests:
2010-10-20 14:54:14 -04:00
< br / > < code > > make< / code > < / li >
2010-10-11 14:59:26 -04:00
< li > Run the test suite on a mounted directory:
2010-10-20 14:54:14 -04:00
< br / > < code > > ./runtests -a -t z:/testdir< / code > < / li >
2010-10-11 14:59:26 -04:00
< / ol >
2010-12-10 13:48:32 -05:00
< h2 > 7. < a name = "issues" > Known Issues< / a > < / h2 >
2010-10-11 14:59:26 -04:00
< ul >
2010-12-10 13:48:32 -05:00
< li > AUTH_SYS does not handle multiple users, so all operations are sent as the user that established the mount.< / li >
2011-02-03 15:25:23 -05:00
< li > krb5p security has only been tested with DES, as the linux server does not support gss krb5 v2 tokens with rotated data.< / li >
2010-12-10 13:48:32 -05:00
< li > 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.< / li >
2010-10-11 14:59:26 -04:00
< li > When nfs_mount.exe is run without arguments, it does not properly list mounted drives.< / li >
< li > If nfsd.exe is restarted while a drive is mapped, that drive needs to be remounted before further use.< / li >
2010-10-13 16:22:37 -04:00
< li > Symbolic links are not supported in Cygwin. Connectathon's basic test8 and special test nfsidem have been commented out.< / li >
< li > 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.< / li >
2010-10-11 14:59:26 -04:00
< / ul >
2011-02-03 15:09:05 -05:00
< p > Please direct any questions to < a href = "mailto:msv4-devel@citi.umich.edu" > msv4-devel@citi.umich.edu< / a > .< / p >
2010-10-11 14:59:26 -04:00
< / div >
< / div >
< / body >
< / html >