Skip to content
NFSv4.1 Client for Windows
Branch: master
Clone or download
Casey Bodley and cbodley installer: NSIS scripts for x86 and x64
created two separate installers to avoid embedding both versions of vcredist.exe and certmgr.exe.  to create an installer, first place all of the required files in the installer.x* directory, then compile the .nsi script with NSIS from http://nsis.sourceforge.net/

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
Latest commit 8beacd4 Mar 19, 2012
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
build.vc10 vc10: compile nfs_mount as unicode Jul 9, 2013
daemon
dll license changed to LGPL: added COPYING file, changed source file comm… Mar 19, 2012
install
installer.x64 installer: NSIS scripts for x86 and x64 Jul 9, 2013
installer.x86 installer: NSIS scripts for x86 and x64 Jul 9, 2013
libtirpc
mount [mount] adding timeout to usage Mar 19, 2012
sys [driver] fixing invalida_cache srv_open list traverse Jun 11, 2012
tests test: nfs_ea to create, list, set, and query file EAs May 3, 2012
COPYING license changed to LGPL: added COPYING file, changed source file comm… Mar 19, 2012
README.html readme: added installation step for DisableDFS May 8, 2012
dirs
etc_netconfig adding etc_netconfig to root directory Jan 20, 2012
install.bat fresh git tree for public release Oct 12, 2010
ms-nfs41-idmap.conf idmap.c for ldap caching and configuration Nov 8, 2010
nfs41rdr.inf fresh git tree for public release Oct 12, 2010
uninstall.bat fresh git tree for public release Oct 12, 2010

README.html

<!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 from Source</a></li>
    <li><a href="#install">Installing Binaries</a></li>
    <li><a href="#dfs">Disable the DFS Client</a></li>
    <li><a href="#ldap">Ldap Configuration</a></li>
    <li><a href="#startup">Starting the Client</a></li>
    <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 from Source</a></h2>
<h3>Requirements</h3>
<ul>
    <li>Windows Vista, Windows Server 2008 R2, or Windows 7 (Windows XP and previous versions are not supported)</li>
    <li>Microsoft Visual Studio 2010</li>
    <li>Windows Driver Development Kit (WinDDK 6000 or later)</li>
    <li>ms-nfs41-client source code:
    <br/><code>&gt; git clone git://citi.umich.edu/projects/ms-nfs41-client.git</code></li>
</ul>
<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>
<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>
    <li>Open <strong>env.props</strong> in a text editor, and verify that the value in <code>&lt;WDKPATH&gt;C:\WinDDK\7600.16385.0&lt;/WDKPATH&gt;</code> points to your WinDDK installation.</li>
    <li>Open the solution file <strong>ms-nfs41-client.sln</strong> in Visual Studio 2010.</li>
    <li>Select the desired configuration and 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>
</ol>
<h3>Building the driver and utilities</h3>
<ol>
    <li>From the Start menu, open the WinDDK 'Checked Build Environment' for the target platform.</li>
    <li>Change directory to <strong>ms-nfs41-client</strong> and type <code>build</code>. All projects should build without errors.</li>
</ol>
<h3>Signing the driver</h3>
<ol>
    <li>Open a WinDDK '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>):
    <br/><code>&gt; makecert /pe /ss PrivateCertStore /n CN=nfs41_driver nfs41_driver.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>&gt; signtool sign /v /s PrivateCertStore /n nfs41_driver /t http://timestamp.verisign.com/scripts/timestamp.dll path\to\nfs41_driver.sys</code></li>
</ol>
<h2>2. <a name="install">Installing Binaries</a></h2>
<h3>Requirements</h3>
<ul>
    <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>
    <li>ms-nfs41-client configuration files: <strong>nfs41_driver.cer</strong>, <strong>nfs41rdr.inf</strong>, <strong>install.bat</strong>, <strong>uninstall.bat</strong>, <strong>etc_netconfig</strong>, <strong>ms-nfs41-idmap.conf</strong></li>
    <li>Microsoft Visual Studio 2010, or Microsoft Visual C++ 2010 Redistributable Libraries (<a href="https://www.microsoft.com/download/en/details.aspx?id=8328">x86</a> or <a href="https://www.microsoft.com/download/en/details.aspx?id=13523">x64</a>). An installer for the redistributable libraries are included with binary releases.</li>
</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>
    <li>Run <strong>vcredist_x*.exe</strong> to install the Visual C++ Redistributable Libraries.</li>
    <li>Double-click on <strong>nfs41_driver.cer</strong> and select 'Install Certificate', then place it in the 'Trusted Root Certificate Authorities' store.</li>
    <li>Open a command prompt as Administrator in this directory.</li>
    <li>Install the driver and update the registry:
    <br/><code>&gt; install.bat</code></li>
    <li>Copy configuration files:
    <br/><code>&gt; mkdir C:\etc</code>
    <br/><code>&gt; copy etc_netconfig C:\etc\netconfig</code>
    <br/><code>&gt; copy ms-nfs41-idmap.conf C:\etc\</code></li>
    <li>Allow windows to load test-signed drivers:
    <br/><code>&gt; bcdedit /set testsigning on</code></li>
    <li>Reboot.</li>
