开发环境
开发平台:IMX6
虚拟机环境:Ubuntu16.04
Samba版本:3.4.17
目的
实现无论IMX6作为客户端还是服务端,IMX6系统下与window系统、ubuntu系统文件共享。
Samba移植
- 下载Samba源码,这个网上一搜大把,我用的版本是samba-3.4.17.tar.gz
- 把samba-3.4.17.tar.gz源码放在Ubuntu下进行交叉编译。
- 如下步骤:
1、解压
tar -xvf samba-3.4.17.tar.gz
2、进入到源码中的source3目录下进行交叉编译
在编译前,需要确定交叉编译器是否设为全局环境当中。如果输入以下指令能正常输出的话,证明已经设置了。
arm-linux-gnueabihf-gcc -v
配置
./configure --host=arm-linux-gnueabihf --disable-cups --disable-iprint --enable-static=yes --disable-shared samba_cv_CC_NEGATIVE_ENUM_VALUES=yes
编译
make
安装
make DESTDIR=./installDir install
3、将编译出来的文件拷贝到开发板上
1、可以通过U盘拷贝或者scp网络传输进行
2、将installDir目录下的/usr拷贝到开发板的rootfs文件系统/usr上去
3、将source3中bin目录下的一些工具也拷贝过去,如smbd,nmbd这两个守护进程拷贝到/bin下
4、将source3/bin/libwbclient.a静态库拷贝到文件系统的/lib
5、将source3/bin/mount.cifs拷贝到文件系统的/bin
4、在开发板上配置和搭建
第一种情况:开发板作为服务端server
1、创建samba的配置文件smb.conf
root@imx6dlsabresd:/# vi /etc/smb.conf
内容如下:
[global]
workgroup = root
security = user
client lanman auth = yes
lanman auth = yes
map to guest = bad user
guest account = root
[project]
comment = project
path = /home/hyb/samba
available = yes
browseable = yes
public = yes
guest ok = yes
writable = yes
开启Samba的守护进程(mnbd是Samba服务器中负责处理NetBIOS名称解析服务的守护进程,而smbd是负责处理SMB/CIFS协议请求的核心组件。它们分别提供了不同的功能和服务,但都是为了实现Samba服务器的文件共享和网络访问功能)
/bin/nmbd -s /etc/smb.conf -D
/bin/smbd -s /etc/smb.conf -D
默认的smb.conf是在/usr/local/samba/lib/路径下
通过指令ps -ef如下图即为正常启动
电脑端:
window+R键输入\开发板的IP地址,前提是一定window端和开发板端能够ping通
这就成功连接上了,可以在这个目录下共享文件了。
如果连接的时候报,window报以下错误的话。
解决方法如下:
配置成功后,电脑重启
第二种情况:window端为服务端,开发板为客户端
1、电脑端新建用户
新建共享目录
开发板端设置
如果在执行mount.cifs指令的时候出现如下错误:
root@imx6dlsabresd:/# /bin/mount.cifs //192.168.0.173/J /home/hyb/dir -o username=hyb,password=123456
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
需要在kernel中支持cifs类型的文件系统。
root@imx6dlsabresd:/usr/local/samba/bin# /bin/mount.cifs //192.168.0.173/J /home/hyb/dir -o username=hyb,password=123456
####如果输入df指令出现以下信息,就相当于挂载成功了
root@imx6dlsabresd:/usr/local/samba/bin# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 6779240 1224680 5187152 20% /
devtmpfs 867976 4 867972 1% /dev
tmpfs 1032536 152 1032384 1% /run
tmpfs 1032536 380 1032156 1% /var/volatile
/dev/mmcblk3p1 511720 7176 504544 2% /run/media/mmcblk3p1
//192.168.0.151/J 204796 16224 188572 8% /home/hyb/dir
扩展
在ubuntu下搭建samba环境会相对于简单一些。
apt-get下载软件包
sudo apt-get install samba samba-common
sudo apt-get install smbclient cifs-utils
在配置文件中添加如下语句
/etc/samba/smb.conf
[share]
comment = share folder
browseable = yes
path = /home/hyb/sambadir
create mask = 0700
directory mask = 0700
valid users = hyb
force user = hyb
force group = hyb
public = yes
available = yes
writable = yes
新建samba用户
sudo smbpasswd -a hyb
可以使用smbclient连接
sudo smbclient //192.168.0.151/share -U hyb
//192.168.0.151 >>>> 服务器端的IP
share >>>> 共享名
其他步骤就像在imx6端和window端操作一样了,就不详细写了