自 10.9 Apple 将 Lion 中的 samba 替换为他们的 SMBX 以来,它一直被破坏。很破。
连接到 samba 共享 (2012 R2 Essentials) 时,连接经常断开或挂起,而这出现在system.log
:
smb2_rq_credit_decrement: Timed out waiting for credits 35
smb_iod_reconnect: Reconnected share <share_name> with server <server_name>
smb_fid_get_kernel_fid: No smb2 fid found for fid 550ff6b0613adf68
smb_iod_reconnect: Reconnected share <share_name> with server <server_name>
一些消息来源建议强制使用 SMBv1 作为解决方法,如下所示:
echo "[default]" >> ~/Library/Preferences/nsmb.conf
echo "smb_neg=smb1_only" >> ~/Library/Preferences/nsmb.conf
这实际上使它工作(不挂起或断开连接)只是目录列表需要15-30秒没问题..这意味着它几乎完全没用。
这个问题困扰了我很长时间,我正在尝试解决方法。我能想到的一个是编译Samba (www.samba.org),但由于 Apple 不久前将它们从 Mac OS X 中删除,他们并没有真正付出太多努力使 samba 与 OS X 兼容 .. 这是可以理解的 :)
在对 Samba 4.1.11 源进行一些修复后,samba 以某种方式编译,但似乎没有 mount_smbfs 或类似的东西——只有 smbclient。
有谁知道是否可以使用 OS X 进行挂载(因为它涉及内核,我不知道具体是什么)?
关于如何解决这个问题的任何其他建议?
PS:我目前被困在 OS X 10.9.4 上的 Samba 4.1.11 版本的 samba 编译中(如果有人知道如何解决这个问题):
Undefined symbols for architecture x86_64:
"___unsafe_string_function_usage_here_size_t__", referenced from:
_send_announcement in nmbd_sendannounce_122.o
_send_lm_announcement in nmbd_sendannounce_122.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Waf: Leaving directory `<replaced_path_to_samba>/samba/bin'
Build failed: -> task failed (err #1):
{task: cc_link profile_76.o,asyncdns_122.o,nmbd_122.o,nmbd_become_dmb_122.o,nmbd_become_lmb_122.o,nmbd_browserdb_122.o,nmbd_browsesync_122.o,nmbd_elections_122.o,nmbd_incomingdgrams_122.o,nmbd_incomingrequests_122.o,nmbd_lmhosts_122.o,nmbd_logonnames_122.o,nmbd_mynames_122.o,nmbd_namelistdb_122.o,nmbd_namequery_122.o,nmbd_nameregister_122.o,nmbd_namerelease_122.o,nmbd_nodestatus_122.o,nmbd_packets_122.o,nmbd_processlogon_122.o,nmbd_responserecordsdb_122.o,nmbd_sendannounce_122.o,nmbd_serverlistdb_122.o,nmbd_subnetdb_122.o,nmbd_winsproxy_122.o,nmbd_winsserver_122.o,nmbd_workgroupdb_122.o,nmbd_synclists_122.o -> nmbd}