日常工作是在 Linux 服务器上进行的,从编码到编译构建,快速验证可以使用 qemu,单板则可以使用 CI 进行看护。但有时也希望自己本地能够进行单板验证,这个时候就必须回到Windows上。Linux 服务器上编好的镜像如何传到 PC 上呢?有没有办法可以共享两个不同OS之间的文件目录呢?

文件传输工具倒是有不少。 比如 WINSCP
有的 SSH 登录客户端集成了文件传输服务。比如 MobaXterm
当然也可在 Linux上安装 samba 服务,如此 windows 即可访问 Linux 目录。
还可以让 windows 共享目录给 linux 访问。下面介绍这一种方法。

windows 10 上共享一个目录

这里可以设置共享给谁,并给予相应的权限控制。
win文件夹 --> 属性 --> 共享 --> 高级共享 --> 添加用户(Everyone)--> 设置读写属性

qemu win7 共享目录_qemu win7 共享目录

选择是否密码保护

控制面板 --> 网络和 Internet --> 打开网络共享中心 --> 高级共享设置 --> 密码保护的共享 --> 关闭密码保护

可以选择关闭密码保护,或者启用密码保护,启用的话其他人访问共享目录就需要密码。

windows 开启 SMB 服务

控制面板 --> 程序 --> 程序和功能 --> 启动SMB 1.0/CIFS文件共享支持 --> 重启电脑

qemu win7 共享目录_服务器_02

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 查看共享目录