利用QEMU安装一台虚拟机的三种方法

news2024/12/24 11:26:29

文章目录

  • 宿主机的选择
  • 方法一:直接用qemu源码安装
    • 步骤1:下载好qemu源码,这里我们用qemu-5.1.0
    • 步骤2:编译
    • 步骤3:创建一个系统盘
    • 步骤4:用步骤2编译的qemu-system-x86_64 启动一台Linux虚拟机
    • 步骤5:用vnc连接步骤4启动的虚拟机
    • 步骤6:就可以接着步骤5开始一步一步的安装对应的系统了
  • 方法二:配合libvirt在linux宿主机上安装部署Guest OS (主流操作)
    • 步骤1:准备系统盘磁盘文件
    • 步骤2:准备guest os的xml文件
    • 步骤3:开始安装
    • 步骤4:调整xml文件
  • 方法三:使用Qemu指令在Windows宿主机安装部署Guest OS
    • 步骤1:创建系统磁盘文件
    • 步骤2:启动安装
    • 步骤3:正常启动

宿主机的选择

  • linux作为宿主机时可通过图形界面工具virt-manager或libvirt或qemu指令直接部署Guest OS
  • windows作为宿主机时只能使用qemu指令部署Guest OS

方法一:直接用qemu源码安装

步骤1:下载好qemu源码,这里我们用qemu-5.1.0

解压qemu-5.1.0.tar.xz包

步骤2:编译

cd /root/Workplace/qemu-5.1.0
make -j 4

编译结束后,有这样一个目录,下面有对应的二进制文件。其中qemu-system-x86_64 文件即编译后的qemu二进制文件

root@liyuanchao:~/Workplace/qemu-5.1.0# ls x86_64-softmmu/
accel                       config-devices.mak.old     disas.o      exec-vary.o    gdbstub-xml.d        Makefile            softmmu
config-devices.h            config-target.h            dump         fpu            gdbstub-xml.o        migration           target
config-devices.h-timestamp  config-target.h-timestamp  exec.d       gdbstub.d      hmp-commands.h       monitor             tcg
config-devices.mak          config-target.mak          exec.o       gdbstub.o      hmp-commands-info.h  qapi                trace
config-devices.mak.d        disas.d                    exec-vary.d  gdbstub-xml.c  hw                   qemu-system-x86_64  ubuntu.img
root@liyuanchao:~/Workplace/qemu-5.1.0#

步骤3:创建一个系统盘

qemu-img create -f qcow2 ubuntu.img 20G

步骤4:用步骤2编译的qemu-system-x86_64 启动一台Linux虚拟机

./qemu-system-x86_64 -m 1024 -hda ubuntu.img -cdrom ~/image/ubuntu-18.04.6-live-server-amd64.iso --enable-kvm -vnc 192.168.170.142:33

步骤5:用vnc连接步骤4启动的虚拟机

在这里插入图片描述

步骤6:就可以接着步骤5开始一步一步的安装对应的系统了

方法二:配合libvirt在linux宿主机上安装部署Guest OS (主流操作)

步骤1:准备系统盘磁盘文件

创建系统磁盘文件

qemu-img create -f qcow2 /images/winsrv2019/winsrv2019.qcow2 50G    //预分配50G大小的系统盘,一般刚安装完系统文件实际大小不超过10G,后续使用会增加)

步骤2:准备guest os的xml文件

根据实际情况配置xml模板文件:win_install.xml (如果要放到51hyper上运行,为避免冲突,vnc端口、ip地址、网卡MAC按51服务器/images/network-default.xml文件中递增),这个文件定义了一些guest os的一些基础配置。在/images/network-default.xml中按示例增加vmname的mac地址及ip地址对应项。并执行如下命令使其实时生效:
virsh net-update default add ip-dhcp-host “” --live --config

/* 重点关注以下配置 */
 
/* 配置guest的名字以及uuid */
<name>winsrv2019</name>
<uuid>9707D4B1-8FAB-4D00-87D9-CF71A21C749A</uuid>  // 通过uuid工具生成一个不会重复的uuid
 
/* 在hd启动项之前,增加cdrom 启动项作为第一启动项目 */
<boot dev='cdrom'/>
<boot dev='hd'/>
 
