基于VirtualBox和Ubuntu的虚拟环境搭建
VirtualBox简介
VirtualBox 是一款开源虚拟机软件。 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。简单易用,可虚拟的系统包括Windows(从Windows 3.1到Windows 10、Windows Server 2012,所有的Windows系统都支持)、Mac OS X、Linux、OpenBSD、Solaris、IBM OS2甚至Android等操作系统。
VirtualBox的安装与配置
本实验使用VirtualBox-7.0.10 进行演示。对于安装包,大家可以前往 VirtualBox官网下载页面https :/ / www. virtualbox.org/wiki/Downloads下载其7.0版本安装包进行安装。
安装的过程中,为了避免C盘空间不足,请选择D盘或者其他盘的一个空文件夹作为安装路径(必须是空文件夹),其它直接默认就可以了。
安装完成以后,进入VirtualBox-7.0.10主页面,如图所示
配置虚拟机的默认位置
首选在D盘(或在安装时选择的其他盘处)建一个空文件夹VirtualBox VMs,然后在VirtualBox的首页,点击“管理”→“全局设定”进入全局设定界面,设置虚拟机的默认存放位置为“D:\VirtualBox VMs”,最后点击“确定”按钮保存修改。
配置虚拟网络
为了实现多台虚拟机之间的网络联通,在VirtualBox安装完成后首先创建一个主机网络(Host-Only Ethernet Adapter)。选择菜单栏中的“管理”→“工具”→“主机网络管理器”打开主机网络管理器
然后单击“创建”按钮可以新建一个VirtualBoxHost-Only Ethernet Adapter。在创建过程中可能会遇到系统权限请求,允许即可,VirtualBox Host-Only Ethernet Adapter创建好之后,在主机网络管理器下方的网卡选项中选择手动配置网卡,将IPv4地址设置为192.168.56.1,IPv4网络掩码设置为255.255.255.0 , IPv6地址及网络掩码长度不需要修改。在VirtualBox 7.0版本中,系统已经自动为我们创建好了一个VirtualBoxHost-Only Ethernet Adapter。
同时,注意建议保持DHCP服务器开启
Ubuntu虚拟主机的创建和配置
在VirtualBox主界面,单击“控制“→“新建”按钮创建3台虚拟主机。
这里需要设置虚拟机的名称,在本实验中建议将3台虚拟主机分别命名为master,slave1,slave2,以便识别。类型选择“Linux”,版本选择“Ubuntu(64-bit)”或“Other Linux(64-bit)”,单击“下一步”按钮可以进行虚拟机配置的设置。
接着,将虚拟主机内存至少设置为2GB(即2048MB),以保证运行流畅。
接着,为虚拟主机机创建足够大小的虚拟硬盘,至少30G。 
在如图所示的界面为虚拟机的配置,点击完成即可。 
在创建完成后,选中虚拟机,打开右侧的虚拟机设置,点击“设置”按钮,进行网络设置
其中网卡1默认为“网络地址转换(NAT)”,不需要更改

选择网卡2,选中“启用网络连接”复选框,连接方式选择“仅主机(Host-Only)网络”,界面名称选择前面建立的VirtualBox Host-OnlyEthernet Adapter。
在高级选项中设置混杂模式为“全部允许”,其他选项保持默认。

Ubuntu的安装
在如图所示的界面中,点击“启动”按钮,启动虚拟主机.接着,启动界面的光驱弹窗中,选择加载Ubuntu的ISO镜像文件位置,即可在虚拟主机上进行ubuntu的安装。本实验选用的是ubuntu-20.04-desktop-amd64的64位版本﹐可以前往ubuntu-官网或各镜像站自己进行ISO镜像文件下载:https://old-releases.ubuntu.com/releases/focal/ubuntu-20.04-desktop-amd64.iso
选择好ISO镜像文件后,单击“挂载并尝试启动”,然后在ubuntu的安装引导页面,默认第一个选项,按ENTER键进入下一步。接着在ubuntu的语言选择页面,选择安装语言,并点击“安装Ubuntu”

