X86平台下Linux系统安装部署KVM,以及KVM一些配置

news2024/11/16 18:04:55

环境:银河麒麟SP1-V2303系统,X86架构,目标虚拟机为win10

一、安装
1.APT源安装
sudo apt install qemu qemu-kvm bridge-utils virt-manager libguestfs-tools qemu-system  qemu-efi  qemu-utils libvirt-clients libvirt-daemon-system gir1.2-spiceclientgtk-3.0

这里默认的virt-manager是2.1.0的
可以去清华镜像源手动下载4.0.0以及以上版本的virtinst和virt-manager包(这俩包需要同步更新)

2.一些也许可以注意一下的点

libguestfs-tools包是帮助KVM虚拟机管理文件系统,诸如磁盘之类,需要则下载
qemu-utils是一些qemu的命令,帮助管理KVM虚拟机,qemu-kvm是KVM硬件虚拟化层面的交互软件包,需要则下载

重启系统

二、环境配置
设置权限

如果刚下载安装完,在终端用普通用户权限打开virt-manager链接qemu/kvm失败,则需要修改libvirt的权限。

sudo vim /etc/libvirt/libvirt.conf

打开这个文件后,添加两行

unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"

保存,然后sudo systemctl restart libvirt-guests.service以及sudo systemctl restart libvirtd.service
添加成功后尝试再次启动virt-manager发现还是失败,再reboot重启下系统。
在这里插入图片描述
这一步完成

三、安装KVM管理的虚拟机

有两种安装方式,一种是用iso镜像文件,另一种是用qcow2磁盘。前者需要对虚拟系统做一些配置,后者即开即用,不需要再经过安装系统的步骤,直接开机使用。有两种不同格式的安装,还有用virt-manager手动导入文件,或者virt-install脚本安装两种不同安装方式。

利用iso镜像文件安装

使用在virt-manager里手动配置虚拟机设置,文件选择目标ISO文件,操作系统选择win10,这时的选择并无生成的qcow2磁盘文件,也没有手动生成,所以选择默认,磁盘大小需要设置为20G以上。

磁盘设置
此处也可以用自定义的空白磁盘,qemu-img create -f qcow2 win10 25G,指定格式为qcow2文件,名字为win10,大小25G
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
一定要勾选“在安装前自定义配置”,否则有些选项会随即设置导致宿主机不支持。

虚拟硬件设置在这里插入图片描述
这里的磁盘暂时选择为默认的sata磁盘,其余选项后续说明。
固件X86下可以选择OVMF,也可以选择默认的BIOS,他俩的差别是BIOS支持带有内存数据的内部快照,OVMF只支持外部快照。下载OVMF固件安装包sudo apt install ovmf,安装完毕在/usr/share/OVMF目录下,在这里可以选择OVMF_CODE.fd文件。
显示协议Spice改成VNC服务器,显卡QXL改成Ramfb(virt-maanger4.0.0以上版本可选Ramfb)或者VGA。
然后选择开始安装等待安装完毕
在这里插入图片描述
出现windows系统经典界面就基本稳了

利用qcow2磁盘文件安装

有两种方法,一个是在virt-manager里手动导入磁盘文件,另一种是用脚本自动创建虚拟机。
手动导入的操作基本和上述iso文件安装无二。脚本创建涉及到一些参数继续阐述。
利用脚本或者手动安装最后都是成功的且可以访问网络。
在这里插入图片描述

四、利用virt-install命令脚本安装虚拟机

virt-install命令可以根据不同参数选择来进行:第一次创建,或者后续导入即开即用的磁盘映像。

第一次创建

virt-install \
    --name=win10 \
    --vcpus=8 \
    --accelerate \
    --ram 8192 \
    --cdrom  /vmdisk/win10/win10.iso \
    --os-type=windows \
    --os-variant=win10 \
    --disk  path=/vmdisk/win10/win10_virtio.qcow2,format=qcow2,size=25,bus=virtio \
    --disk  path=/vmdisk/win10/virtio-win-0.1.190_amd64.vfd,device=floppy \
    --network=default  \
    --input type=mouse,bus=usb \
    --input type=keyboard,bus=usb \
    --graphics vnc,port=5900,listen=0.0.0.0 \
    --video=ramfb

利用已有磁盘即开即用

virt-install \
    --name=win10 \
    --vcpus=8 \
    --accelerate \
    --ram 8192 \
    --os-type=windows \
    --os-variant=win10 \
    --disk  path=/vmdisk/win10/win10_virtio.qcow2,format=qcow2,bus=virtio \
    --network=default  \
    --input type=mouse,bus=usb \
    --input type=keyboard,bus=usb \
    --graphics vnc,port=5900,listen=0.0.0.0 \
    --video=ramfb \
    --noautoconsole \
    --import 

