热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OpenWrt搭建文件共享服务——基于samba

OpenWrt搭建文件共享服务——基于samba1.安装USB和fs内核模块opkgupdateopkginstallkmod-usb-corekmod-usb-storagekm
OpenWrt搭建文件共享服务——基于samba

1.安装USB和fs内核模块

opkg update
opkg install kmod-usb-core kmod-usb-storage kmod-usb-ohci kmod-fs-ext4 kmod-fs-vfat kmod-fuse ntfs-3g
##注意:1.kmod-fs-ext2和kmod-fs-ext3已经无法正常获取,但是被komd-fs-ext4所包含了;

注意:1.kmod-fs-ext2和kmod-fs-ext3已经无法正常获取,但是被komd-fs-ext4所包含了;

2.配置自动挂载

opkg install mount-utils block-mount
##注意:1.block-extroot和block-hotplug已经合并到block-mount中,因此,安装block-hotplug后也会一并安装其他两个。

安装成功后,产生文件/etc/hotplug.d/block/10-mount。首先将原文件10-mount备份,重命名成 /etc/hotplug.d/block/10-mount.def;然后新建文件;最后将以下脚本内容复制粘贴到文件中。

## 备份文件
cp ./10-mount ./10-mount.def
## 新建文件
vim 10-mount
## 复制以下内容
#!/bin/sh
#Copyright (C) 2009 OpenWrt.org (C) 2010 OpenWrt.org.cn
blkdev=`dirname $DEVPATH`
if [ `basename $blkdev` != "block" ]; then
device=`basename $DEVPATH`
case "$ACTION" in
add)
mkdir -p /mnt/$device
# vfat & ntfs-3g check
if [ `which fdisk` ]; then
isntfs=`fdisk -l | grep $device | grep NTFS`
isvfat=`fdisk -l | grep $device | grep FAT`
isfuse=`lsmod | grep fuse`
isntfs3g=`which ntfs-3g`
else
isntfs=""
isvfat=""
fi
# mount with ntfs-3g if possible, else with default mount
if [ "$isntfs" -a "$isfuse" -a "$isntfs3g" ]; then
ntfs-3g -o nls=utf8 /dev/$device /mnt/$device
elif [ "$isvfat" ]; then
mount -t vfat -o iocharset=utf8,rw,sync,umask=0000,dmask=0000,fmask=
else
mount /dev/$device /mnt/$device
fi
if [ -f /dev/${device}/swapfile ]; then
# make swap space
mkswap /dev/${device}/swapfile
swapon /dev/${device}/swapfile
fi
;;
remove)
if [ -f /dev/${device}/swapfile ]; then
swapoff /dev/${device}/swapfile
fi
umount /dev/$device
;;
esac
fi

完成以上步骤之后,就可以:路由器先上电,然后插上U盘并自动挂载。如果想要兼容:路由器先插上U盘,然后上电并自动挂载这种场景的话。还需要做以下设置:

使用fstab机制,修改/etc/config/fstab中的option anon_mount ‘1’:

config 'global'
option anon_swap '0'
option anon_mount '1' ##关键
option auto_swap '1'
option auto_mount '1'
option delay_root '5'
option check_fs '0'

3.设置硬盘自动休眠

## 安装hdparm
opkg update
opkg install hdparm
## hdparm休眠测试
hdparm -S 60 /dev/sda ##设置超时值(5分钟)使硬盘进入休眠模式(省电模式)。放到开机启动项就可以每次开机都生效
hdparm -y /dev/sda ##这个命令是立即休眠,测试硬盘是否休眠成功。休眠时接到读写命令会自动唤醒进入工作模式
## 读盘速度测试
hdparm -t /dev/hda ##IDE硬盘
hdparm -t /dev/sda ##SATA、SCSI、硬RAID卡阵列
hdparm -t /dev/md0 ##软RAID设备
## 注意:测试结果在空载情况下应 >40M/s ,在负载情况下平均应 > 20M/s 为正常,如测试结果极低则需要进一步使用硬盘专用检测工具测试是否为硬盘故障。

以下提供其他参数的解释

-a<快取分区> 设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。
  -A<0或1> 启动或关闭读取文件时的快取功能。
  -c 设定IDE32位I/O模式。
  -C 检测IDE硬盘的电源管理模式。
  -d<0或1> 设定磁盘的DMA模式。
  -f 将内存缓冲区的数据写入硬盘,并清楚缓冲区。
  -g 显示硬盘的磁轨,磁头,磁区等参数。
  -h 显示帮助。
  -i 显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。
  -I 直接读取硬盘所提供的硬件规格信息。
  -k<0或1> 重设硬盘时,保留-dmu参数的设定。
  -K<0或1> 重设硬盘时,保留-APSWXZ参数的设定。
  -m<磁区数> 设定硬盘多重分区存取的分区数。
  -n<0或1> 忽略硬盘写入时所发生的错误。
  -p 设定硬盘的PIO模式。
  -P<磁区数> 设定硬盘内部快取的分区数。
  -q 在执行后续的参数时,不在屏幕上显示任何信息。
  -r<0或1> 设定硬盘的读写模式。
  -S<时间> 设定硬盘进入省电模式前的等待时间。
  -t 评估硬盘的读取效率。
  -T 平谷硬盘快取的读取效率。
  -u<0或1> 在硬盘存取时,允许其他中断要求同时执行。
  -v 显示硬盘的相关设定。
  -W<0或1> 设定硬盘的写入快取。
  -X<传输模式> 设定硬盘的传输模式。
  -y 使IDE硬盘进入省电模式。
  -Y 使IDE硬盘进入睡眠模式。
  -Z 关闭某些Seagate硬盘的自动省电功能。

