一、前言

在使用 VMware 虚拟机搭建 Linux(以 Ubuntu 为例)环境时,常常需要实现主机与虚拟机之间的文件共享,HGFS(VMware Host-Guest File System)就是一种常用的文件共享方式。通过它,我们可以方便地在 Windows 主机(假设主机系统为 Windows ,也适用于其他支持 VMware 环境的系统)和 Linux 虚拟机之间传递文件,接下来一步步带大家掌握 HGFS 共享的配置与使用。

二、前期准备:确认共享设置及基础检查

(一)VMware 软件中设置共享文件夹

在 VMware 虚拟机软件里,找到对应 Ubuntu 虚拟机的设置选项,进入 “选项” 标签页,选择 “共享文件夹”,启用共享文件夹功能,并添加你想要共享的主机文件夹。这一步是让主机和虚拟机 “约定好” 要共享哪些内容,后续在 Linux 里配置就是让系统能访问到这些约定的共享资源 。

(二)检查虚拟机工具基础状态(vmware-hgfsclient 命令)

在 Ubuntu 虚拟机中,打开终端,以 root 用户身份(或用 sudo 提升权限)执行以下命令:

vmware-hgfsclient

解释:这个命令的作用是查看 VMware 识别到的共享文件夹名称。如果能正常列出共享的文件夹名称(比如示例中可能出现的 “Shared”“PC Tools” 等,实际根据你设置的来),说明 VMware 层面的共享配置基础是好的,后续可以继续进行软件安装和挂载操作;如果没有正确显示,要先检查 VMware 里共享文件夹的设置是否正确生效。

三、安装必要软件包

(一)尝试安装 open-vm-dkms

在终端执行:

apt-get install open-vm-dkms

解释apt-get 是 Ubuntu 等基于 Debian 系统的包管理工具,install 子命令用于安装软件包,open-vm-dkms 这个包是用于支持 VMware 相关功能的内核模块等,能帮助实现 HGFS 等特性。

常见易错点:如果执行后提示找不到该软件包,说明系统软件源里可能没有这个包的适配,或者需要换其他相关包来安装。

(二)备选安装 open-vm-tools-dkms(若上一步失败时用)

当上面安装 open-vm-dkms 失败,提示找不到软件包时,执行:

apt-get install open-vm-tools-dkms

解释open-vm-tools-dkms 也是用于支持 VMware 工具功能的软件包,和 open-vm-dkms 作用类似,只是包的组成和适配情况有差异,很多时候安装这个也能满足 HGFS 共享所需的基础软件环境 。

四、挂载共享文件夹

根据前面安装的软件包不同,挂载操作有细微区别,下面分别说明。

(一)若安装的是 open-vm-dkms

步骤 1:创建挂载目录

执行:

mkdir /mnt/hgfs

解释mkdir 是创建目录的命令,这里在 /mnt 目录下创建 hgfs 目录,作为后续挂载共享文件夹的 “挂载点”,也就是把共享的内容 “连接” 到这个目录下,之后访问这个目录就相当于访问共享文件夹内容 。

步骤 2:进行挂载

执行:

mount -t vmhgfs .host:/ /mnt/hgfs

解释mount 是挂载命令,-t 指定文件系统类型,这里 vmhgfs 就是 HGFS 对应的文件系统类型;.host:/ 表示主机端的共享资源位置(这是 VMware 约定的表示方式 ),把它挂载到我们刚创建的 /mnt/hgfs 目录,这样就可以通过访问 /mnt/hgfs 来操作共享文件了。

(二)若安装的是 open-vm-tools-dkms

步骤 1:同样先创建挂载目录

执行:

mkdir /mnt/hgfs

解释:和前面一样,先建立挂载的目标目录,作用也是作为访问共享内容的入口。

步骤 2:执行特定挂载命令

执行:

vmhgfs-fuse .host:/ /mnt/hgfs

解释vmhgfs-fuse 是配合 open-vm-tools-dkms 实现 HGFS 挂载的工具命令,同样 .host:/ 指向主机共享资源,挂载到 /mnt/hgfs 目录,完成后就能在该目录下看到共享的文件和文件夹了。

五、设置开机自动挂载(让挂载永久生效)

前面用 mount 命令挂载的话,一旦虚拟机重启,挂载就会失效,所以需要配置让系统开机自动挂载。

(一)编辑 /etc/fstab 文件

执行:

vim /etc/fstab

(如果没安装 vim ,也可以用 nano 等编辑器,比如 nano /etc/fstab ,nano 相对更简单,适合初学者,按提示操作即可保存退出 )

解释/etc/fstab 文件是系统用于配置自动挂载的配置文件,系统开机时会读取这里的配置来自动挂载相应的文件系统。

(二)添加挂载配置行

根据安装的软件包不同,添加对应的内容:

  • 如果是 open-vm-dkms ,添加:
