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
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可以查看或修改挂载点:
确认挂载成功之后,可以继续配置共享目录,参考下图
如果在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)并在网上邻居共享访问