当前位置:   article > 正文

samba开发篇---介绍_samba源码分析

samba源码分析

samba source

本篇是samba开发部分的启动篇,对于samba来说很多人都是以正常的基本使用就可以了吧,但是对于一些高级管理,或者手动管理写一个nas后端来说那是远远不够的。相信大家也觉得群辉的nas是真难用了吧,不管是dsm还是其他的,我发现这个功能远远是不够用的,而且系统手感也是相当令人无语。当然从群辉nas到其他家nas都是一样,不如咱们自己手动做一个nas后端把。当然我这里仅仅是介绍如何学习samba源码。



前言

简而言之,学习samba源码也是对自己的一个激励。


一、samba的用途

samba 是用来windows和linux不同系统之间进行通信的兼容的产物。smb协议是相对极端的协议之一,samba是基于smb协议做的一个应用层服务,当然现在可以叫cifs协议,貌似我的个人短暂理解和查看代码时候发现,cifs协议内核是有一套的,但是samba貌似没有用内核的那套协议,而是自己去实现了一个用户空间的smb协议,通过自己内部的协议来进行共享的搭建。

二、搭建环境

samba有自己的一套下载依赖的方式,当然有很多人教学是直接把编译的软件都复制下来当我没说。
本次我使用的是ubuntu20.04环境,使用samba-4.13.17版本的source。

1. git samba代码

git clone git://git.samba.org/samba.git
  • 1
git checkout samba-4.13.17
  • 1

2.安装依赖以及编译

samba这里有内置的工具配合你下载依赖

cd bootstrap/generated-dists/
  • 1

可以看到有如下几个目录,目前我的系统是ubuntu20.04,所以进入这个目录下

centos7  centos8  debian10  fedora31  fedora32  opensuse150  opensuse151  ubuntu1604  ubuntu1804  ubuntu2004  Vagrantfile
  • 1

执行如下的命令即可

cd ubuntu2004;
bash ./bootstrap.sh;
  • 1
  • 2

到这里依赖就基本下载好了。
后面就直接是configure,以及make,make install。具体步骤我不介绍了,因为太多人介绍了,其实再次列出步骤实在没有意义。

二、认识samba代码

截图不一定看得清楚我就直接列出来把

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                                     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

samba编译方式主要是以waf编译工具为主,所以samba源码里面有非常多的waf脚本。整体所谓的makefile也不过是把waf编译工具给封装了下,底层实际也还是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 团队是一群为爱发电的伙计们,订阅貌似要申请,提邮件基本不回,当然他们官网里面也说了,不要乱发邮件,但是说实话,啥交流的途径都没有,我也只能发邮件了吧。。
我感觉是samba团队对快完蛋了。代码管理和文档还是相对有点难以给开发者一个好的印象。

语言要求

samba主体还是以c为主,但是也有一部分是用python写的。不过会C语言即可,毕竟我也不会python,哈哈。python真是一个糟糕的语言。

我承认C语言才是最牛的


总结

本章只是简简单单概述了一下samba的介绍,以及依赖处理方式。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/184118
推荐阅读
相关标签
  

闽ICP备14008679号