.host:/ /mnt/hgfs vmhgfs defaults 0 0

  • 如果是 open-vm-tools-dkms ,添加:
.host:/ /mnt/hgfs fuse.vmhgfs-fuse defaults 0 0

解释:这几列的含义分别是:要挂载的设备(这里 .host:/ 代表主机共享资源 )、挂载点(/mnt/hgfs )、文件系统类型(对应 vmhgfs 或 fuse.vmhgfs-fuse )、挂载选项(defaults 表示使用默认选项,比如可读写等 )、dump 选项(一般设 0 ,不备份 )、fsck 检查顺序(设 0 ,不优先检查 )。添加后保存文件,下次开机就会自动挂载了。

六、常见问题及解决(拓展知识)

(一)挂载时提示 “目录非空”

如果执行挂载命令时,提示类似 “mount: /mnt/hgfs: 目录非空” 的错误,这是因为 mount 命令默认要求挂载点目录是空的。解决方法是在挂载命令里加上 -o nonempty 参数,比如:

  • 对于 open-vm-dkms 对应的挂载命令:
mount -t vmhgfs -o nonempty .host:/ /mnt/hgfs

  • 对于 open-vm-tools-dkms 对应的挂载命令:
vmhgfs-fuse -o nonempty .host:/ /mnt/hgfs

解释-o 选项用于指定挂载的额外参数,nonempty 就是告诉系统即使挂载点目录非空,也继续执行挂载操作 。

(二)软件包安装依赖问题

在安装 open-vm-dkms 或 open-vm-tools-dkms 时,可能会遇到依赖缺失的情况,系统会提示需要安装哪些依赖包。一般可以按照提示,用 apt-get install 加上对应的依赖包名称来安装,比如提示需要 xxx 依赖,就执行 apt-get install xxx ,然后再重新安装原来的软件包。这是因为 Linux 软件包之间相互依赖,需要把相关依赖都装好才能正常安装目标软件包 。

(三)VMware 工具版本适配问题

有时候可能因为 VMware 软件版本和 Linux 系统版本(尤其是内核版本)不匹配,导致安装的 open-vm-* 系列软件包不能正常工作。这种情况可以尝试更新 VMware 软件到最新版本,或者查看官方文档,了解对应的软件包适配情况,也可以尝试升级 Linux 系统的内核(不过升级内核要谨慎,可能影响其他功能 ),或者更换其他版本的 open-vm-tools 相关软件包(比如有的系统用 open-vm-tools 基础包配合其他组件也能实现功能 )。

七、总结

通过以上步骤,从前期在 VMware 里设置共享文件夹,到在 Linux 中检查基础状态、安装必要软件包、进行挂载操作,再到配置开机自动挂载以及解决常见问题,就能完整实现 Linux(Ubuntu)与主机之间的 HGFS 文件共享啦。对于初学者来说,按照步骤一步步操作,遇到问题多结合错误提示和文中的常见问题解决方法排查,就能逐步掌握 HGFS 共享的配置与使用,后续也可以基于这种文件共享方式,更方便地在虚拟机和主机之间传输文件、进行开发测试等工作啦,大家快去动手试试吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88905.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88905.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/88905.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模块化设计赋能:定制组装锂电池设备的柔性生产解决方案

在锂电池行业快速迭代的背景下,定制化需求与规模化生产之间的矛盾日益凸显。传统锂电池组装设备采用固定式架构,功能模块高度耦合,导致设备换型周期长、兼容性差,难以适应电芯规格频繁变化、工艺路线持续升级的市场需求。模块化设…

Kubernetes 架构原理与集群环境部署

一:为什么需要 Kubernetes在业务开始进行容器化时,前期需要容器化的项目可能并不多,涉及的容器也并不多,此时基于 Docker 容器直接部署至宿主机也能实现基本的需求。但是随着项目越来越多,管理的容器也会越来越多&…

JavaScript中关于环境对象的拓展

1.环境对象的定义环境对象指的是函数内的特殊变量this,this指向函数的调用者它代表当前函数的运行环境在平常我们判断this经常用口诀谁调用它,它就指向谁,以下是几种常见情况1. 在全局作用域中,this指向window2.在函数中&#xff…

202507中央城市工作会议

国家终于要给城市"升级系统"了!未来城市不再拼命盖新楼,而是让现有城区更安全、舒适、智能,且每个城市都要找到自己的特色发展路径 2025年7月北京“中央城市工作会议”。领导人聚在一起,讨论“怎么把中国城市搞得更好”…

springboot如何redis锁

如何解决超卖问题?超卖问题:就是多个线程并发执行,目前唯一方案是加锁。如图:悲观锁其实还有数据库的互斥锁。悲观锁是最常见的乐观锁实现的原理:版本号:这种方案就是:扣款库存的时候首先先查询版本号&…

minio批量删除对象不生效