另外,如果在操作的过程,系统弹窗提示是否进入鼠标和键盘的独占模式,请选择取消,具体如图,如果不小心进入了鼠标和键盘的独占模式,可以按下右Ctrl键来退出独占模式 
后续步骤直接点击“继续”即可



默认所在城市,点击“继续”进入下一步

设置用户名和密码,点击“继续”进入下一步 
来到该界面,需要下载一些组件,所以有点慢,请耐心等待。同时,为了避免出现奇怪的问题,请保持网络畅通。在安装完毕之后,会提示喊重启,按提示进入下一步重启就可。

如果此步出现异常,那么请强行退出,在virtual Box中手动重新启动(或者在重启时等待太长时间,也可这样)

重启后,输入密码,就可以进入ubuntu了 (欢迎程序可以跳过)点击鼠标右键,选中“打开终端”进入Shell。(另外,如果系统提示更新,请拒绝更新)

首先、如下图所示,点击“安装增强功能”选项安装增强功能 。然后、在该图的中“共享粘贴板”中,将粘贴板共享设置为“双向”,关闭虚拟机,重启生效。最后,在重新启动后,为了获得更好的视觉效果,建议在“视图”中,将视图设置为“无缝模式”。

我们可以使用命令:ip addr show查看主机所有IP ,同时,我们也可以使用ifconfig -a 查看当前主机所有的额IP。只是在ubuntu 20.4中,我需要先使用以下命令安装网络相关工具
sudo apt install net-tools
然后输入ifconfig -a命令查看当前网卡状态。可以看到enpos3网卡与enp0s8网卡, enp0s3网卡是虚拟机网络设置中的网卡1,负责通过主机连接互联网;enp0s8为Host-Only网络,负责虚拟局域网内互通。不同机器的网卡名称可能不同,且 Host-Only 网卡默认为关闭状态。
SSH配置
为了方便通过SSH协议远程连接ubuntu主机,需要安装SSH服务端,命令如下:
sudo apt install openssh-server -y
如果SSH服务端,,使用ssh无法登录该主机,遇到类似的问题
ssh Connection reset by 192.168.56.103 port 22
重装SSH服务成为唯一的解决方法
#卸载ssh服务
sudo apt remove --purge openssh-server -y
#参数说明
--purge #软件和配置文件也一起卸载#安装ssh服务
Windows中Git安装和远程连接
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理件,它本身支持SSH1, SSH2。因此,它有和XShell类似的功能,我们也可以通过它非常方便的连接我们的Ubuntu主机。(虽然Git和XShell部分功能类似,但是Git更简洁,功能更强大。因此,在本实验,主要使用Git进行演示)
Git的安装包,可以通过其官网git-scm.com或者gitforwindows.org进行下载。下载后,一路使用默认安装就可以完成安装了。安装完成后,我们可以通过win菜单“所有应用”→“Git”→“Git Bash”或者鼠标右键弹窗的“显示更多选项”→“Git Bash Here”进入Git的命令行。
我们可以直接使用“ssh master@192.168.56.17”远程连接我们的ubuntu主机 
如果使用ssh进行远程连接的时候,出现了类似的以下错误:
no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
那么请使用以下命令进行清理,然后再重试
ssh-keygen -R 192.168.56.27
安装vim软件包
Vim是一个类似于Vi的高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。
(以下操作在Git中执行)在命令行执行该命令来安装vim
sudo apt install vim
开启root用户
ubuntu中,默认没有开启root用户,不过可先通过以下命令来设置root的密码,启动root用户
sudo passwd root

