基于ViutualBox+Ubuntu(Linux)的开发环境搭建

news2024/10/6 21:01:18

实际在选择虚拟机的时候纠结了要用virualbox还是vmware,初步比较结果:

1.virualbox能够使用vmware的硬盘格式,因此可以自由选择。

2.都能够实现主机和宿主机之间的文件夹共享。

3.virualbox是自由软件,vmware是商业软件。

在功能上二者都能满足条件,但是基于第三点我选择了virualbox。

安装VirtualBox

可自行网上下载,本人使用的是VirtualBox-6.1.22-144080-Win

具体安装过程参考这篇文章(只用看安装的部分):

Windows 10 安装Virtualbox 6.1.22详细教程_virtualbox-6.1.22-144080-win-CSDN博客

注意:上文内说到的扩展包暂不安装,有需要再说。

补充说明:

安装过程中,基本一路向前即可,只不过,安装的位置可以根据自己的情况调整下,我一般不会放在系统盘。

安装后的界面如下所示:

比较简洁。

安装Ubuntu

安装完虚拟机,就要继续安装Linux系统了,是基于Ubuntu版本。

具体安装过程参考这篇文章(只用看安装Ubuntu的部分):

虚拟机||使用VirtualBox安装Ubuntu详细图文教程(安装+调整分辨率+共享文件)_virtualbox安装ubuntu12-CSDN博客

上文内除了安装Ubuntu部分,其他内容都可以不看。

补充说明:

---

内存可以根据自己的情况来设置;

---

磁盘存储空间,一定要在安装的时候就设置好,如果要很大的空间,比如512G,安装时如果给小了,安装完成后再想扩展容量,就很麻烦了;

如果确实安装时的存储空间设置小了,就得删除系统,重新安装。

如何彻底删除?参考这篇文章:

我是想将virtualbox中的Ubuntu系统彻底删除 - CSDN文库

---

存储空间的分配有两种方式,我推荐选择固定大小;

VirtualBox在创建虚拟磁盘时可以选择动态扩展和固定大小两种方式,然后设定磁盘空间大小。

动态扩展类型:

最初只需占用非常小的物理硬盘空间。然后不断增加(最大到当前指定的大小),具体大小根据虚拟电脑的实际需求动态分配。
固定大小类型:

一旦建立就需分配指定大小的物理磁盘空间给该虚拟硬盘使用,性能上有一定优势。建立这种类型的虚拟硬盘需花费较多的时间。

创建500G固定大小的硬盘,特别慢。显示需要38分钟。

耐心等待即可。

设置全屏(安装增强功能)

默认安装的ubuntu分辨率较小,没法全屏。

为了能够全屏显示,一个比较好的方法就是安装自带的增强工具。

所以要先安装增强工具,也不是那么好安装的。

先点击设备-安装增强功能

这时候,没有任何反应。。。。。。

往往会卡在这里。

其实,是已经生成了一个安装盘片,需要我们手动安装。

接下来,回到虚拟机界面点击设置。

然后选择存储-点击盘片-选择增强功能的安装文件

不过,这里又有个坑,那就是不一定能看到VBoxGuestAdditions.iso这个文件,如果有直接选择(别错选了其他的iso文件),如果没有,就要点击这里

点击进去选择即可。

选择后确定无误,就可以重启ubuntu了。

此时,在ubuntu里就会多一个盘符。

双击光盘打开盘符

可以看到有个运行文件,在该文件上右键——在终端打开——输入如下命令:

sudo sh VBoxLinuxAdditions.run

输入密码,等待安装完成即可。

至此,增强工具就会安装完成。

重启系统。

这时会发现 ”视图“ 里的“自动调整显示尺寸”变亮了,点击就可以是显示窗口自动填满界面。

另外,在视图菜单的最后一项“虚拟显示屏1”里也可以选择一个固定的分辨率。

主机和虚拟机之间复制粘贴

默认情况下,主机和虚拟机之间是没法相互复制粘贴的。

安装增强工具后,经过简单设置,就能实现这个功能。

参考这篇文章即可:

virtualBox实现windows和Ubuntu之间的复制粘贴_virtual box主机和ubuntu互相粘贴-CSDN博客

更多略。

配置Samba服务

Samba是个啥?

Samba是在Linux系统上实现SMB(Session MessageBlock)协议的一个免费软件,以实现文件共享和打印机服务共享。 

在嵌入式系统开发应用平台中,tftp、nfs和samba服务器是最常用的文件传输工具,tftp和nfs是在嵌入式Linux开发环境中经常使用的传输工具,samba则是Linux和Windows之间的文件传输工具。

samba是模仿Windows网上邻居的SMB的通讯协议,将Linux操作系统“假装成”Windows操作系统,通过网上邻居的方式来进行文件传输的。