</ol>
<h2>3. <a name="dfs">Disable the DFS Client</a></h2>
<ul>
  <li>The Windows DFS client interferes with some requests, indicated by long delays during operation. See <a href="http://support.microsoft.com/kb/171386">http://support.microsoft.com/kb/171386</a> for more information.</li>
</ul>
<h3>Instructions</h3>
<ol>
    <li>Open <strong>regedit.exe</strong> and navigate to <code>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Mup</code>.</li>
    <li>Add a DWORD value named <code>DisableDfs</code> with a value of 1.</li>
</ol>
<h2>4. <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>5. <a name="startup">Starting the Client</a></h2>
<ul>
    <li>If you've installed the binary distribution, you'll find two versions of the nfs client daemon: <strong>nfsd.exe</strong> and <strong>nfsd_debug.exe</strong>. <strong>nfsd.exe</strong> is built to run as a service, and does not provide easy access to debug output. We strongly recommend trying <strong>nfsd_debug.exe</strong> first (using the Instructions below) to verify that you can start the daemon and mount/unmount an nfs share. You can then close <strong>nfsd_debug.exe</strong> and start running <strong>nfsd.exe</strong> as a service with:<br /><code>&gt nfsd.exe -install</code>.</li>
</ul>
<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>&gt; nfsd.exe -d &lt;debug level&gt; [--noldap]</code>
    <ul>
        <li><code>&lt;debug level&gt;</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>
        <li><code>--uid, --gid</code> changes the default uid/gid when no mapping is available (must be nonzero)</li>
    </ul></li>
</ol>
<h2>6. <a name="mount">Mounting</a></h2>
<h3>Instructions</h3>
<ol>
    <li>From a Windows command prompt run <strong>nfs_mount.exe</strong> to mount a share:
    <br/><code>&gt; nfs_mount.exe Z: &lt;server_name&gt;:\</code></li>
    <li>To specify the security flavor, add the 'sec=' mount option with sys, krb5, krb5i, or krb5p:
    <br/><code>&gt; nfs_mount.exe -o sec=&lt;flavor&gt; Z: &lt;server_name&gt;:\</code></li>
    <li>You can later unmount with:
    <br/><code>&gt; nfs_mount.exe -d Z</code></li>
</ol>
<h2>7. <a name="cthon">Connectathon</a></h2>
<h3>Requirements</h3>
<ul>
    <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>
    <li>ms-nfs41-client source code (patches for connectathon are located in <strong>ms-nfs41-client\tests</strong>)</li>
</ul>
<h3>Instructions</h3>
<ol>
    <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>
    <li>Create a git repository to track changes:
    <br/><code>&gt; git init</code>
    <br/><code>&gt; git add *</code>
    <br/><code>&gt; git commit -m "files from nfstests.zip"</code></li>
    <li>Apply all cthon patches:
    <br/><code>&gt; git am /path/to/ms-nfs41-client/tests/*.patch</code></li>
    <li>Build the tests:
    <br/><code>&gt; make</code></li>
    <li>Run the test suite on a mounted directory:
    <br/><code>&gt; ./runtests -a -t z:/testdir</code></li>
</ol>
<h2>8. <a name="issues">Known Issues</a></h2>
<ul>
    <li>krb5p security with AES keys do not work against the linux server, as it does not support gss krb5 v2 tokens with rotated data.</li>
    <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>
    <li>If nfsd.exe is restarted while a drive is mapped, that drive needs to be remounted before further use.</li>
    <li>Symbolic links are not supported in Cygwin. Connectathon's basic test8 and special test nfsidem have been commented out.</li>
    <li>Does not allow renaming a file on top of an existing open file. Connectathon's special test op_ren has been commented out.</li>
    <li>Extended attributes are supported with some limitations: a) the server must support <a href="https://tools.ietf.org/html/rfc5661#section-5.3" title="RFC 5661: 5.3. Named Attributes">NFS Named Attributes</a>, b) the order of listings cannot be guaranteed by NFS, and c) the EaSize field cannot be reported for directory queries of FileBothDirInformation, FileFullDirInfo, or FileIdFullDirInfo.</li>
</ul>
<p>Please direct any questions to <a href="mailto:ms-nfs41-client-devel@lists.sourceforge.net">ms-nfs41-client-devel@lists.sourceforge.net</a>.</p>
</div>
</div>
</body>
</html>
You can’t perform that action at this time.