KVM通过qemu实现USB重定向】的更多相关文章

KVM是通过qemu来支持USB设备的,可以在启动的时候就指定需要连接的USB设备,也可以系统启动后动态的添加删除.通过qemu的help可知,使用qemu的usb_add host:xxx:xxx来添加usb设备,那么如何知道对应的host:xxx:xxx呢,有2种方法: 1)在host主机ubuntu中执行lsusb得到这些信息 比如在我机器上usb的信息如下: Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matc…
载请注明出处: http://www.openext.org/2014/04/kvmqemu/ http://blog.csdn.net/muge0913/article/details/24557729 KVM同hyper-V.Xen都是指在CPU硬件支持基础之上的虚拟化技术. KVM是Linux的一个模块.用modprobe载入KVM模块.载入了模块后,才干进一步通过其它工具创建虚拟机.仅仅有KVM模块是不够的,由于用户无法直接控制内核模块去作事情:还必须有一个用户空间的工具才行. 这个用户…
第一期中,我们一起简要的看了下传统PC和桌面云下USB重定向和USB设备重定向方式的差异,了解了桌面云下外设兼容性问题来源的根源-USB设备本身驱动不规范/不支持, 或者虚拟机驱动实现上与USB设备对接存在疏漏. 本期我们来详细的了解下传统PC和桌面云的外设工作原理 目前,在通用操作系统上,USB外设占主流,下面就以USB摄像头举例说明其两种重定向技术的区别. 传统PC 先认识一下传统(PC机模式)USB外设工作的原理 从上图可以了解到,所有USB外设正常工作,在软件层面依赖的是USB总线驱动.…
1.IO虚拟化的分类 (1)全虚拟化:宿主机截获客户机对I/O设备的访问请求,然后通过软件模拟真实的硬件.这种方式对客户机而言非常透明,无需考虑底层硬件的情况,不需要修改操作系统. QEMU模拟I/O的情况下,当客户机中的设备驱动程序(device driver)发起I/O操作请求之时,KVM模块中的I/O操作捕获代码会拦截这次I/O请求,然后经过处理后将本次I/O请求的信息存放到I/O共享页,并通知用户控件的QEMU程序.QEMU模拟程序获得I/O操作的具体信息之后,交由硬件模拟代码来模拟出本…
KVM/QEMU简介 KVM虚拟机是基于linux内核虚拟化,自linux2.6.20之后就集成在linux的各个主要发行版本中.它使用linux自身的调度器进行管理,所以相对于xen,其核心源码很少.KVM的虚拟化需要硬件的支持(如intel VT技术或者AMD V技术),是基于硬件的完全虚拟化.而xen早期则是基于软件模拟的para-virtualization,新版本是基于硬件支持的完全虚拟化. qemu是一种模拟处理器,现在运用最多的就是将KVM和QEMU结合起来. 准确来说,KVM是L…
说明:个人理解,KVM是内核虚拟化技术,而内核是不能使用在界面上使用的,那么此时QEMU提供了用户级别的使用界面,相互辅助.当然,单独使用QEMU也是可以实现一整套虚拟机,不过QEMU+KVM基本是标配Linux虚拟机管理工具. 一.介绍: 主要分为三个部分.第一部分是虚拟化技术介绍:第二部分是KVM.QEMU与libvirt介绍,第三部分是对网卡的虚拟介绍. 第一部分: 这一部分是对当期存在的虚拟机技术进行简单的总结与讲解,很多是一句而过的.其实每一个技术都可以重新写出一篇内容丰富的博客,但是…
KVM (Kernel Virtual Machine) is a Linux kernel module that allows a user space program to utilize the hardware virtualization features of various processors. Today, it supports recent Intel and AMD processors (x86 and x86_64), PPC 440, PPC 970, S/390…
From:http://blog.sina.com.cn/s/blog_605f5b4f0102uyjv.html KVM是一种基于CPU硬件辅助的全虚拟化技术,没有CPU硬件虚拟化的支持,KVM无法工作. KVM是Linux的一个内核模块,可以是用modprobe加载KVM模块.加载KVM模块后,才能进一步通过其他工具创建虚拟机. 仅有KVM模块是不够的,用户无法直接控制内核模块,需要一个用户空间的工具来辅助操作.开发者选择了已经成型的开源虚拟化软件QEMU. QEMU也是一个虚拟化软件,可以…
虚拟化类型 全虚拟化(Full Virtualization) 全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调guest操作系统和原始硬件,VMM在guest操作系统和裸硬件之间用于工作协调,一些受保护指令必须由Hypervisor(虚拟机管理程序)来捕获处理. 图1 全虚拟化模型 全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源 半虚拟化(Para Virtualization) 半虚拟化是另一种类似于全虚拟化的技术,它使用Hyperviso…
转自:http://blog.csdn.net/julykobe/article/details/27571387 注:本文内容均来自网络,我只是在此做了一些摘抄和整理的工作,来源均有注明. 0.虚拟化 虚拟化简介 我们首先简要介绍一下虚拟化,阐述 QEMU 的搭建背景. 本文中介绍的虚拟化实际上指的是平台虚拟化.在物理硬件上,控制程序可能是主机操作系统或管理程序(见图 1).在某些情况下,主机操作系统就是管理程序.来宾操作系统位于管理程序中.在某些情况下,来宾操作系统与控制程序使用相同的 CP…
1.安装必要的工具: sudo apt-get install build-essential autoconf git-core intltool 2.安装必要的依赖包: -dev libxfixes-dev libjpeg8-dev libsasl2-dev python-pyparsing gtk+- libusb--dev libgudev-1.0-dev libspice-client-gtk-3.0-dev python-gtk2-dev 3.安装smart card readers…
在桌面虚拟化的项目中,常常会遇到用户提出的各自外设需求,这时产品对外设的兼容性就成为了项目成败的拦路虎 本文试图用通俗易懂的语言讲讲USB外设重定向的工作流程,先看看普通PC上USB设备的工作流程 usb硬件只将数据交给usb总线驱动,而应用程序只会把请求提交给本usb设备驱动处理,在usb设备驱动提交usb总线驱动处理 从上图可以看出,能够被虚拟化的只有USB设备驱动和USB总线驱动两个对象 这也是目前业界对USB设备虚拟化的两大主流方式 一.  虚拟USB总线驱动的方案 又叫做USB端口重定…
一. 简介 Quick Emulator(QEMU) 是QEMU/KVM虚拟化套件中的主要组成部分. 它提供了硬件的虚拟化和处理器的仿真. QEMU不用运行在内核,它是运行在用户空间的. QEMU支持下面两部操作模式: 1. 完整的系统仿真:QEMU仿真全部的计算机系统,包括CPU类型和外设. 2. 用户模式的仿真,只是运行在不同架构之上的一个进程. 二. 安装和配置QEMU 1. 本节点使用的编译好的包,但在生产环境中,为了做到各KVM服务器版本统一,建议自己编译. 官方网站下载地址:http…
编译virt viewer之前执行的configure命令,是没有使能usb-redir相关的功能,virt viewer是否支持usbredir是完全依赖于spice-gtk的. virt viewer对spice-gtk的依赖关系,可以从virt viewer的configure结果看出来: configure: Configuration summary configure: ===================== configure: configure:  Features: co…
qga是一个运行在虚拟机内部的普通应用程序(可执行文件名称默认为qemu-ga,服务名称默认为qemu-guest-agent),其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于virtio-serial(默认首选方式)或者isa-serial,而QEMU则提供了串口设备的模拟及数据交换的通道,最终呈现出来的是一个串口设备(虚拟机内部)和一个unix socket文件(宿主机上).  qga通过读写串口设备与宿主机上的socket通道进行交互,宿主机上可以使用普通的…
qemu的配置参数又复杂又难用,man手册写的也是非常对付,很多信息都没有. 而且,竟然遗弃掉旧的配置,换用新的配置.不过这也是好事,说明它在发展,我是欢迎的. 唯一的问题是,要经常跟着它一起更新配置脚本. 升了新版后,出现下面的warning: ╰─>$ qemu-system-x86_64: -numa node,mem=1G,cpus=-,nodeid=: warning: Parameter -numa node,mem is deprecated, use -numa node,mem…
简介 最近看一些USB fuzzing方面的东西,总结一下.主要是软件方面的工作. vUSBf 文章在这里:https://www.blackhat.com/docs/eu-14/materials/eu-14-Schumilo-Dont-Trust-Your-USB-How-To-Find-Bugs-In-USB-Device-Drivers-wp.pdf qemu支持USB重定向协议,用来远程连接USB设备,vUSBf使用这个来实现不同USB设备的虚拟化. 在USB重定向协议中,USB的数据…
在KVM虚拟机中使用spice系列之二(USB映射,SSL,密码,多客户端支持) 发布时间: 2015-02-27 00:16 1.spice的USB重定向 1.1 介绍 使用usb重定向,在client上插入的U盘会被重定向到虚拟机中. 其有两种实现方式,自动重定向(所有插入client中的U盘都被重定向),或者手动选择需要重定向的U盘 USB重定向需要为虚拟机添加USB2 EHCI驱动,以及若干个Spice channels,Spice channels的个数决定了客户端一次可以有多少个US…
虚拟化: KVM是一个基于Linux内核的虚拟机,属于完全虚拟化.虚拟机监控的实现模型有两类:监控模型(Hypervisor)和宿主机模型(Host-based).由于监控模型需要进行处理器调度,还需要实现各种驱动程序,以支撑运行其上的虚拟机,因此实现难度上一般要大于宿主机模型.KVM的实现采用宿主机模型(Host-based),KVM是集成在Linux内核中的,因此可以自然地使用Linux内核提供的内存管理.多处理器支持等功能,易于实现,而且还可以随着Linux内核的发展而发展.另外,目前KV…
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分配和 SR-IOV (5)libvirt 介绍 (6)Nova 通过 libvirt 管理 QEMU/KVM 虚机 (7)快照 (snapshot) (8)迁移 (migration) 1. Libvirt 是什么 为什么需要Libvirt? Hypervisor 比如 qemu-kvm 的命令行虚…
KVM/QEMU桥接网络设置 配置kvm的网络有2种方法.其一,默认方式为用户模式网络(Usermode Networking),数据包由NAT方式通过主机的接口进行传送.其二,使用桥接方式(Bridged Networking),外部的机器可以直接联通到虚拟机,就像联通到你的主机一样. 第一,用户模式 虚拟机可以使用网络服务,但局域网中其他机器包括宿主机无法连接它.比如,它可以浏览网页,但外部机器不能访问架设在它里面的web服务器. 默认的,虚拟机得到的ip空间为10.0.2.0/24,主机i…
转自:http://www.2cto.com/os/201305/209596.html qemu/kvm/qemu-kvm/virsh的区别   qemu是一套虚拟机管理系统,kqemu是qemu的加速器,可以认为是qemu的一个插件:qemu可以虚拟出不同架构的虚拟机,如在x86平台上可以虚拟出power机器:       kvm是另外的一套虚拟机管理系统,包括内核虚拟构架和处理器相关模块,其借用了 quem 其它一些组件,kvm的非内核部分是由qemu实现的:加载了模块后,才能进一步通过其…
概念: KVM,即Kernel-basedvirtual machine,由redhat开发,是一种开源.免费的虚拟化技术.对企业来说,是一种可选的虚拟化解决方案. 定义:基于Linux内核的虚拟机 解释: KVM .XEN.Hyper-V 这类 Hypervisor 是为商用而生的,他们本身就是一种 OS,直接运行 在硬件之上,例如KVM,架构是:硬件 ---> {Linux Kernel + KVM} ---> VM,即加载了 KVM module 的 Linux Kernel 本身就是一…
What's QEMU QEMU是一个主机上的VMM(virtual machine monitor),通过动态二进制转换来模拟CPU,并提供一系列的硬件模型,使guest os认为自己和硬件直接打交道,其实是同QEMU模拟出来的硬件打交道,QEMU再将这些指令翻译给真正硬件进行操作.通过这种模式,guest os可以和主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB设备进行交互.但由于所有指令都需要经过QEMU来翻译,因而性能会比较差: What's KVM? KVM实际是linux…
kvm简介 kvm最初由Quramnet公司开发,2008年被RedHat公司收购.kvm全称基于内核的虚拟机(Kernel-based Virtual Machine),它是Linux的一个内核模块.包括核心虚拟化模块kvm.ko,以及特定CPU的模块kvm-inet.ko或kvm-amd.ko,其实现需要宿主机的CPU支持硬件虚拟化.从Linux内核版本2.6.20开始,kvm模块就已经包含在Linux内核中了.在X86平台下CPU的硬件虚拟化技术有Inetl的VT-X和AMD的AMD-V.…
有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持 -usbdevice devname 为客户机增加usb设备,devname有多种形式,详见man kvm,这里只涉及一种形式host:vendor_id:product_id,也就是-usbdevce vendor_id:product_id 获取USB设备参数 将usb设备插入主机之前 $lsusb > usb.old usb设备插入主机之后 $lsusb >…
当你安装了一台Linux,想启动一个KVM虚拟机的时候,你会发现需要安装不同的软件,启动虚拟机的时候,有多种方法: virsh start kvm命令 qemu命令 qemu-kvm命令 qemu-system-x86_64命令 这些之间是什么关系呢?请先阅读上一篇<我是虚拟机内核我困惑> 有了上一篇的基础,我们就能说清楚来龙去脉. 首先看qemu,其中关键字emu,全称emulator,模拟器,所以单纯使用qemu是采用的完全虚拟化的模式. Qemu向Guest OS模拟CPU,也模拟其他的…
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之间的内容按照数学公式进行排版,从而导致评论区格式混乱.如果大家的评论中用到了$,但是又不是为了使用数学公式,就请使用\$转义一下,谢谢. 想从头阅读该系列吗?下面是传送门: Linux 桌面玩家指南:01. 玩转 Linux 系统的方法论 Linux 桌面玩家指南:02. 以最简洁的方式打造实用的…
有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持-usbdevice devname 为客户机增加usb设备,devname有多种形式,详见man kvm,这里只涉及一种形式host:vendor_id:product_id,也就是-usbdevce vendor_id:product_id 获取USB设备参数 将usb设备插入主机之前 $lsusb > usb.old usb设备插入主机之后 $lsusb > u…
在所谓的kvm技术中,应用到的其实有2个东西:qemu+kvmkvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备:qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化.因为用到了上面两个东西,所以一般都称之为qemu-kvm.libvirt则是调用kvm虚拟化技术的接口用于管理的,用libvirt管理方便,直接用qemu-kvm的接口太繁琐. Qemu Qemu是一个模拟器,它向Guest OS模拟CPU和其他硬件,Gu…