samba最先在Linux和Windows两个平台之间架起了一座桥梁,正式由于Samba的出现,我们才可以在Linux系统和Windows系统之间互相通信,如复制文件,实现不同操作系统之间的资源共享等,可以将其架设成一个功能非常强大的文件服务器,也可以将其架设成打印服务器提供本地和远程联机打印。

也就是说,如果想要实现主机和虚拟机之间的两个系统之间共享目录文件,我们就可以使用samba服务。

那么,如何在Linux下部署samba服务呢?

直接参考这篇文章:

【详细步骤】Ubuntu安装Samba服务及配置共享文件夹_ubuntu samba-CSDN博客

这篇文章提供相关指令参考:

ubuntu下Samba服务器的搭建_ubuntu下搭建samba服务齐全-CSDN博客

修正:sudo /etc/init.d/smbd start

补充说明:

---

不必像上文中说的那样配置静态ip,使用默认的ip设置方式即可,也不必和主机在同一网段。

---

如何查看samba服务是否已经开启?

使用以下语句:

sudo systemctl status smbd.service

这个命令将显示Samba服务的状态信息,如果服务正在运行,则说明重启成功。如果服务未运行,你可以尝试其他方法来解决问题,比如查看错误日志或重新安装Samba服务。

---

服务开启后,先在主机上ping一下Linux系统;同时在Linux上也ping一下主机;保证二者可以互相访问。

在主机和Linux上都ping下外网(比如www.baidu.com),保证都能访问外网。

---

注意配置虚拟机上网卡的模式,一般都会配置双网卡。

参考:VirtualBox 使用 NAT网络、仅主机(Host-only)网络 实现双网卡上网并与宿主机连接。_virtualbox host only-CSDN博客

这篇文章主要看各种模式之间的区别。

我们实际配置中,两个网卡,一个网卡选择“网络地址转换(NAT)”,用来让虚拟机访问外网;一个选择“仅主机(Host-Only)网络”,用来和主机间互联。

一般只有这样配置之后才能ping通。

---

通过win+R在主机访问时,可以直接输入\\ip,就会跳入共享的目录

注意,通过主机访问,名字都是统一的叫share,不管你在linux里给共享文件夹取的是什么名字,比如,我在linux里取的共享文件夹的名字是myshare

不过在windows下远程访问时,仍然是叫share

不过注意,在该share目录上映射成网络时,需要添加\\ip\share

这里有个问题注意下:

是映射成网络驱动器,而不是在我的电脑那里添加一个网络位置。

windows中添加一个网络位置与映射网络驱动器的区别-CSDN博客

注意,一定要映射成网络驱动器,要不然到时用查看代码工具时访问不到该目录。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32 入门教程(江科大教材)#笔记2

3-4按键控制LED /** LED.c**/ #include "stm32f10x.h" // Device headervoid LED_Init(void) {/*开启时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟/*GPIO初始化*/GPIO_InitTypeDef GPIO_InitStructure;GPIO_I…

go 微服务框架kratos使用中间件的方法

一、中间件的概念 在go语言中,中间件是一种用于处理http请求的开发模式,允许开发人员在请求到达处理程序之前或之后执行特定的操作,如日志记录、身份验证、错误处理等。 中间件通常是一个函数,它接收一个 http.Handler 作为参数…

解读makefile中$(patsubst pattern,replacement,text)

在 Makefile 中,$(patsubst pattern,replacement,text) 是一个用于模式替换的函数,它可以将文本中符合指定模式的部分替换为指定的字符串。这个函数通常用于对文件名或路径进行模式匹配和替换,非常适合在 Makefile 中进行文件名的转换操作。 …

队列的特性及代码实现(C语言)

目录 队列的定义 队列的实现分析 代码实现 Queue.h Queue.c 队列的定义 队列是只允许在一端进行插入操作,而在另一段进行删除操作的线性表。 首先,让我们来看一看生活中的队列,当我们去银行办理业务的时候,我们进入银行的时候…

CANDela studio使用小tips

打开软件的时候注意先选择英文,因为双击CDD/CDDT文件默认打开的是德文,所以最正确的打开方式是先打开CANDela studio,再导入CDD,不仅可以避免用德文打开,还能避免vector软件的bug。 不同的版本有不同的权限。 admin有…

【一竞技DOTA2】RAMZES666替补参加裂变联赛

1、根据主办方文件,RAMZES666将继续作为Tundra战队替补参加裂变联赛。该比赛为欧洲线上赛,于5月27日-30日举行,总奖金8万美元。 除此之外,Nigma战队在上个月宣布四号位Matthew离队后,也选择启用老队员GH参赛。而在本月初让ah fu转回教练、携替补Thiolicor出战PGL瓦拉几亚的Secr…

《Navi日语社》App支持日语翻译、日文OCR文字识别提取、文字转语音和语音识别功能!

随着中日交流日益频繁,学习日语和日语翻译的需求也愈发强烈。为满足广大用户的需求,《Navi日语社》App应运而生,成为您日语学习与翻译的不二之选! 日语翻译,准确无误。凭借先进的机器翻译技术,我们的App可…