上述利用可视化工具安装时,磁盘IO方式选择了sata,这里用脚本安装选择了virtIO方式。
使用virtIO方式,在新建虚拟机时候,除了添加指定的ISO文件,还需要添加软盘,利用virtio-win-0.1.190_amd64.vfd文件给虚拟机安装virtIO驱动,链接里下载了amd64架构的vfd文件,可以使用与自己机器相符合的ISO文件或者另一个X86文件作为软件驱动。

五、关于安装里涉及到的选项不同参数

qcow2格式磁盘文件总线选择:选择了virtIO的IO方式,在各种IO方式里,这个是效率最高的,采用了半虚拟化与硬件加速的方式。
输入设备IO方式选择:选择USB,PS/2似乎是有些问题的,而且这里手动添加的参数,避免某些平台不自带输入设备。
graphics参数:选择VNC,便于管理,这里带上port和listen,便于随时修改端口号和监听的地址,比较安全。
video参数:4.0.0版本以上的virtinst软件包支持ramfb选项,以下版本可以选择vga。
与非即开即用不同的是,这里多了–noautoconsole和–import,这是告诉管理器,安装导入后不自动打开默认的虚拟机可视化管理工具,并且采用导入磁盘的方式安装虚拟机。

六、虚拟机里的驱动安装

采用virtIO方式的情况下,需要添加软盘来安装virtIO的驱动,链接里可以根据需要版本自行下载对应版本。
选择virtIO方式后,打开虚拟机安装,如果没有识别到驱动,则选择浏览然后选择软盘,安装驱动。
在这里插入图片描述
安装完毕进入虚拟机系统。
打开设备管理器,添加硬件,然后选择刚才的软盘驱动,会有三个可选驱动,全部安装。
在这里插入图片描述

七、KVM服务设置
设置开机自动启动

需要先设置虚拟机的网络服务开机自动启动。

virsh net-autostart --network default

在virt-manager的虚拟机设置里,引导选项设置为主机引导是启动虚拟机。或者

virsh autostart --domain win10
设置关机自动挂起
sudo vim /usr/lib/libvirt/libvirt-guests.sh

修改

#ON_SHUTDOWN=shutdown
ON_SHUTDOWN=SUSPEND

安装软件开发包

sudo apt install libvirt-dev libvirt-doc -y

如果要用xml的AP来创建一些关于虚拟机的信息,还需要下载

sudo apt install libxml2-dev libxml2-doc libxml2-utils -y

下述两个关于初始化与hypervisor连接并且寻找指定虚拟机,以及释放资源的API

int InitVirsh(const char * domName)
{
    conn = virConnectOpen("qemu:///system");
    if (conn == NULL) {
        fprintf(stderr, "Failed to open connection to qemu:///system\n");
        return 1;
    }

    dom = virDomainLookupByName(conn, domName);
    if (dom == NULL) {
        fprintf(stderr, "Failed to find Domain %s\n", domName);
        virConnectClose(conn);
        return 1;
    }
    return 0;
}

int UninitVirsh()
{
    virDomainFree(dom);
    virConnectClose(conn);
}

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

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

相关文章

Centos7安装Docker与Docker-compose【图文教程】

个人记录 查看一下系统是否已经安装了Docker yum list installed | grep docker如下图代表没有安装Docker 卸载已有Docker yum remove docker docker-common docker-selinux docker-engine切换目录 cd /etc/yum.repos.d/查看当前目录所有的镜像源 ll安装yum-util与devi…

去班味的尽头是风险管理

运维工程师的“班味”是从风险管理就加重的。 什么是班味呢?指的是打工人身上特有的疲惫气质,面色憔悴、双目无神和腰酸背痛都是“班味”的显著表现。习惯性回复“收到,马上来”、不自觉唉声叹气、下班也提不起精神等症状,则说明…

GIS水文分析计算流向学习

1 初步操作 流向,即水文表面水的流向; 水文分析的很多功能需要基于流向栅格; 在 SuperMap 中,对中心栅格的8个邻域栅格进行编码; 每一个中心栅格的水流方向都由这八个值中的某一个值来确定; 我还没弄懂水…

Linux------一篇博客了解Linux最常用的指令

🎈个人主页:靓仔很忙i 💻B 站主页:👉B站👈 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:Linux 🤝希望本文对您有所裨益,如有不足之处&#…

2012年认证杯SPSSPRO杯数学建模C题(第一阶段)碎片化趋势下的奥运会商业模式全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 C题 碎片化趋势下的奥运会商业模式 原题再现: 从 1984 年的美国洛杉矶奥运会开始,奥运会就不在成为一个“非卖品”,它在向观众诠释更高更快更强的体育精神的同时,也在攫取着巨大的商业价值&#…

《C++程序设计》阅读笔记【1-函数】

🌈个人主页:godspeed_lucip 🔥 系列专栏:《C程序设计》阅读笔记 本文对应的PDF源文件请关注微信公众号程序员刘同学,回复C程序设计获取下载链接。 1 函数1.1 概述1.2 函数定义、声明、原型1.3 变量1.3.1 全局变量1.3.…