下午在写minio上批量删除对象的逻辑,各种改对象名称,各种核对代码,发现啥都没错,但是删除就是不生效。 代码如下: from minio.deleteobjects import DeleteObjectdelete_object_list [DeleteObject("20250626/20…

如何设计实现开发自助重启工具-01-设计篇

自助重启系列 如何设计实现开发自助重启工具-01-设计篇 应用部署作业-02-流程 如何实现自助重启-03-实现篇 开发自助重启 说明:有时候研发产线需要重启,为了保证安全、或者说提升效率,最好有一个统一的研发自助重启页面。 这个功能可应…

ChatTongyi × LangChain:开启多模态AI应用创新之门

阿里云通义实验室推出的ChatTongyi(基于通义千问大模型)与LangChain框架的深度集成,为开发者打造了一套高效、灵活、全面的AI开发工具链。无论是文本对话、复杂任务自动化,还是图像理解,这一组合都为多场景智能应用的落…

Android Studio C++/JNI/Kotlin 示例 二

MainActivity.ktpackage com.demo.learn1import android.os.Bundle import android.util.Log import androidx.activity.ComponentActivityclass MainActivity : ComponentActivity() {// 加载原生库init {System.loadLibrary("native_code")}// 声明原生方法// 数学…

B树和B+树

B树B树,⼜称多路平衡查找树,B树中所被允许的孩⼦个数的最⼤值称为B树的阶,通常⽤m表示。⼀棵m阶B树或为空树,或为满⾜如下特性的m叉树: 1)树中每个结点⾄多有m棵⼦树,即⾄多含有m-1个关键字。 2…

【版本控制】Perforce Helix Core (P4V) 完全入门指南(含虚幻引擎实战)

目录引言第一章:认识 Perforce Helix Core1.1 什么是 Perforce?1.2 P4V 是什么?1.3 核心概念速览1.4 为什么选择 Perforce?1.5 与 Git 的核心区别本章总结第二章:安装与配置2.1 安装原则:先服务端后客户端2…

LlamaFactory/unsloth Demo

内部叫Tuning-Factory 参数文档https://llamafactory.readthedocs.io/zh-cn/latest/index.html 高级技巧,如加速:https://llamafactory.readthedocs.io/zh-cn/latest/advanced/acceleration.html 0.环境 conda env list conda remove --name llm --all c…

水务工程中自动化应用:EtherNet/IP转PROFIBUS DP连接超声波流量计

在水务工程领域,自动化技术的应用愈发广泛。随着工业4.0概念的普及,不同通信协议的设备之间实现高效互联互通变得尤为关键。EtherNet/IP和PROFIBUS DP作为两种常见的工业通信协议,各有优势,在实际应用中,常需要将它们进…

网络协议和基础通信原理

网络协议和基础通信原理是理解互联网和各种网络应用的关键。让我用通俗易懂的方式,带你逐一深入讲解这些内容。 一、基础概念总览 TCP/IP协议族:互联网通信的基础,由一组协议组成,包括TCP、IP、UDP等。HTTP协议:基于T…

T16IZ遥控器教程__遥控器与无人机对频

文章目录前言一、准备设备二、对频步骤总结前言 在使用自组PX4无人机时,有的小伙伴可能会遇到遥控器无法与无人机对频连接的问题,别担心,这篇文章会解决它。 一、准备设备 如下图,无人机信号接收器,与无人机。 遥控器…

pyspark中map算子和flatmap算子

在 PySpark 中,map 和 flatMap 是两个常用的转换算子,它们都用于对 RDD(弹性分布式数据集)或 DataFrame 中的元素进行处理,但处理方式和应用场景有所不同。下面详细讲解它们的用法和适用场景。1. map 算子功能对 RDD 或…

jenkins部署前端vue项目使用Docker+Jenkinsfile方式

文章目录前言一、前提准备二、准备构建文件三、Jenkins中构建项目总结前言 前面通过jenkinsdocker的方式部署了若依前端vue项目,接下来接着学习使用Jenkinsfile的方式部署前端vue项目。 一、前提准备 已经安装好centos服务器,并且安装了jenkins和docke…

Cadence操作说明

一.allegro修改丝印字体大小的方法 1.选择Edit–>Change,右侧弹出Options选项,选择Class : New subclass Ref Des : Silkscreen_Top,设置Text block,后面的数字代表字号的大小。菜单菜单栏选择Setup–>Design Parameters&a…

使用Stitch来生成CrypyTrack的app程序

结果: 🧭 第一步:访问 Stitch 平台 打开网址:stitch.withgoogle.com使用你的 Google 账号登录,无需安装任何软件 🧱 第二步:选择设计模式 Stitch 提供两种模式: 标准模式&#xf…

告别繁琐:API全生命周期管理的新范式——apiSQL

API(应用程序接口)是连接数据与服务的生命线,是数字世界的基石。然而,一个高质量API的诞生并非易事,它涉及一个漫长而复杂的全生命周期——从规划设计到最终退役,每个环节都需要专门的工具和技能&#xff0…