Qt串口异步通信案例(从机线程)

文章目录 串口线程类初始化串口类打开串口并发送数据析构函数 窗口设置窗口函数实现 串口线程类 SlaveThread(从机线程) 目的:等待并响应来自主机的请求,然后发送预设的响应数据。 关键行为:线程启动后,通过…

打造爆款活动:确定目标受众与吸引策略的实战指南

身为一名文案策划经理,我深知在活动策划的海洋中,确定目标受众并设计出能触动他们心弦的策略是何等重要。 通过以下步骤,你可以更准确地确定目标受众,并制定出有效的吸引策略,确保活动的成功: 明确活动目…

C++线程任务队列模型

功能描述 实现一个任务队列,用于任务的执行 任务队列 任务队列可以添加、删除任务,实现对任务的管理添加任务后,任务队列可以开始执行任务队列执行任务方式为串行执行 任务 任务执行需要持续一段10s内随机的时间,执行过程通过…

npm install node-sass 安装失败的解决方案:利用国内镜像加速安装

在开发前端项目时,使用Sass作为CSS预处理器是很多开发者的选择。然而,在通过npm安装其Node.js绑定库node-sass时,一些开发者可能会遇到安装失败的问题,尤其是网络原因导致的下载缓慢或中断。本文将指导你如何通过更换为国内镜像源…

联邦和反射器实验

拓扑图 一.实验要求 1.AS1存在两个环回,一个地址为192.168.1.0/24,该地址不能在任何协议中宣告 AS3存在两个环回,一个地址为192.168.2.0/24,该地址不能在任何协议中宣告 AS1还有一个环回地址为10.1.1.0/24&#xff…

【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路

目录 一、污点(Taint) 1.1污点介绍 1.2污点的组成格式 1.3当前 taint effect 支持如下三个选项: 1.4污点的增删改查 1.4.1验证污点的作用——NoExecute 1.4.2验证污点的作用——NoSchedule 1.4.3 验证污点的作用——PreferNoSchedule 1.5污点的配置与管理…

Python散点图矩阵代码模版

本文分享Python seaborn实现散点图矩阵代码模版,节选自👉嫌Matplotlib繁琐?试试Seaborn! 散点图矩阵(scatterplot matrix)展示原始数据中所有变量两两之间关系,可以规避单一统计指标的偏差&…

[Algorithm][动态规划][子数组/子串问题][最大子数组和][环形子数组的最大和][乘积最大子数组][乘积为正数的最长子数组长度]详细讲解

目录 1.最大子数组和1.题目链接2.算法原理详解3.代码实现 2.环形子数组的最大和1.题目链接2.算法原理详解3.代码实现 3.乘积最大子数组1.题目链接2.算法原理详解3.代码实现 4.乘积为正数的最长子数组长度1.题目链接2.算法原理详解3.代码实现 1.最大子数组和 1.题目链接 最大子…

ClickHouse数据管理与同步的关键技术

2024年 5 月 18 日,ClickHouse官方首届杭州 Meetup 活动成功举行。本次活动由 ClickHouse 和阿里云主办,NineData 和云数据库技术社区协办。围绕ClickHouse的核心技术、应用案例、最佳实践、数据管理、以及迁移同步等方面,和行业专家展开交流…

UE5 读取本地图片并转换为base64字符串

调试网址&#xff1a;在线图像转Base64 - 码工具 (matools.com) 注意要加&#xff08;data:image/png;base64,&#xff09; FString UBasicFuncLib::LoadImageToBase64(const FString& ImagePath) {TArray<uint8> ImageData;// Step 1: 读取图片文件到字节数组if (!…

嵌入式linux系统中NFS文件系统挂载详细实现

大家好,今天主要给大家分享一下,如何利用linux系统实现NFS文件系统挂载的方式与实现。 第一:linux-NFS挂载的目的 1、掌握 Ubuntu 系统 NFS 文件共享服务的安装及配置 2. 掌握嵌入式 Linux 系统通过 NFS 共享服务和 X86 宿主机进行数据共享,文件共享的方法。 …

【Unity脚本】Unity中如何按类型查找游戏对象(GameObject)

【知识链】Unity -> 脚本系统 -> 访问游戏对象 -> 按类型访问游戏对象摘要&#xff1a;本文介绍了Unity中按类型查找游戏对象&#xff08;GameObject&#xff09;的五种方法&#xff0c;并提出了使用这些方法的最佳实践。 本文目录 一、访问游戏对象的方法二、如何按…

【oracle】Oracle RAC中的GNS到底是什么?

本文为云贝教育 刘峰 原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载 一、概述 Oracle Grid Naming Service (GNS) 是Oracle Grid Infrastructure的一个重要组件&#xff0c;它提供了一种集中式的命名服务&…