赞
踩
本篇是samba开发部分的启动篇,对于samba来说很多人都是以正常的基本使用就可以了吧,但是对于一些高级管理,或者手动管理写一个nas后端来说那是远远不够的。相信大家也觉得群辉的nas是真难用了吧,不管是dsm还是其他的,我发现这个功能远远是不够用的,而且系统手感也是相当令人无语。当然从群辉nas到其他家nas都是一样,不如咱们自己手动做一个nas后端把。当然我这里仅仅是介绍如何学习samba源码。
简而言之,学习samba源码也是对自己的一个激励。
samba 是用来windows和linux不同系统之间进行通信的兼容的产物。smb协议是相对极端的协议之一,samba是基于smb协议做的一个应用层服务,当然现在可以叫cifs协议,貌似我的个人短暂理解和查看代码时候发现,cifs协议内核是有一套的,但是samba貌似没有用内核的那套协议,而是自己去实现了一个用户空间的smb协议,通过自己内部的协议来进行共享的搭建。
samba有自己的一套下载依赖的方式,当然有很多人教学是直接把编译的软件都复制下来当我没说。
本次我使用的是ubuntu20.04环境,使用samba-4.13.17版本的source。
git clone git://git.samba.org/samba.git
git checkout samba-4.13.17
samba这里有内置的工具配合你下载依赖
cd bootstrap/generated-dists/
可以看到有如下几个目录,目前我的系统是ubuntu20.04,所以进入这个目录下
centos7 centos8 debian10 fedora31 fedora32 opensuse150 opensuse151 ubuntu1604 ubuntu1804 ubuntu2004 Vagrantfile
执行如下的命令即可
cd ubuntu2004;
bash ./bootstrap.sh;
到这里依赖就基本下载好了。
后面就直接是configure,以及make,make install。具体步骤我不介绍了,因为太多人介绍了,其实再次列出步骤实在没有意义。
截图不一定看得清楚我就直接列出来把
auth coverity libcli python setup.cfg third_party wscript_configure_embedded_heimdal
bin ctdb libds README.cifs-utils smb.conf VERSION wscript_configure_system_gnutls
bootstrap dfs_server libgpo README.Coding.md source3 WHATSNEW.txt wscript_configure_system_heimdal
buildtools docs-xml librpc README.contributing source4 wintest wscript_configure_system_mitkrb5
callcatcher-exceptions.grep dynconfig Makefile README.md tags wscript
compile_commands.json examples nsswitch release-scripts testdata wscript_build
configure file_server packaging script testprogs wscript_build_embedded_heimdal
configure.developer include PFIF.txt SECURITY.md tests wscript_build_system_heimdal
COPYING lib pidl selftest testsuite wscript_build_system_mitkrb5
samba编译方式主要是以waf编译工具为主,所以samba源码里面有非常多的waf脚本。整体所谓的makefile也不过是把waf编译工具给封装了下,底层实际也还是waf操作的,具体介绍如下。
WAF是一个Python编写的轻量级构建系统,专门用于构建C/C++项目。它的主要特点是易于学习和使用,同时具有良好的性能和可扩展性。
以下是WAF的一些主要特点和用法:
WAF支持多平台,可以在Linux、Windows和MacOS等操作系统上运行。
WAF的构建脚本是用Python编写的,因此可以通过Python脚本来定制构建过程。
WAF自动跟踪依赖关系,只会重新编译修改的文件和依赖的文件,从而提高了编译的效率。
WAF支持多种编译器和构建选项,如GCC、Clang、Visual Studio等,并且可以方便地切换不同的编译器和选项。
WAF具有丰富的插件和扩展,可以轻松地添加自定义任务、构建选项和工具链等。
WAF的使用方法相对简单,只需要在项目根目录下创建一个waf脚本,然后执行"waf configure"、"waf build"等命令即可开始构建项目。
总之,WAF是一个非常方便、灵活和易用的构建工具,适用于各种规模的C/C++项目。
samba的文档,说实话,用户文档确实很多,也确实够用,但是很多高级功能要么是文档没及时补充,要么是功能有问题,但是也勉强能够使用吧。但是对于开发文档那是真的一贫如洗,可以明确表示基本 没有这部分文档,如果是想做samba部分的开发,要做好徒手看源码的准备。
samba 团队是一群为爱发电的伙计们,订阅貌似要申请,提邮件基本不回,当然他们官网里面也说了,不要乱发邮件,但是说实话,啥交流的途径都没有,我也只能发邮件了吧。。
我感觉是samba团队对快完蛋了。代码管理和文档还是相对有点难以给开发者一个好的印象。
samba主体还是以c为主,但是也有一部分是用python写的。不过会C语言即可,毕竟我也不会python,哈哈。python真是一个糟糕的语言。
本章只是简简单单概述了一下samba的介绍,以及依赖处理方式。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。