I just got this to work on ESX 3.5 by modifying the steps slightly (using ALL of the feedback from within this thread - Thanks All!)
Here were the steps I followed:
NOTE: DO NOT RUN THE COMPILE ON A PRODUCTION MACHINE!
1) As with any modification to an OS, make a backup of the things you're going to possible change. In this case, the modules folder in /lib/modules.
cp 2.4.21-37.0.2.ELvmnix 2.4.21-37.0.2.ELvmnix.old
2) cd /usr/src/linux-2.4/configs
3) nano vmnix.config, search for CONFIG_NFSD_TCP and change the commented line to:
CONFIG_NFSD_TCP=y
4) cp vmnix.config kernel-2.4.21-i686-vmnix.config
5) cd /usr/src/linux-2.4
6) Verify that the 'Makefile' has the required updates. Change the end of the EXTRAVERSION line from ELcustom to
ELvmnix
7) make mrproper
8) make oldconfig
9) make dep
10) nano /usr/src/linux-2.4.21-57.EL/include/linux/version.h and edit the following line (or add it if it doesn't exist)
THIS MUST BE THE RECORDED BUILD VERSION FROM THE VC CLIENT:
#define VMNIX_BUILD "103908"
11) make modules
12) If the build completed properly, you can copy the newly created nfsd.o module.
cp /usr/src/linux-2.4.21-57.EL/fs/nfsd/nfsd.o /lib/modules/2.4.21-57.ELvmnix/kernel/fs/nfsd/
Service and Firewall Configuration
13) nano /etc/init.d/nfs
14) change line 6 to be:
- chkconfig: - 50 20
This causes the nfs daemons to start BEFORE the vmware-late process (which mounts NFS stores) when you run step 13
15) chkconfig --level 345 nfs on
16) chkconfig --level 345 portmap on
17) esxcfg-firewall -o 111,tcp,in,sunrpc
18) esxcfg-firewall -o 111,udp,in,sunrpc
19) esxcfg-firewall -o 369,tcp,in,rpc2portmap
20) esxcfg-firewall -o 369,udp,in,rpc2portmap
21) esxcfg-firewall -o 808,tcp,in,mountd
22) esxcfg-firewall -o 2049,tcp,in,nfs
23) esxcfg-firewall -o 2049,udp,in,nfs
24) nano /etc/sysconfig/nfs and add:
MOUNTD_PORT=808
This forces the mountd daemon to listen on port 808 otherwise it chooses one at random and won't allow inbound connections through the firewall.
Create your /etc/exports file accordingly and verify your mount points are all working.
Restart the server and you will now have a working TCP NFS daemon on the ESX 3 COS. From there, you can export your folder and mount it using the VI Client.
To confirm everything is funtioning, run
rpcinfo -p to get the port and transport list of RPC services. The line to look for has "
2049 tcp nfs" in it.
If "2049 tcp nfs" is not shown, you probably have the original
nfsd.o module loaded. 1st thing to try:
1)
service nfs stop
2) Check to see if nsfd has it's module currently loaded by running
lsmod. Unload the current nfsd.o module:
rmmod nfsd
3) recompile or recopy the NEW nfsd.o module to:
/lib/modules/2.4.21-57.ELvmnix/kernel/fs/nfsd/
4) Then do a
modprobe nfsd. See if it loads - if you get no error, that's a good sign. Do another
lsmod and see if it's there.
5) Start nfs again and see if it is listening on the correct port:
service nfs start
rpcinfo -p
6) If all else fails, reboot and see if the correct module is loaded and the ports are open.
Hope that helps!
Enjoy!