共享文件夹设置:让Windows和Ubuntu能方便的传输文件

目录

一、Windows端创建共享文件夹

二、Vmware设置

三、Ubuntu设置

(1)检验上述操作是否成功

(2)创建hgfs目录

(3)挂载共享文件夹

(4)验证是否挂载成功

四、设置开机自启动


在学习驱动开发时,我们必须得把Linux内核、设备树放到Ubuntu下,才能后续对其进行修改、编译等操作。不过在具体实操的时候发现高版本的Ubuntu(2024版本)对于交叉编译器可能不适配,经过查阅资料发现18.04版本是最兼容的,于是我们将Ubuntu的版本回退到18.04进行开发。

但是却发现Ubuntu18.04与新版VSCode又不兼容了,而如果贸然更新Ubuntu的依赖项则可能破坏原有的开发环境,所以只能从Windows方面入手,尝试在Windows本地编写代码,通过类似NFS的方式传输到Ubuntu中。

通过配置共享文件夹(HGFS是Vmware内置的极简通信软件工具包,相较于NFS需要配置ip等繁琐操作极为方便),我们可以直接在 Windows 本地的 VSCode 中编辑内核源码、驱动文件,保存的同时,文件会实时同步到 Ubuntu 虚拟机中,省去了手动传输、同步的步骤。同时,我们也可以在 Ubuntu 中直接访问这些文件,执行交叉编译、设备树修改等操作,完美解决了版本兼容和文件同步的痛点,让开发流程更顺畅高效。

一、Windows端创建共享文件夹

共享完成后会弹出下列的路径,直接点完成即可。

可以按照下面的方式确认一下是否设置好了。

到这里已经基本设置好了共享文件夹,但是还需要接着设置Windows操作系统的网络和共享策略是否需要密码,这是因为我们的共享文件夹是基于网络共享的。

二、Vmware设置

三、Ubuntu设置

(1)检验上述操作是否成功

在Ubuntu系统中输入以下命令:

bash 复制代码
vmware-hgfsclient

它的全称是:VMware Host-Guest File System(主机 - 客户机文件系统) ,这是Vmware自带的软件工具,而最后的client则表示当前Ubuntu是以客户端的方式运行的,主机端则是Windows。

如果出现了我们刚刚设置的共享文件夹,则说明前面的配置是正确的。 (2)创建hgfs目录

虽然这个目录路径、目录名字不是强制要求一定写成这个。但是Linux既然提供了mnt文件夹,就是希望我们把挂载的目录都放在这里进行管理,而hgfs则是见名知义,让其他人一看就知道这是Ubuntu和Windows之间传输文件的文件夹。

cpp 复制代码
mkdir /mnt/hgfs

(3)挂载共享文件夹

我们刚刚仅仅只是创建了一个文件夹载体,但是并没有实际和Windows的文件夹建立连接。

于是我们现在

cpp 复制代码
sudo /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000 -o umask=022

这句代码的含义解释如下,大家了解即可。市面上那么多软件我们不可能每个都会用,必要的时候查资料即可:

(4)验证是否挂载成功

四、设置开机自启动

首先用下面的命令使用vim打开这个配置文件。

其中etc是Linux下的核心配置文件目录,全称是Editable Text Configuration(可编辑文本配置)。你可以理解成文字版本的控制面板,当你对其中文件进行修改的时候,就是在打开Windows的控制面板进行一些配置项设置。

而fstab全称是 File System Table(文件系统表),他就是Linux专门用来管理文件挂载的配置文件,所以我们必须去修改这个文件,才能实现开机自动挂载的效果。

cpp 复制代码
sudo vim /etc/fstab
cpp 复制代码
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,uid=1000,gid=1000,umask=022 0 0

sudo mount -a这句代码就是在模拟开机自启动的环节,让Linux系统重新读取/etc/fstab文件,并且把里面所有的自动挂载配置项都执行一遍。这一步建议大家测试一下,毕竟有可能有的系统并不兼容这个配置项,导致Linux系统卡住都进不来命令行。(我之前在使用开发板的Linux系统时候,胡乱设置了一些配置项,导致Linux直接变砖,后面重新烧录系统才救回来)

注意:这里需要你当前的目录不在/mnt/hgfs下,否则可能出现busy的错误信息。

相关推荐
mzhan01724 分钟前
Linux: signal: SIGALRM; alarm: ITIMER_REAL
linux·运维·服务器
mzhan01740 分钟前
Linux: compare的直观性
java·linux·服务器
原来是猿1 小时前
TCP Server 业务扩展实战:从 Echo 到远程命令执行与词典翻译
linux·运维·服务器
剑神一笑2 小时前
Linux awk 命令:文本处理的瑞士军刀
linux·运维·chrome
han_hanker2 小时前
java stream的常用方法
windows
用户2367829801683 小时前
Linux df 命令深度解析:从磁盘空间监控到 inode 耗尽排查
linux
3301_3 小时前
Debian13 ThinkPad T490安装指纹解锁
linux
Mortalbreeze3 小时前
深度理解进程----进程状态
linux·运维·服务器
艾莉丝努力练剑3 小时前
【Linux网络】Linux 网络编程入门:TCP Socket 编程(下)
linux·运维·服务器·网络·c++·tcp/ip
宵时待雨3 小时前
linux笔记归纳4:进程概念
linux·运维·服务器·c++·笔记