启动root用户后,我们可以通过su命令从当前用户切换到root用户 (注意当切换到root用户后,$变成了#.切换到root用户后,就不会再因为权限不足,而使用sudo)
在SSH中,允许root用户直接登录
对于SSH,编辑 /etc/ssh/sshd_config 文件(在命令行敲出该段命令):
sudo vim /etc/ssh/sshd_config
找到 PermitRootLogin 这一行,(按‘ i ’进入插入模式)并将其修改为:
PermitRootLogin yes
保存(按‘:’并输入qw退出插入模式)再关闭文件,并重新启动。
这样就可以远程使用SSH直接进行root用户的登录。
比如,ssh root@192.168.56.200
静态IP配置
我们安装的master主机属于ubuntu 20.04,需要通过以下指令更改配置文件,实现第二网卡enp0s8的静态IP配置:
sudo vim /etc/netplan/01-network-manager-all.yaml
在文件中添加如下信息(格式必须一致):
ethernets:enp0s8:dhcp4: falseaddresses: [192.168.56.200/24]gateway4: 192.168.56.1
若要改ip,则在addresses那一行进行ip修改
格式如图所示:
注意1:如果第一次执行vim,会出现vim命令找不到的提示,请执行该命令来安装vim。
sudo apt install vim
注意2:enp0s8需要替换为自己的对应的网卡名称。修改完成后保存文件﹐输入以下指令启动网卡:
sudo netplan apply
至此,master虚拟机的安装完成,slave1和slave2的安装与配置同master一致,可参考master的配置。
同时建议将slave1和slave2这三台主机设置为静态IP:192.168.56.3,192.168.56.4。
即master、slave1和slave2这三台主机的静态IP分别为:192.168.56.200,192.168.56.3,192.168.56.4
相关文章:
基于VirtualBox和Ubuntu的虚拟环境搭建
VirtualBox简介 VirtualBox 是一款开源虚拟机软件。 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。简单易用,可虚拟的系统包括Windows&…...
【PHP源码】匿名来信系统H5版本V1.0免费开源
你的匿名来信H5一封你的来信源码/表白祝福短信程序/往来信/传话短信源码支持邮件发信与手机短信发信“你的匿名来信”是最近某音上爆火的一个活动话题,可以通过H5网站,编辑自己想要对某人说的话或者祝福,网站会把您想说的发给您预留的号码&am…...
Prompt技巧总结和示例分享
"Prompt"(提示)在人工智能中通常指的是输入给模型的文本,用于引导模型生成预期的输出。在使用人工智能助手时,有效的提示技巧可以帮助你获得更准确和有用的回答。 以下是一些单轮对话提示时的技巧: 明确具体…...
大厂校招:海能达嵌入式面试题及参考答案
SPI 协议的一些基础知识 SPI(Serial Peripheral Interface)即串行外设接口,是一种高速的、全双工、同步的通信总线。 SPI 主要由四根信号线组成: 时钟线(SCLK):由主设备产生,用于同步数据传输。时钟的频率决定了数据传输的速度。主设备输出 / 从设备输入线(MOSI):主…...
wrk(1) command
文章目录 1.简介2.特点3.格式4.选项5.示例参考文献 1.简介 wrk 是一个现代的 HTTP 压力测试工具,利用现代多线程技术和高效的网络 I/O 处理,能够生成大量的并发请求,用以测试 HTTP 服务器的性能。 它是作为一种更现代的压力测试工具而设计的…...
【小程序 - 大智慧】Expareser 组件渲染框架
目录 问题思考课程目标Web Component类型说明定义组件属性添加 Shadow DOMTemplate and SlotExparser 框架原理自定义组件内置组件 下周计划 问题思考 首先,给大家抛出去几个问题: 前端框架 Vue React 都有自己的组件库,但是并不兼容&#…...
vue + echarts 快速入门
vue echarts 快速入门 本案例即有nodejs和vue的基础,又在vue的基础上整合了echarts Nodejs基础 1、Node简介 1.1、为什么学习Nodejs(了解) 轻量级、高性能、可伸缩web服务器前后端JavaScript同构开发简洁高效的前端工程化 1.2、Nodejs能做什么(了解) Node 打破了…...
服务器几核几G几M是什么意思?如何选择?
服务器几核几G几M是什么意思?我们建站、搭建网络平台都要用到云服务器,不管在腾讯云、阿里云还是别的云服务平台选购,都会接触到服务器配置。云服务器就是把物理服务器(俗称“母鸡”),用虚拟机技术虚拟出多…...
K8S服务发布
一 、服务发布方式对比 二者主要区别在于: 1、部署复杂性:传统的服务发布方式通常涉及手动配置 和管理服务器、网络设置、负载均衡等,过程相对复 杂且容易出错。相比之下,Kubernetes服务发布方式 通过使用容器编排和自动化部署工…...
Allen Institute for Artificial Intelligence (Ai2) 发布开源多模态语言模型 Molmo
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
Html CSS 布局,位置处理 居中 对齐
Html CSS 布局,位置处理 1、居中布局 1、div 让内部div居中对齐 html <div class"container"><div class"item">I am centered!</div> </div>style .container {border: 2px solid rgb(75, 70, 74);border-radius:…...
Spring MVC系统学习(二)——Spring MVC的核心类和注解
Spring MVC(Model-View-Controller)是Spring框架的一个模块,用于构建基于Web的应用程序。它使用模型、视图和控制器分离的设计模式,使得Web开发更加模块化和灵活。在学习Spring MVC时,有几个核心类和注解是非常关键的&…...
conda虚拟环境安装包、依赖同一管理
在 Python 的虚拟环境中,每个环境都是独立的,这意味着即使两个环境需要相同的库,它们也会分别安装各自的副本。这样做是为了避免不同项目之间相互影响,确保每个项目都有一个干净且隔离的环境。 方法一:使用 Conda 的共…...
Unity网络开发记录(四):在unity中进一步封装客户端类
在上一篇文章中,简单的封装了一下服务端中相关的socket对象,为了可以更方便的使用。所以在本篇中,进一步封装一下在unity中的相关客户端类 封装客户端类,首先采用单例模式,然后采用两个队列来存储我们相关的收发信息 p…...
Linux内核中的UART驱动-详解Linux内核UART驱动:结构与功能分析
一、UART概述 UART(Universal Asynchronous Receiver/Transmitter),即通用异步收发器,是一种串行通信接口,用于在计算机和外部设备之间传输数据。它特别适用于短距离、低速、串行和全双工的数据传输。在Linux内核中&a…...
威胁检测与防范:如何及时、准确对抗安全风险
随着技术的飞速发展,网络空间中的威胁日益多样化、隐蔽化,给个人、企业乃至国家的信息安全带来诸多挑战。面对严峻的网络威胁,传统的防火墙、入侵检测系统(IDS)等防御手段虽能在一定程度上抵御外部攻击,但依…...
数据结构串的kmp相关(求next和nextval)
傻瓜版,用来演示手算过程,个人理解用的,仅供参考。...
创建游戏暂停菜单
创建用户控件 设置样式 , 加一层 背景模糊 提升UI菜单界面质感 , 按钮用 灰色调 编写菜单逻辑 转到第三人称蓝图 推荐用 Set Input Mode Game And UI , 只用仅UI的话 增强输入响应不了 让游戏暂停的话也可以用 Set Game Paused , 打勾就是暂停 , 不打勾就是继续游戏 , 然后…...
seata服务端部署
1.下载seata 官网下载地址:http://seata.io/zh-cn/blog/download.html 或者下载 作者已经下载的压缩包1.4.0 注意!!! 要参考对应的版本,否则可能出现无法正常启动的情况。 参考文档 下载完毕后解压压缩文件 2.修改配…...
理解Python闭包概念
闭包并不只是一个python中的概念,在函数式编程语言中应用较为广泛。理解python中的闭包一方面是能够正确的使用闭包,另一方面可以好好体会和思考闭包的设计思想。 1.概念介绍 首先看一下维基上对闭包的解释: 在计算机科学中,闭包…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