/* 配置第一块文件磁盘(系统盘)指向之前创建好的系统磁盘文件 */
<disk type='file' device='disk'>
    <driver name='qemu' type='qcow2'/>
    <source file='/images/winsrv2019/winsrv2019.qcow2'/>
    <target dev='vda' bus='virtio'/>    // 如果没有virtio驱动包,此处应该磁盘类型从virtio改为ide,否则识别不到该系统盘
    <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
 
/* 配置cdrom用于加载安装系统的ISO文件 */
<disk type='file' device='cdrom'>
    <driver name='qemu' type='raw'/>
    <source file='/kernel/software/iso/cn_windows_server_2019_updated_july_2020_x64_dvd_2c9b67da.iso'/>
    <target dev='hda' bus='ide'/>
    <readonly/>
    <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
 
/* 配置第二个cdrom用于加载virtio驱动包 */
<disk type='file' device='cdrom'>
    <driver name='qemu' type='raw'/>
    <source file='/images/winsrv2019/virtio-win-0.1.190.iso'/>
    <target dev='hdb' bus='ide'/>
    <readonly/>
    <address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
 
/* 配置vnc端口用于vncviewer连接进行界面操作 */
<graphics type='vnc' port='5929' autoport='no' listen='0.0.0.0'>  // port=5929(5900+29)vnc客户端连接时使用宿主机 ip:29 形如 172.31.20.51:29即可连接
    <listen type='address' address='0.0.0.0'/>
</graphics>
 
/* 配置网卡MAC地址不要重复 */
<interface type='network'>
    <mac address='52:54:00:15:ff:29'/>    // MAC地址有6个字节,为了方便习惯最后一个字节就设置成与vnc端口号一致
    <source network='default'/>
    <model type='virtio'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

步骤3:开始安装

开始安装window操作系统

/* 开始安装 */
virsh create /images/winsrv2019/win_install.xml
 
/*
* 使用vncviewer连接host ip:vncport 如 172.31.20.51:29即可看到安装界面。
* 安装过程中选中磁盘时,因为系统盘配置类型为virtio,但windows原生ISO中并没有virtio磁盘驱动,所以在安装界面时选择加载驱动并进行扫描,
* 此时会从配置的第二个cdrom中识别到磁盘驱动viostor,我们选择对应系统版本的驱动安装好之后就能识别到系统盘。
* 如果没有virtio驱动,那就把系统盘配置成ide类型。
*/

步骤4:调整xml文件

将win_install.xml重命名为winsrv2019.xml (一个有意义的名字),并修改以下配置

/* 去掉cdrom启动项 */
<boot dev='cdrom'/>
 
/* 去掉两个配置cdrom ISO disk */
 
/* 使新的配置生效 */
virsh define /images/winsrv2019/winsrv2019.xml

下次我们就直接用winsrv2019.xml来启动系统了

方法三:使用Qemu指令在Windows宿主机安装部署Guest OS

步骤1:创建系统磁盘文件

qemu-img create -f qcow2 d:\qemu\winsrv2019.qcow2 50G    //预分配50G大小的系统盘,一般刚安装完系统文件实际大小不超过10G,后续使用会增加)

步骤2:启动安装

qemu-system-x86_64 -m 2048M -smp 2  -cdrom F:\windows_iso\cn_windows_server_2019_updated_july_2020_x64_dvd_2c9b67da.iso -hda d:\qemu\winsrv2019.qcow2 -boot d -vnc 0.0.0.0:29 -usbdevice tablet
 
/* 参数解释 */
-m 配置2048内存
-smp 配置2核cpu
-cdrom 使用ISO文件作为光盘映像(不能同时使用-hdc和-cdrom)
-hda 指定文件作为硬盘(会在上面安装系统),-hda -hdb -hdc -hdd将文件用作硬盘 0、1、2 或 3,硬盘ID跟abcd无需严格的对应关系,一个-hdx就是一块盘
-boot d 启动项配置为d, d通常表示系统第一块cdrom盘
-vnc 0.0.0.0:29  vnc viewer通过本地任何一个ip地址如127.0.0.1:29 连接Guest
-usbdevice tablet 解决vnc鼠标偏移问题
 
