日常工作是在 Linux 服务器上进行的,从编码到编译构建,快速验证可以使用 qemu,单板则可以使用 CI 进行看护。但有时也希望自己本地能够进行单板验证,这个时候就必须回到Windows上。Linux 服务器上编好的镜像如何传到 PC 上呢?有没有办法可以共享两个不同OS之间的文件目录呢?
文件传输工具倒是有不少。 比如 WINSCP
。
有的 SSH 登录客户端集成了文件传输服务。比如 MobaXterm
。
当然也可在 Linux上安装 samba 服务,如此 windows 即可访问 Linux 目录。
还可以让 windows 共享目录给 linux 访问。下面介绍这一种方法。
windows 10 上共享一个目录
这里可以设置共享给谁,并给予相应的权限控制。win文件夹 --> 属性 --> 共享 --> 高级共享 --> 添加用户(Everyone)--> 设置读写属性
选择是否密码保护
控制面板 --> 网络和 Internet --> 打开网络共享中心 --> 高级共享设置 --> 密码保护的共享 --> 关闭密码保护
可以选择关闭密码保护,或者启用密码保护,启用的话其他人访问共享目录就需要密码。
windows 开启 SMB 服务
控制面板 --> 程序 --> 程序和功能 --> 启动SMB 1.0/CIFS文件共享支持 --> 重启电脑
。
Linux 端操作
# 基于 ubuntu 18.04
# 新建一个目录作为 windows 共享目录的挂载点
mkdir win-share
# IP地址是 windows ip,后面跟上 windows 上的共享目录[指定目录名即可,不需要路径],后面的路径是 linux 上的挂载路径
sudo mount -t cifs -o user=xxx,pass=xxx //10.173.221.84/share /home/win-share
# 没有密码的话
sudo mount -t cifs -o user=Everyone //10.173.221.84/share /home/win-share
问题解决
连接有问题可以尝试以下方法。
- 查看 mount 出错具体信息。
sudo tail /var/log/kern.log
- 不推荐关闭网络防火墙
控制面板-->系统安全-->Windows 防火墙-->启用或关闭防火墙-->关闭防火墙
- Linux 需要安装以下模块
$ sudo apt-get install nfs-common
$ sudo apt-get install smbfs
# Ubuntu 18.04 ...
sudo apt install cifs-utils
smaba
Samba是在Linux系统上实现的SMB(Server Messages Block,信息服务块)协议的一款免费软件。它实现在局域网内共享文件和打印机,是一个客户机/服务器型协议。客户机通过SMB协议访问服务器上的共享文件系统。
# install samba
sudo apt install smaba samba-common
# configure the smb.conf
sudo vi /etc/samba/smb.conf
[share tags]
comment = xxx
browseable = yes
path = /home/xxx/
writable = yes
guest ok = no
valid users = xxx
directory mask = 0775
create mask = 0664
# force user = xxx
# add username to the samba
sudo smbpasswd -a xxx
sudo service smbd restart
# window 下文件浏览器可输入 \\x.x.x.x 查看共享目录