4.安装samba文件共享服务

samba:Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。而SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

## 安装samba
opkg update
opkg install samba36-server
## 注意:上面的 samba36-server 是本文发布时的Samba服务软件包名称,其中数字36表示3.6.X版本,以后Samba版本更新的话可能找不到这个软件包,这个时候执行 opkg list | grep samba 搜一下就好。

这时,重启一下openwrt系统就可以发现硬盘已经挂载上去了。打开LuCi可以查看或修改挂载点:

《OpenWrt搭建文件共享服务——基于samba》

确认挂载成功之后,可以继续配置共享目录,参考下图

《OpenWrt搭建文件共享服务——基于samba》

如果在LuCi找不到Service选项的话,需要手动安装samba网络共享服务

opkg install luci-app-samba #SAMBA网络共享服务

然后设置共享用户的密码,这里将root添加为共享用户

smbpasswd -a root

最后启动服务

/etc/init.d/samba start

以下提供samba操作命令解释

* start Start the service
* stop Stop the service
* restart Restart the service
* reload Reload configuration files (or restart if that fails)
* enable Enable service autostart
* disable Disable service autostart

5.使用

在安卓手机可以通过ES文件浏览器的局域扫描完成客户端操作。

6.参考文献

[1] OpenWrt搭建文件共享服务(NAS)
[2] OpenWrt挂载USB存储设备
[3] OpenWrt挂载U盘(NTFS)并在网上邻居共享访问


推荐阅读
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 在 CentOS 6.7 系统维护中,常用的巡检命令包括:`uname -a` 用于查看内核、操作系统和 CPU 信息;`head -n 1 /etc/issue` 用于查看操作系统的版本;`cat /proc/cpuinfo` 用于获取详细的 CPU 信息;`hostname` 用于显示当前主机名;`ls` 命令则用于列出目录内容。这些命令可以帮助系统管理员快速了解系统的运行状态和配置信息,确保系统的稳定性和安全性。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 本文详细介绍了VIM的基础操作和常用快捷键,VIM作为Unix及类Unix系统中的一款经典文本编辑器,源自VI的改进与发展。其简洁的界面和强大的扩展性使其在开发者中备受青睐,同时也催生了多个适用于Windows平台的版本。通过图文并茂的方式,帮助读者快速掌握VIM的核心功能与使用技巧。 ... [详细]
  • Linux基础知识:Vi与Vim编辑器详解
    Linux基础知识:Vi与Vim编辑器详解 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 本文深入探讨了 Linux 系统中字符集配置的问题及其解决方案,重点介绍了 `locale` 设置的方法和常见错误的修复技巧。通过详细分析 `locale` 变量的配置,如 `LANG`、`LC_COLLATE`、`LC_CTYPE` 和 `LC_MESSAGES`,帮助用户解决字符显示不正常、命令执行出错等问题,提升系统稳定性和用户体验。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统
    本文详细介绍了在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统的步骤。首先,通过“文件”菜单选择“新建虚拟机”并进入自定义设置。接着,在硬盘兼容性选项中选择默认设置。为了更好地进行Linux操作系统的安装练习,建议选择稍后安装操作系统,并在虚拟机安装完成后,根据实际需求删除不必要的硬件组件。此外,本文还提供了详细的配置参数和注意事项,帮助用户顺利完成整个部署过程。 ... [详细]
  • Linux入门教程第七课:基础命令与操作详解
    在本课程中,我们将深入探讨 Linux 系统中的基础命令与操作,重点讲解网络配置的相关知识。首先,我们会介绍 IP 地址的概念及其在网络协议中的作用,特别是 IPv4(Internet Protocol Version 4)的具体应用和配置方法。通过实际操作和示例,帮助初学者更好地理解和掌握这些基本技能。 ... [详细]
  • 虚拟机网络设置与数据库远程连接优化指南
    本文针对个人计算机上虚拟机网络配置与数据库远程连接的问题,提供了一套详细的优化指南。在探讨远程数据库访问前,需确保网络配置正确,特别是桥接模式的设置。通过合理的网络配置,可以有效解决因虚拟机或网络问题导致的连接失败,提升远程访问的稳定性和效率。 ... [详细]
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 在项目开发过程中,掌握一些关键的Linux命令至关重要。例如,使用 `Ctrl+C` 可以立即终止当前正在执行的命令;通过 `ps -ef | grep ias` 可以查看特定服务的进程信息,包括进程ID(PID)和JVM参数(如内存分配和远程连接端口);而 `netstat -apn | more` 则用于显示网络连接状态,帮助开发者监控和调试网络服务。这些命令不仅提高了开发效率,还能有效解决运行时的各种问题。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 基于域名、端口和IP的虚拟主机构建方案
    本文探讨了在单台物理服务器上构建多个Web站点的虚拟主机方案,详细介绍了三种主要的虚拟主机类型:基于域名、基于IP地址和基于端口的虚拟主机。每种类型的实现方式及其优缺点均进行了深入分析,为实际应用提供了全面的技术指导。 ... [详细]
author-avatar
性感的aaaaaaaaa_681
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有