/* 还有其他参数 */
-enable-kvm   linux 作为宿主机才支持
-accel hax (windows 宿主机加速,需要安装加速组件) https://www.qemu.org/2017/11/22/haxm-usage-windows/
-spice port=3001,disable-ticketing  使用spice连接:remote-viewer spice://127.0.0.1:3001  更多spice功能:https://www.spice-space.org/spice-user-manual.html

步骤3:正常启动

/* 使用VNC连接 需要安装vncviewer */
qemu-system-x86_64 -m 2048M -smp 2 -hda winsrv2019.qcow2 -vnc 0.0.0.0:29 -usbdevice tablet
 
/* 使用spice客户端连接 需要安装 remote-viewer*/
qemu-system-x86_64 -m 2048M -smp 2 -hda winsrv2019.qcow2 -spice port=3001,disable-ticketing
 
/* 对于windows版的qemu 默认可以 */
qemu-system-x86_64 -m 2048M -smp 2 -hda winsrv2019.qcow2

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

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

相关文章

问题——IMX6UL的uboot无法ping主机或Ubuntu

主要描述可能的方向&#xff0c;不涉具体过程&#xff0c;详细操作可以查阅网上相关教程 跟随正点原子教程测试以太网端口时&#xff0c;即便按照步骤多次尝试也无法ping通&#xff0c;后补充了些许网络工程基础知识解决了这个问题。 uboot无法ping主机或Ubuntu有多种可能&…

二分查找算法(3) _x的平方根

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 二分查找算法(3) _x的平方根 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 温馨…

简易CPU设计入门:取指令(一),端口列表与变量声明

取指令这一块呢&#xff0c;个人觉得&#xff0c;不太好讲。但是呢&#xff0c;不好讲&#xff0c;我也得讲啊。那就尽量地讲吧。如果讲得不好的话&#xff0c;那么&#xff0c;欢迎大家提出好的意见&#xff0c;帮助我改进讲课的质量。 首先呢&#xff0c;还是请大家去下载本…

面试官:Spring是如何解决循依赖问题?

Spring 的循环依赖一直都是 Spring 中一个很重要的话题&#xff0c;一方面是 Spring 为了解决循环依赖做了很多工作&#xff0c;另一个方面是因为它是面试 Spring 的常客&#xff0c;因为他要求你看过 Spring 的源码&#xff0c;如果没有看过 Spring 源码你基本上是回答不了这个…

pytorch的动态计算图机制

pytorch的动态计算图机制 一&#xff0c;动态计算图简介 Pytorch的计算图由节点和边组成&#xff0c;节点表示张量或者Function&#xff0c;边表示张量和Function之间的依赖关系。 Pytorch中的计算图是动态图。这里的动态主要有两重含义。 第一层含义是&#xff1a;计算图的…

“吉林一号”宽幅02B系列卫星

离轴四反光学成像系统 1.光学系统参数&#xff1a; 焦距&#xff1a;77.5mm&#xff1b; F/#&#xff1a;7.4&#xff1b; 视场&#xff1a;≥56゜&#xff1b; 光谱范围&#xff1a;400nm&#xff5e;1000nm。 2.说明&#xff1a; 光学系统采用离轴全反射式结构&#xff0c;整…

解密的军事卫星图像在各种民用地理空间研究中都有应用

一、美军光学侦察卫星计划概述 国家侦察局 &#xff08;NRO&#xff09; 负责开发和操作太空侦察系统&#xff0c;并为美国国家安全开展情报相关活动。NRO 开发了几代机密锁眼 &#xff08;KH&#xff09; 军事光学侦察卫星&#xff0c;这些卫星一直是美国国防部 &#xff08;D…

人工智能不是人工“制”能

文/孟永辉 如果你去过今年在上海举办的世界人工智能大会&#xff0c;就会知道当下的人工智能行业在中国是多么火爆。 的确&#xff0c;作为第四次工业革命的重要组成部分&#xff0c;人工智能愈发引起越来越多的重视。 不仅仅是在中国&#xff0c;当今世界的很多工业强国都在将…

python爬虫案例——异步加载网站数据抓取,post请求(6)

