iso qemu 安装ubuntu_基于libvirt 和QEMU在macOS安装Ubuntu

708482c4814340754de6853d9635ee58.png

在流行的虚拟架构体系中,最重要的技术当然要数libvirt和QEMU了。包括Linux虚拟化技术中KVM和xen都使用了QEMU。关于Xen和KVM进行虚拟化,以及在Window下使用Vmware,VirtualBox和hyper-v构建虚拟机,可能大家都有过很多的尝试。今天我们来探索一下在macOS的用libvirt和QEMU构建虚拟机的方法。

概述

首先我们概要介绍一下QEMU和libvirt。

QEMU

QEMU由Fabrice Bellard开发的的CPU开源模拟器,QEMU支持高性能扩平台,可以虚拟出不同架构的虚拟机,如在x86平台上可以虚拟出Solaris来。

c1cc9cbd0f7b4ccde31310a2741beb58.png

libvirt

libvirt是当最常用的KVM虚拟机管理的开源工具和API。以Libvirtd为守护进程,可以被本地或者远程调用,Libvirtd通过调用qemu-kvm操作虚拟机。libvirt由红帽公司开发并用于KVM管理,也支持Xen等虚拟架构下的管理。libvirt旨在为各种虚拟机架构提供一套通用的编程接口,而且支持与Java,Python多种语言的绑定,所以涌现了一批基于基libvirt的虚拟机管理工具,比如virt-manager(GUI工具),virsh(命令行工具)。其架构示意图如下:

14c28b92756a177467469867fab0d5e7.png

MacOS下的虚拟方案

在MacOS支持收费的虚拟机方案,比如Parallels Desktop和VMWare Fusion,也有一个开源的VirtualBox。但是,VirtualBox不支持macOS的Hypervisor.Framework。

安装libvirt和QEMU

首先,确保macOS安装了,软件包管理器homebrew。此后其他包都用它来安装。

运行一下命令安装qemu和libvirt:

brew install qemu gcc libvirt

如果安装了libvirt6.6.0版本会导致安装失败,这时候请在Terminal中运行以下命令:

for f in /usr/local/Cellar/libvirt/6.6.0/lib/libvirt/*/*.bundle; do

ln -s $f ${f%.bundle}.so;

done

由于macOS不支持QEMU安全功能,因此禁用:

echo 'security_driver = "none"' >> /usr/local/etc/libvirt/qemu.conf

echo "dynamic_ownership = 0" >> /usr/local/etc/libvirt/qemu.conf

echo "remember_owner = 0" >> /usr/local/etc/libvirt/qemu.conf

最后启动libvirt服务:

brew services start libvirt

Ubuntu Server 20.04镜像准备和安装

有两种方法可以使用VNC客户端或virt-viewer来,查看虚拟机界面。推荐RealVNC Viewer。VNC客户端响应迅速且安装迅速,但是如果有多个VM,则需要手动管理不同的端口。使用virt-viewer,会弹出一个弹出窗口,其中包含当前正在运行的所有VM,但是它很耗时,并且安装需要很长时间。

在主目录中创建一个文件夹vms,并生成一个磁盘映像。更改50g为首选磁盘的大小:

mkdir ~/vms && cd ~/vms

qemu-img create -f qcow2 ubuntu.qcow2 50g

下载Ubuntu Server 20.04安装包和和libvirt XML配置模板,然后将.iso和.xml文件放在同一文件夹中。

修改ubuntu.xml文件中的以下元素,以匹配VM首选项和对应文件路径。

ubuntu

50

2

...

...

保存,然后运行virsh define ubuntu.xml之后virsh start ubuntu。

启动RealVNC Viewer并连接到localhost。单击Ctrl+Alt+Del按钮重新启动计算机,然后快速按Esc进入启动菜单。按与Ubuntu Server映像匹配的数字。

3da658e8ee79a12466c80add8839d121.png

正常安装Ubuntu Server,确保启用SSH服务器。重新启动后,可以通过运行从终端连接到VM ssh -p 2222 user@localhost。

要将关闭VM,请运行virsh shutdown ubuntu。

要强制关闭,请运行virsh destroy ubuntu。

要将端口(例如,端口443)从VM转发到本地的端口8443,请运行以下命令:

ssh -p 2222 -L8443:localhost:443 user@localhost

多个虚拟机支持

如果要创建多个VM,请为每台计算机创建一个具有唯一UUID,VM名称和VNC端口的XML文件。由于不支持桥接,虚拟不能自动网络,所以更改hostfwd参数,给每个VM的SSH公开一个不同的端口,例如2223代替2222。

定义所有它们之后,可以获得当前正在运行的VM的列表:

virsh list。

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

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

相关文章

在Ocelot中使用自定义的中间件(一)

Ocelot是ASP.NET Core下的API网关的一种实现,在微服务架构领域发挥了非常重要的作用。本文不会从整个微服务架构的角度来介绍Ocelot,而是介绍一下最近在学习过程中遇到的一个问题,以及如何使用中间件(Middleware)来解决…

多队列 部分队列没有包_记一次TCP全队列溢出问题排查过程

简介:记一次TCP全队列溢出问题排查过程1. 前言本文排查的问题是经典的TCP队列溢出问题,因TCP队列问题在操作系统层面没有明显的指标异常,容易被忽略,故把排查过程分享给大家。2. 问题描述A服务调用B服务接口超时,B服务…

[蓝桥杯2015决赛]完美正方形-dfs

题目描述 如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形。 历史上,人们花了很久才找到了若干完美正方形。 比如:如下边长的22个正方形 2 3 4 6 7 8 12 13 14 15 16 17 18 21 22 23 24 26 27 28 …

销量预测设计

目录一、算法计算逻辑举个直观的例子销量预测二、项目背景三、算法与业务的关系四、关于业务人员对未来外部变量“打标签”:五、关于预测颗粒度:六、关于预测准确率和影响准确率的因素:一、算法计算逻辑 销量预测算法建模要用到的数据&#…

.NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)--学习笔记(下)...

23 | 静态文件中间件:前后端分离开发合并部署骚操作这里还有一个比较特殊的用法一般情况下,我们前后端分离的架构,前端会编译成一个 index.html 文件和若干个 CSS 文件和 JavaScript 和图片文件CSS 文件和 JavaScript 和图片文件一般会部署在…

springboot 历史版本文档_乘风破浪,SpringBoot入门

SpringBoot入门篇前言在普通的java项目中,大量的xml文件配置起来相当繁琐,导致了开发效率非常低下,整合第三方框架的配置可能会存在冲突问题导致部署效率低,打包方式是将项目打成一个war包放入到tomactwebapps目录下执行。简单来说…

简洁直观解释精确率、召回率、F1 值、ROC、AUC

混淆矩阵 当我们在做二分类预测时,把预测情况与实际情况的所有结果两两混合,结果就会出现以下4种情况,就组成了混淆矩阵。 P(Positive):代表正样本N(Negative):代表负样…

基于Tensorflow搭建卷积神经网络CNN(水果识别)保姆及级教程

项目介绍 TensorFlow2.X 搭建卷积神经网络(CNN),实现水果识别。搭建的卷积神经网络是类似VGG的结构(卷积层与池化层反复堆叠,然后经过全连接层,最后用softmax映射为每个类别的概率,概率最大的即为识别结果…

如何编写高性能的C#代码(四)字符串的另类骚操作

原文来自互联网,由长沙DotNET技术社区编译。如译文侵犯您的署名权或版权,请联系小编,小编将在24小时内删除。作者介绍:史蒂夫戈登(Steve Gordon)是Microsoft MVP,Pluralsight的作者,…

statusbar 尺寸 显示图标_移动端页面设计规范尺寸大起底 - 椰树飘香

移动端尺寸繁多,包括IOS和安卓,尺寸多达十余种,所以移动页面尺寸的适配一直是前端和设计的头疼。今天来总结一下当前市场上的一些移动端尺寸,方便设计师和前端去考虑适配。但是最好还是针对自己的产品做调查,根据数据去…

新建项目上传gitee(码云)教程

登录码云 新建一个仓库后,复制HTTPS地址: 本地项目操作 打开需要上传gitee的项目文件夹,并打开Git Bash窗口 本地仓库初始化: git init添加到暂存区 git add .提交到本地仓库 git commit -m "first commit"关联到…

OpenSilver: 通过WebAssembly 复活Silverlight

本月早些时候,Userware发布了第一个版本的OpenSilver,微软Silverlight 的开源重新实现。OpenSilver 通过WebAssembly 实现无需任何其他插件在 浏览器上运行。OpenSilver 的当前版本可作为"技术预览"版本提供,它涵盖了大约 60% 的原…

db2有主键时默认hash分区_MySQL分区表最佳实践

前言:分区是一种表的设计模式,通俗地讲表分区是将一大表,根据条件分割成若干个小表。但是对于应用程序来讲,分区的表和没有分区的表是一样的。换句话来讲,分区对于应用是透明的,只是数据库对于数据的重新整…

程序员过关斩将-- 喷一喷坑爹的面向UI编程

点击上方“蓝字”关注我们菜菜哥,求你个事呗?说来听听,假装你男朋友可不干不是哦,是正经事。前几天一个项目UI改了,好多人跟着加班修改,怎么样尽量避免这种情况呢?UI修改顶多和客户端开发人员关…

python二维散点分布图_深入理解皮尔逊相关系数amp;python代码

1.常见理解误区(1)计算出变量A和变量B的皮尔逊相关系数为0,不代表A和B之间没有相关性,只能说明A和B之间不存在线性相关关系。例:温度和冰淇淋销量之间的散点图像如下,可以发现大致成二次函数图像&#xff0…

hdu4911 Inversion-归并排序

解题思路: 如果原序列的逆序对数大于交换次数,那么最少的逆序对数量就是原序列逆序对-交换次数。 如果原序列的逆序对数小于等于交换次数,那么最少的逆序对数量为0,因为交换次数超过逆序对数,可以把这些逆序对全部消除…

【.net core】电商平台升级之微服务架构应用实战

一、前言这篇文章本来是继续分享IdentityServer4 的相关文章,由于之前有博友问我关于微服务相关的问题,我就先跳过IdentityServer4的分享,进行微服务相关的技术学习和分享。微服务在我的分享目录里面是放到四月份开始系列文章分享的&#xff…

c语言将一个已知头结点的单链表逆序_C语言实现常用数据结构:静态链表数组实现(第5篇)...

「今天是学习C语言第 148 天」纸上学来终觉浅,绝知此事要躬行。—— 陆游「冬夜读书示子聿」# 静态链表使用数组实现,利用数组下标代替指针,从而实现数据结点之间的先后关系。实现要点:1.数组下标为0的位置为头结点,指…

集成平台集群任务动态分派

源宝导读:MIP集成平台是为了解决企业大量异构系统之间快速、稳定集成的需要,助力企业数字化转型,明源云自主研发的平台系统。本文将对"事件任务分派"场景的架构设计以及实践成果进行分享。背景MIP集成平台是为了解决企业大量异构系…

dotcpp1115 DNA-打印图案

题目描述 小强从小就喜欢生命科学,他总是好奇花草鸟兽从哪里来的。终于, 小强上中学了,接触到了神圣的名词–DNA.它有一个双螺旋的结构。这让一根筋的小强抓破头皮,“要是能画出来就好了” 小强喊道。现在就请你帮助他吧 输入 输…