qemukvm源码解析与应用 pdf(手动安装kvm软件包必须包括)

本文目录
- 手动安装kvm软件包必须包括
- QEMU/KVM查看虚拟机系统注册表的方法
- KVM虚拟机的安装方法
- KVM之二:KVM工具简介一:virt-manager,virt-viewer,virt-convert,qemu-img
- qemu-kvm源码分析一个虚拟机进程里面有几个线程
- CentOS 7上安装qemu kvm进行虚拟化
手动安装kvm软件包必须包括
你好,你是想问手动安装kvm软件包必须包括什么东西吗?手动安装kvm软件包必须包括的东西如下:
1、KVM内核模块:您需要安装适用于您的操作系统的KVM内核模块,这是KVM虚拟化的核心组件。
2、QEMU(QuickEmulator):QEMU是一个开源的虚拟机监视器和仿真器,它与KVM结合使用以提供完整的虚拟化功能。您需要安装QEMU软件包。
3、libvirt:libvirt是一个用于管理虚拟化平台的库和工具集。它提供了一个统一的接口,用于管理和控制KVM虚拟机。您需要安装libvirt软件包。
QEMU/KVM查看虚拟机系统注册表的方法
libguestfs-tools套件提供了一个基于QEMU的磁盘映像去查找这个磁盘映像中安装的Windows操作系统的具体注册表信息,甚至是进行改动(当然不安全,目前可能不成熟,可能损坏映像文件)。
这个套件目前我只在centos和redhat的虚拟化环境中找到了,具体安装方法很简单:
复制代码
代码如下:
yum install libguestfs libguestfs-tools libguestfs-winsupport
安装完成之后,使用virt-win-reg既可以对已经安装操作系统的虚拟机映像文件进行注册表的读取操作,不过要注意的是目前只推荐在虚拟机停止状态下获取注册表的信息,如果在启动模式下获取注册表或者修改注册表信息都可能导致虚拟机映像文件损坏。
具体使用方法如下:
复制代码
代码如下:
virt-win-reg win9-clone ’HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Uninstall’
其中win9-clone是虚拟机的名字,可以通过libvirt的virsh list –all命令查询得出,不过一定确保虚拟机已经是停止的状态,否则可能造成磁盘损坏。
上面的命令最终执行的结果如下:
复制代码
代码如下:
@=hex(1):00,00/pp
"QuietUninstallString"=hex(1):52,00,75,00,6e,00,64,00,6c,00,6c,00,33,00,32,00,20,00,49,00,65,00,64,00,6b,00,43,00,53,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,2c,00,42,00,72,00,61,00,6e,00,64,00,43,00,6c,00,65,00,61,00,6e,00,49,00,6e,00,73,00,74,00,61,00,6c,00,6c,00,53,00,74,00,75,00,62,00,73,00,00,00
"RequiresIESysFile"=hex(1):31,00,30,00,30,00,2e,00,30,00,00,00/pp
"SystemComponent"=dword:00000001/pp
@=hex(1):00,00/pp
@=hex(1):00,00/pp
@=hex(1):00,00/pp
@=hex(1):00,00/pp
@=hex(1):00,00/pp
@=hex(1):00,00/pp
@=hex(1):00,00/pp
@=hex(1):00,00/pp
@=hex(1):00,00/pp
"RequiresIESysFile"=hex(1):34,00,2e,00,37,00,31,00,00,00/pp
@=hex(1):00,00/pp
"QuietUninstallString"=hex(1):72,00,75,00,6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,73,00,65,00,74,00,75,00,70,00,61,00,70,00,69,00,2e,00,64,00,6c,00,6c,00,2c,00,49,00,6e,00,73,00,74,00,61,00,6c,00,6c,00,48,00,69,00,6e,00,66,00,53,00,65,00,63,00,74,00,69,00,6f,00,6e,00,20,00,44,00,65,00,66,00,61,00,75,00,6c,00,74,00,55,00,6e,00,69,00,6e,00,73,00,74,00,61,00,6c,00,6c,00,20,00,31,00,33,00,32,00,20,00,43,00,3a,00,5c,00,57,00,49,00,4e,00,44,00,4f,00,57,00,53,00,5c,00,49,00,4e,00,46,00,5c,00,50,00,43,00,48,00,65,00,61,00,6c,00,74,00,68,00,2e,00,69,00,6e,00,66,00,00,00
"UninstallString"=hex(1):72,00,75,00,6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,73,00,65,00,74,00,75,00,70,00,61,00,70,00,69,00,2e,00,64,00,6c,00,6c,00,2c,00,49,00,6e,00,73,00,74,00,61,00,6c,00,6c,00,48,00,69,00,6e,00,66,00,53,00,65,00,63,00,74,00,69,00,6f,00,6e,00,20,00,44,00,65,00,66,00,61,00,75,00,6c,00,74,00,55,00,6e,00,69,00,6e,00,73,00,74,00,61,00,6c,00,6c,00,20,00,31,00,33,00,32,00,20,00,43,00,3a,00,5c,00,57,00,49,00,4e,00,44,00,4f,00,57,00,53,00,5c,00,49,00,4e,00,46,00,5c,00,50,00,43,00,48,00,65,00,61,00,6c,00,74,00,68,00,2e,00,69,00,6e,00,66,00,00,00/pp
@=hex(1):00,00
该命令的其他用法可以使用man virt-win-reg获取相关帮助信息,用法还是很多的哦
KVM虚拟机的安装方法
一、安装准备
1.确定机器有VT
终端输入命令: grep vmx /proc/cpuinfo (INTEL芯片)
grep svm /proc/cpuinfo (AMD芯片)
不知道芯片的生产厂商则输入:egrep ’(vmx|svm)’ /proc/cpuinfo
如果flags: 里有vmx 或者svm就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法成功安装KVM虚拟机。
2. 确保BIOS里开启VT
Intel(R) Virtualization Tech
如有必要,还需在BIOS中开启VT-d
3. 确保内核版本较新,支持KVM
用uname –r查看内核版本,如果在2.6.20以下的linux版本,需升级内核。
二、安装KVM
下面就Ubuntu和CentOS下安装使用KVM虚拟机做介绍:
Ubuntu 中用guest登陆,安装KVM的命令为:
sudo apt-get install kvm qemu qemu-kvm virt-manager kernel-package linux-source kqemu-source build-essential
kvm安装成功后会有/dev/kvm,如果无需图形管理器,只需要安装前三个即可。
再来查看下KVM是否安装成功,执行:virsh -c qemu:///system list
如果输入结果像下面这样的,那么成功了:
Connecting to uri: qemu:///system
Id Name State
----------------------------------
注1:CentOS中安装时,先要选择Selinux为enable,使用命令
#system-config-securitylevel-tui
可查看或修改selinux的状态。
注2: CentOS中用root登陆时则安装命令为:
yum install kvm kmod-kvm qemu
再装入kvm模块:modprobe kvm-intel (Intel机器) 或者 modprobe kvm-amd (amd机器)
注3:可以用以下命令来检查是否装入kvm模块:
/sbin/lsmod | grep kvm
如果输出关于kvm版本的信息则已装入kvm模块
注4: 安装好后,可使用qemu-kvm命令,输入该命令,如果系统显示未知的命令,可查看/usr/libexec中是否有qemu-kvm可执行文件,如果有,将其拷贝到/bin目录下即可。如果确实按照上面的步骤进行了,却在/bin,/usr/libexec,/usr/bin,/usr/sbin里都找不到qemu-kvm可执行文件,可执行以下命令:
#yum provides */qemu-kvm
注5:安装新内核后,可能有部分软件版本过低,不兼容。比如firefox因版本过低,无法启动。
CentOS下可使用如下命令更新该软件(以firefox为例):
#yum update firefox
三、在KVM下安装虚拟机
1.用QEMU创建磁盘镜像
sudo qemu-img create –f qcow windows.img 8G
注:在CentOS和新版Qemu中为:qemu-img create –f qcow2 windows.img 8G
2.使用KVM安装Guest VM
光盘安装:
sudo kvm –localtime –cdrom /dev/cdrom -m 512 -boot d win2.img
硬盘安装:
sudo kvm –localtime –m 512 –hda windows.img –cdrom winxp.iso –boot d –clock –rtc –no-acpi
注:官方推荐使用 -no-acpi 参数,原因是 qemu/kvm不太支持,可能造成 cpu 的占用偏高。
注1:CentOS下硬盘安装为 qemu-kvm –localtime –m 512 –hda windows.img –cdrom winxp.iso –boot d –no-acpi 即需要去掉了-clock rtc选项,否则会出现无法初始化时钟。
注2:CentOS quest mouse: export SDL_VIDEO_X11_DGAMOUSE=0可解决VM中无法识别USB鼠标的问题。
注3: 安装win 7时,不能使用-no-acpi选项。
KVM之二:KVM工具简介一:virt-manager,virt-viewer,virt-convert,qemu-img
下篇预告: KVM工具简介二: virt-install
l virt-manager介绍:
在第一篇已经提到过virt-manager, 使用了virt-manager来创建虚拟机。
virt-manager是一套虚拟机的桌面管理器,像VMware的vCenter和xenCenter差不多,工具提供了虚拟机管理的基本功能,如开机,挂起,重启,关机,强制关机/重启,迁移等,并且可以进入虚拟机图形界面进行操作。该工具还可以管理各种存储以及网络方面。
Ø 命令用法:
l virt-viewer介绍:
virt-viewer是一个最小化的虚拟机图形界面展示工具,支持VNC 和SPICE两种远程协议。virt-viewer使用十分简单。
Ø 命令用法:
l virt-convert 介绍:
virt-convert可以OVF或VMX文件转换为KVM的支持格式。默认转换是”raw”。这个工具主要是实现v2v,将现用的VM打包并导入新的KVM环境。
Ø 选项:
Ø 举例:
l qemu-img介绍:
关于转换还有一个常用的工具: qemu-img 。qemu-img是QEMU的磁盘管理工具,在KVM环境中该工具必不可少。与上面的 virt-convert 不同,qemu-img是使用在磁盘类型的转换。
Ø 命令用法:
Ø 命令及选项:
用于创建一个格式为fmt大小为size文件名为filename的镜像文件。根据文件格式fmt的不同,还可以添加一个或多个选项(options)来附加对该文件的各种功能设置,可以使用“-o ?”来查询某种格式文件支持那些选项,在“-o”选项中各个选项用逗号来分隔。
Ø 举例:
创建一个raw格式,10G的文件。
以test.raw为后端镜像,创建一个qcow2文件。
//有没发现test.qcow2的文件大小并没有10G?
因为指定了后端镜像,新建的镜像只会记录与后端镜像差异,除非你使用了qemu-img commit提交。
b. convert
output_filename
***隐藏网址***
-c:采用压缩,只有qcow和qcow2才支持
-f:源镜像的格式,它会自动检测,所以省略之
-O 目标镜像的格式
-o 其他选先
fname:源文件
out_fname:转化后的文件
Ø 举例:
c. check filename
对磁盘镜像文件进行一致性检查,查找镜像文件中的错误,目前仅支持对“qcow2”、“qed”、“vdi”格式文件的检查。
Ø 举例:
d. Resize filename size
改变镜像文件的大小,使其不同于创建之时的大小。“+”和“-”分别表示增加和减少镜像文件的大小,而size也是支持K、M、G、T等单位的使用。缩小镜像的大小之前,需要在客户机中保证里面的文件系统有空余空间,否则会数据丢失,另外,qcow2格式文件不支持缩小镜像的操作。在增加了镜像文件大小后,也需启动客户机到里面去应用“fdisk”、“parted”等分区工具进行相应的操作才能真正让客户机使用到增加后的镜像空间。不过使用resize命令时需要小心(最好做好备份),如果失败的话,可能会导致镜像文件无法正常使用而造成数据丢失。注意:只有raw格式的镜像才可以改变大小。
Ø 举例:
e. Snapshot filename
-l: 选项是查询并列出镜像文件中的所有快照,
-a snapshot: 是让镜像文件使用某个快照,
-c snapshot: 是创建一个快照,
-d: 是删除一个快照。
Ø 举例:
查看快照:
注意:只有qcow2才支持快照
做快照:
qemu-kvm源码分析一个虚拟机进程里面有几个线程
线程大家都熟悉,new Thread().start()即会创建一个线程,这里我首先指出一点new Thread()其实并不会创建一个真正的线程,只有在调用了start方法之后才会创建一个线程,这个大家分析下Java代码就知道了
Thread的构造函数是纯Java代码,start方法会调到一个native方法start0里,而start0其实就是JVM_StartThread这个方法!
CentOS 7上安装qemu kvm进行虚拟化
egrep -o ’(vmx|svm)’ /proc/cpuinfo
yum groupinstall "Virtualization Host"
yum install qemu-kvm qemu-img virt-manager libvirt virt-install virt-viewer
qemu-kvm:qemu模拟器
qemu-img:qemu磁盘image管理器
virt-install:用来创建虚拟机的命令行工具
libvirt:提供libvirtd daemon来管理虚拟机和控制hypervisor
virt-viewer:图形控制台
virt-manager:图形实用程序
开机启动libvirt
systemctl enable libvirtd
启动libvirt
systemctl start libvirtd
启动状态
systemctl status libvirtd
yum install virt-install
yum install virt-manager
参考
***隐藏网址***
***隐藏网址***

