参考
本人使用的 openwrt 为 esir 大佬编译的高大全固件。esir 的谷歌云盘
其使用 samba 插件时一直有个问题,那就是开机无法正常自动挂载,必须得再手动点击挂载才行。为了解决这个问题,我手贱升级了一下 samba 依赖(opkg update…)。
事实证明 opkg 和其他 linux 发行版的包管理逻辑不完全一样,内核版本不对就别指望着升级吧,基本就相当于摆设,特别是对于新版本 openwrt 来说。
升级过后,不仅原来的问题没有解决,就连 mount.cifs 命令都冇用了,那自然是在启动脚本中手动添加挂载命令都不行了,不过好在这个问题不仅我一个人遇到过,其他编译的版本有的也有这个问题。
解决方案就是不使用系统提供的 mount.cifs,而是使用 busybox 中的 mount, 因为这种情况下,mount.cifs 显然已经损坏了。
将 /etc/init.d/cifs
改为以下内容即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| START=97
ENABLED=0 WORKGROUPD=0 IOCHARSET=0 GUEST="" USERS="" AGM=""
cifs_header() { local enabled local workgroup
config_get enabled $1 enabled config_get workgroup $1 workgroup
ENABLED=$enabled WORKGROUPD=$workgroup }
mount_natshare() { local server local name local natpath local guest local users local pwd local agm local iocharset local smbver
config_get server $1 server config_get name $1 name config_get natpath $1 natpath config_get guest $1 guest config_get users $1 users config_get pwd $1 pwd config_get agm $1 agm config_get iocharset $1 iocharset config_get smbver $1 smbver
mkdir -p $natpath && chmod 777 $natpath busybox mount -t cifs -o vers=$smbver,user=$users,password=$pwd,iocharset=$iocharset,$agm //$server/$name $natpath }
start() { config_load cifs config_foreach cifs_header cifs
if [ $ENABLED == 1 ] then { config_foreach mount_natshare natshare } fi }
stop() { mount | grep '//' | awk -F ' ' '{print$3}' | while read line; do umount -d -l $line 2>/dev/null done }
|
使用 mount.cifs 命令的时候也使用 busybox 内置的就可以了。