【THM】Nmap Post Port Scans(后端口扫描)-初级渗透测试

介绍 本房间是 Nmap 系列的最后一个(网络安全简介模块的一部分)。在这个房间中,我们重点关注端口扫描之后的步骤:特别是服务检测、操作系统检测、Nmap脚本引擎和保存扫描结果。 Nmap实时主机发现Nmap基本端口扫描Nmap高级端口扫描Nmap后端口扫描在本系列的第一个房间中,我…

保持ssh断开后,程序不会停止执行

保持ssh断开后,程序不会停止执行 一、前言 笔者做远程部署搞了一阵子,快结项时发现一旦我关闭了ssh连接窗口,远程服务器会自动杀掉我在ssh连接状态下运行的程序。 这怎么行,岂不是想要它一直运行还得要一台电脑一直打开ssh连接咯…

基于STM32+VS1053B的MP3设计

目录 一、整体介绍 二、模块介绍 1. stm32主控 2. VS1053B音频解码 3. 按键 4. OLED显示 三、程序代码: 资料下载地址:基于STM32VS1053B的MP3设计 一、整体介绍 话不多说,先看看整体原理图: 制作出来的实…

vulnhub----natraj靶机

文章目录 一.信息收集1.网段探测2.端口扫描3.版本服务探测4.漏扫5.目录扫描 二.漏洞利用1.分析信息2..fuzz工具 三.getshell四.提权六.nmap提权 一.信息收集 1.网段探测 因为使用的是VMware,靶机的IP地址是192.168.9.84 ┌──(root㉿kali)-[~/kali/vulnhub] └─…

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记14:PWM捕获

系列文章目录 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记01:赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记02:开发环境安装 嵌入式|蓝桥杯STM32G431(…

SQLite的架构(十一)

返回:SQLite—系列文章目录 上一篇:SQLite下一代查询规划器(十) 下一篇:SQLite—系列文章目录 介绍 本文档介绍SQLite库的架构。 这里的信息对那些想要了解或 修改SQLite的内部工作原理。 接口SQL 命令处理器虚拟机B-树…

深入理解npm常用命令

npm(Node Package Manager)是 Node.js 的包管理工具,用于管理 Node.js 应用程序的依赖包。除了安装、更新和卸载依赖包外,npm 还提供了许多其他功能,如初始化项目、运行脚本、查看依赖树等。本文将详细介绍一些常用的 …

阿里云弹性计算通用算力型u1实例性能评测,性价比高

阿里云服务器u1是通用算力型云服务器,CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器,ECS通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xf…

续二叉搜索树递归玩法

文章目录 一、插入递归二、寻找递归&#xff08;非常简单&#xff0c;走流程就行&#xff09;三、插入递归&#xff08;理解起来比较麻烦&#xff09; 先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;^ _ ^<3 ❤️ ❤️ ❤️ 码字不易&#xff0c;大家的…

将 Elasticsearch 向量数据库引入到数据上的 Azure OpenAI 服务(预览)

作者&#xff1a;来自 Elastic Aditya Tripathi Microsoft 和 Elastic 很高兴地宣布&#xff0c;全球下载次数最多的向量数据库 Elasticsearch 是公共预览版中 Azure OpenAI Service On Your Data 官方支持的向量存储和检索增强搜索技术。 这项突破性的功能使你能够利用 GPT-4 …

Android MediaRecorder

AndroidManifest.xml中添加权限标记 <uses-permission android:name"android.permission.RECORD_AUDIO"/> 动态添加权限MainActivity requestPermissions(new String[]{Manifest.permission.CAMERA,Manifest.permission.RECORD_AUDIO},100); 创建MediaReco…

阿里云服务器ECS经济型e实例优惠价格99元一年

阿里云服务器99元一年配置为云服务器ECS经济型e实例&#xff0c;2核2G配置、3M固定带宽和40G ESSD Entry系统盘&#xff0c;新用户和老用户均可买&#xff0c;续费不涨价依旧是99元一年&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云99元服务器性能测评&#xff…

ST表---算法

相当于二分的思想&#xff0c;一直比较最值 ST的创建 现在创建成功&#xff0c;是应该如何查询的问题 ST表的查询 虽然这两区间有重叠&#xff0c;但是可以一个往前数&#xff0c;一个往后数&#xff0c;互不影响 时间复杂度 创建st表的复杂度为n*logn 使用时的复杂度为O(…

Vol.34 Good Men Project:一个博客网站,每月90万访问量,通过付费订阅和广告变现

今天给大家分享的案例网站是&#xff1a;Good Men Project&#xff0c;这是一个专门针对男性成长的博客网站&#xff0c;内容包括人际关系、家庭、职业发展等话题。 它的网址是&#xff1a;The Good Men Project - The Conversation No One Else Is Having 流量情况 我们先看…