更多文章:
如何用anaconda打开python3(怎样打开anacondapython)
2026年7月20日 14:00
linux修改ip配置文件(如何修改LINUX的IP地址、网关和主机名)
2026年2月9日 14:15
激光切割机电脑编程好学吗(学习激光打标机和激光切割机 要学习什么)
2025年12月27日 04:45
怎样制作模板 教程(ppt模板的设计-如何制作ppt模板教程)
2026年7月25日 12:15
findfirstfile函数(FindFirstFile查找文件,使用通配符问题)
2026年1月6日 13:45
responsibility缩写(csr是什么意思 对企业有什么意义)
2026年5月8日 21:45
eclipse安装失败 show log(eclipse安装出现错误日志)
2025年7月11日 03:15
vlookup函数不是首列(excel vlookup 第一参数不在第一列 怎么办急)
2026年7月23日 02:00
fopen的文件名(c语言中,fopen(“文件名”,“打开方式”)中的文件名可以是变量吗谢谢)
2026年5月5日 07:30
rtos是什么意思?在学习freertos之前,应学习哪些东西
2025年10月10日 08:00
多文件同时md5(如何用java或者c#写个扫描整个文件夹及子文件夹,验证多个文件的md5值,并将md5值重复但不同)
2026年7月14日 03:45
kafka rocketmq区别(Kafka还是RabbitMQ)
2026年2月20日 09:15











