Openwrt下适配Samba

关于Samba

samba是Linux和Unix平台的一款实现了SMB协议的软件,可以使得windows平台的主机也可以访问Linux和Unix平台主机共享出来的资源。

SMB协议(Server Message Block)是由微软开发的一种软件程序级的网络传输协议,基于NetBIOS,主要功用是使得一个网络上的机器共享计算机文件、打印机、串行端口和通讯等资源,使用C/S架构运行,主要作用在Windows平台。

samba服务监听的协议端口:

  • UDP协议 端口号:137 NetBIOS名字服务 服务名称:nmbd
  • UDP协议 端口号:138 NetBIOS数据包服务
  • TCP协议 端口号:139 文件共享和打印机共享 服务名称:smbd
  • TCP协议 端口号:445 NetBIOS在Windows2000及以后版本使用此端口

Openwrt下直接安装samba服务

终端输入
opkg update
opkg install samba
安装完成后,重启 OpenWrt 路由器以使配置生效。

Openwrt下USB TypeA编译适配Samba

可以到Openwrt官网搜索samba相关内容进行学习

以下以samba3.6为例表述我自己在openwrt下的操作步骤:

  • 首先需要下载对应的tar包到openwrt源码根目录的dl文件夹下
  • makefile等文件放在package/network/services/samba36目录下
    samba36
    ├─ files
    ├─ patches
    └─ Makefile
  • 随后根据个人需求对配置文件做修改,其中samba.config是uci配置文件,samba.conf.template是配置模板,samba.init是samba初始化脚本

Makefile:默认配置即可

# Copyright (C) 2007-2012 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=samba
PKG_VERSION:=3.6.25
PKG_RELEASE:=1.1

PKG_SOURCE_URL:=http://ftp.samba.org/pub/samba \
	http://ftp.samba.org/pub/samba/stable
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_MD5SUM:=76da2fa64edd94a0188531e7ecb27c4e

PKG_LICENSE:=GPLv3
PKG_LICENSE_FILES:=COPYING

PKG_MAINTAINER:=Felix Fietkau <[email protected]>

PKG_BUILD_PARALLEL:=1

include $(INCLUDE_DIR)/package.mk

MAKE_PATH:=source3
CONFIGURE_PATH:=source3

PKG_BUILD_BIN:=$(PKG_BUILD_DIR)/$(MAKE_PATH)/bin

define Package/samba36-server
  SECTION:=net
  CATEGORY:=Network
  TITLE:=Samba 3.6 SMB/CIFS server
  URL:=http://www.samba.org/
  DEPENDS:=+USE_EGLIBC:librt
endef

define Package/samba36-client
  SECTION:=net
  CATEGORY:=Network
  TITLE:=Samba 3.6 SMB/CIFS client
  URL:=http://www.samba.org/
  DEPENDS:=+libreadline +libncurses
endef

define Package/samba36-server/config
	config PACKAGE_SAMBA_MAX_DEBUG_LEVEL
		int "Maximum level of compiled-in debug messages"
		depends on PACKAGE_samba36-server || PACKAGE_samba36-client
		default -1

endef

define Package/samba36-server/description
 The Samba software suite is a collection of programs that implements the
 SMB protocol for UNIX systems, allowing you to serve files and printers to
 Windows, NT, OS/2 and DOS clients. This protocol is sometimes also referred
 to as the LanManager or Netbios protocol.
endef

TARGET_CFLAGS += -DMAX_DEBUG_LEVEL=$(CONFIG_PACKAGE_SAMBA_MAX_DEBUG_LEVEL) -D__location__=\\\"\\\" -ffunction-sections -fdata-sections
TARGET_LDFLAGS += -Wl,--gc-sections

CONFIGURE_VARS += \
	ac_cv_lib_attr_getxattr=no \
	ac_cv_search_getxattr=no \
	ac_cv_file__proc_sys_kernel_core_pattern=yes \
	libreplace_cv_HAVE_C99_VSNPRINTF=yes \
	libreplace_cv_HAVE_GETADDRINFO=yes \
	libreplace_cv_HAVE_IFACE_IFCONF=yes \
	LINUX_LFS_SUPPORT=yes \
	samba_cv_CC_NEGATIVE_ENUM_VALUES=yes \
	samba_cv_HAVE_GETTIMEOFDAY_TZ=yes \
	samba_cv_HAVE_IFACE_IFCONF=yes \
	samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes \
	samba_cv_HAVE_SECURE_MKSTEMP=yes \
	samba_cv_HAVE_WRFILE_KEYTAB=no \
	samba_cv_USE_SETREUID=yes \
	samba_cv_USE_SETRESUID=yes \
	samba_cv_have_setreuid=yes \
	samba_cv_have_setresuid=yes \
	ac_cv_header_zlib_h=no \
	
### 如何在开发板上安装配置OpenWRT系统 #### 准备工作 为了顺利地将OpenWrt系统移植并安装到目标开发板,前期准备工作至关重要。这不仅涉及到硬件环境的搭建,还包括软件资源的获取与准备。 - **硬件准备**:确保拥有稳定可靠的电源供应、USB转TTL串口线用于调试以及网络接口以便于后续的数据传输。 - **软件准备**:下载适用于所用开发板型号(如i.MX6UL)的最新版OpenWrt镜像文件[^1]。对于某些特殊平台,可能还需要额外准备特定版本的Linux内核或其他依赖库来适配硬件特性[^2]。 #### 编译定制化OpenWrt固件 如果官方提供的预编译二进制包无法完全满足项目需求,则可以根据实际应用场景自行编译适合的OpenWrt固件: - 获取最新的OpenWrt源码仓库,并按照官方说明完成必要的初始化操作; - 配置Target System为目标处理器架构(例如ARM Cortex-A7),同时选择合适的子target(比如Freescale i.MX6系列)作为具体芯片支持; - 定义所需的软件包集合,在菜单config界面中勾选计划集成的功能模块和服务程序; - 执行`make V=s`命令启动整个编译流程直至生成最终可刷写的.bin/.img格式映像文件。 #### 刷写OpenWrt至开发板 当准备好兼容的目标设备及其对应的OpenWrt固件之后,就可以着手进行烧录过程了。这里介绍两种常见的方法: - **通过Uboot阶段加载**:利用串口控制台进入UBoot引导模式下执行相应的指令集,借助TFTP协议从局域网内的服务器拉取远端存储的新固件副本并将其写入Flash分区中永久保存下来[^4]; ```bash setenv serverip <PC_IP> tftpboot ${loadaddr} openwrt-imx6ul-som.img saveenv bootm ${loadaddr} ``` - **基于WebUI在线升级**:假如当前运行的是带有图形界面管理后台的老版本OpenWrt或者其他第三方ROM的话,可以直接访问http://<device_ip>/cgi-bin/luci页面上传本地已有的新firmware来进行无缝替换而不必担心破坏现有数据结构。 #### 后期配置优化 一旦成功部署完毕新的操作系统后,便可以登录SSH终端进一步调整各项参数设定以适应具体的使用场景: - 修改默认管理员账户密码保护网络安全免受非法入侵威胁; - 设置静态IP地址分配策略保障内部通信稳定性; - 添加防火墙规则过滤不必要的外部流量请求提高整体性能表现; - 安装额外的应用组件扩展基本功能范围,诸如Samba共享服务、DDNS动态域名解析等实用插件都可以极大地方便日常运维管理工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ryan爱吃糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值