文章目录 前言1、任务目标2、抓取流程2.1 分析网页2.2 编写代码2.3 思路分析前言 本篇案例主要讲解异步加载网站如何分析网页接口,以及如何观察post请求URL的参数,网站数据并不难抓取,主要是将要抓取的数据接口分析清楚,才能根据需求编写想要的代码。 1、任务目标 目标网…

Win10 安装Node.js 以及 Vue项目的创建

一、Node.js和Vue介绍 1. Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。它允许你在服务器端运行 JavaScript&#xff0c;使得你能够使用 JavaScript 来编写后端代码。以下是 Node.js 的一些关键特点&#xff1a; 事件驱动和非阻塞 I/O&#xff1a;Node…

list(一)

list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向 其前一个元素和后一个元素。 支持 -- 但是不支持…

Linux:终端(terminal)与终端管理器(agetty)

终端的设备文件 打开/dev目录可以发现其中有许多字符设备文件&#xff0c;例如对于我的RedHat操作系统&#xff0c;拥有tty0到tty59&#xff0c;它们是操作系统提供的终端设备。对于tty1-tty12使用ctrlaltF*可以进行快捷切换&#xff0c;下面的命令可以进行通用切换。 sudo ch…

校园热捧的“人气新贵”,D 咖智能饮品机器人

在 2024 年的校园中&#xff0c;一股全新的潮流正在悄然兴起。D 咖智能饮品机器人以其独特的魅力&#xff0c;成功入驻多个校园&#xff0c;迅速成为学生们热烈追捧的对象&#xff0c;在长江大学、荆州职业技术学院、中医高专等多个大学校园&#xff0c;都能发现他们靓丽的身姿…

calibre-web报错:File type isn‘t allowed to be uploaded to this server

calibre-web报错&#xff1a;File type isnt allowed to be uploaded to this server 最新版的calibre-web在Upload时候会报错&#xff1a; File type isnt allowed to be uploaded to this server 解决方案&#xff1a; Admin - Basic Configuration - Security Settings 把…

投资学 01 定义,投资

02. 03. 3.1 直接投资&#xff1a;使用方和提供方是一个人

VUE3学习---【一】【从零开始的VUE学习】

目录​​​​​​​ 什么是Vue 渐进式框架 创建一个Vue应用 什么是Vue应用 使用Vue应用 根组件 挂载应用 模板语法 文本插值 原始HTML Attribute绑定 简写 同名简写 布尔型Attribute 动态绑定多个值 使用JavaScript表达式 仅支持表达式 指令 Directives 指令…

COLORmap

在这段MATLAB代码中&#xff0c;surf(peaks)、map的定义以及colormap(map)的调用共同完成了以下任务&#xff1a; 1. **绘制曲面图**&#xff1a; - surf(peaks)&#xff1a;这个函数调用了MATLAB内置的peaks函数来生成数据&#xff0c;并使用surf函数将这些数据绘制成一个…

双向链表:实现、操作与分析【算法 17】

双向链表&#xff1a;实现、操作与分析 引言 双向链表&#xff08;Doubly Linked List&#xff09;是链表数据结构的一种重要形式&#xff0c;它允许节点从两个方向进行遍历。与单向链表相比&#xff0c;双向链表中的每个节点不仅包含指向下一个节点的指针&#xff08;或引用&…

蓝桥杯嵌入式的学习总结

一. 前言 嵌入式竞赛实训平台(CT117E-M4) 是北京国信长天科技有限公司设计&#xff0c;生产的一款 “ 蓝桥杯全国软件与信息技术专业人才大赛-嵌入式设计与开发科目 “ 专用竞赛平台&#xff0c;平台以STM32G431RBT6为主控芯片&#xff0c;预留扩展板接口&#xff0c;可为用户提…

数据结构篇--顺序查找【详解】

概念章 查找就是在数据集合中寻找某种条件的数据元素的过程。 查找表是指用于查找同一类型的数据元素集合。 找到了满足条件的数据元素&#xff0c;就是查找成功&#xff0c;否则就是称为查找失败。 关键字是指数据元素的某个数据项的值&#xff0c;可用于标识或者记录&…