![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
云计算
文章平均质量分 63
上善若水75
这个作者很懒,什么都没留下…
展开
-
libvirt NAT 网桥手工配置
1. 关闭主机上的所有虚拟机;2. 在命令行下运行命令删除旧的虚拟网桥:root# brctl delbr virbr03. 在命令行下执行命令删除旧的虚拟网桥配置文件:root# rm –rf /etc/sysconfig/network-scripts/ifcfg-virbr04. 在命令行下执行命令建立libvirt的虚拟网络:原创 2014-07-10 16:08:49 · 3644 阅读 · 0 评论 -
KVM-QEMU vdagent实现机制分析(二)
1. 虚拟串口模块的初始化注册在QEMU中与虚拟串口(virtio-serial)通信相关的文件主要有以下几个:Virtio-pci.cvirtio-serial-bus.c(h) //从名字上看也像virtio-console.cvl.c //qemu的main函数在这里原创 2013-07-25 16:36:10 · 5412 阅读 · 0 评论 -
KVM-QEMU vdagent实现机制分析(一)
在Ubuntu12.10下搭建基于KVM-QEMU的虚拟机环境(十八)中我们实验了通过在虚拟机里面安装vdagent(Spice Agent)程序来自动适应屏幕分辨率的功能,这个vdagent是运行在虚拟机里面的,而分辨率的信息来自spice client,这中间隔着spice server,qemu等模块,中间的过程还是比较复杂的。通过分析这个流程,有助于帮助我们理解更多KVM-QEMU原创 2013-07-25 10:59:42 · 11974 阅读 · 4 评论 -
基于virtio在虚拟机与主机之间传递消息
Virtio是Linux虚拟机平台上统一的虚拟IO接口驱动。通常主机为了让客户机像在真实环境中一样运行,需要为客户机创建各式各样的虚拟设备,如磁盘,网卡,显卡,时钟,USB 等。这些虚拟设备大大降低了客户机的性能。使用virtio。虚拟机guest不用关注如何创建各种虚拟硬件设备(如磁盘,网卡,显卡等),可以用统一的虚拟设备,因此大大提高虚拟机的性能。这个统一的虚拟设备就是virtio。转载 2013-07-24 15:53:51 · 7524 阅读 · 0 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十九)
Spice 客户端和spice 服务端通常运行在不同的机器上,运行spice服务端的主机通常有着多颗多核的CPU以及几十G以上的内存,通过底层支持虚拟化的KVM+qemu环境虚拟出几台到几十台虚拟机,供运行Spice客户端的终端连接使用,这些终端通常配置较低,仅仅充当虚拟桌面的显示之用,当然还有键盘、鼠标的输入和声音的输出等基本功能,这些在我们之前介绍的spice连接中都已经具备。原创 2013-07-20 22:52:38 · 7602 阅读 · 14 评论 -
virtio 介绍
KVM是必须使用硬件虚拟化辅助技术(如Intel VT-x、AMD-V)的hypervisor,在CPU运行效率方面有硬件支持,其效率是比较高的;在有Intel EPT特性支持的平台上,内存虚拟化的效率也较高。QEMU/KVM提供了全虚拟化环境,可以让客户机不经过任何修改就能运行在KVM环境中。不过,KVM在I/O虚拟化方面,传统的方式是使用QEMU纯软件的方式来模拟I/O设备(如第4章中提到模拟转载 2013-07-05 21:15:41 · 5378 阅读 · 0 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(九)
Libvirt其实并没有太多“实质”的东西,它所做的大部分都是要通过Hypervisor(如KVM-Qemu,XEN等)来实现的,它本质上就是一个适配器和管理库。但是它又是非常有价值的,它一方面封装了不同Hypervisor的底层不同实现,提供了统一的使用接口给上层应用,另一方面它通过规范的XML定义、命令行工具和API使得我们对虚拟机的使用和管理变得更方便。Libvirt其实并没有太多“原创 2013-07-04 22:13:35 · 2997 阅读 · 0 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十八)
到目前为止,我们用spice客户端连接虚拟机的命令如下:dev@devhost:/opt/vm# sudo spicec –h 127.0.0.1 –p 4000 //127.0.0.1可以用实际的主机IP地址代替,这样在其他机器上也可以远程连接到这台虚拟机 。 这样连上去的效果,看到的虚拟机窗口缺省是一个640x480的窗口,那么有没有办法让虚拟机窗口全屏呢,原创 2013-07-18 20:56:50 · 7210 阅读 · 1 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(八)
Libvirt是用c写的一个管理虚拟机及其资源(如网络、存储和外设等)的工具库,它不仅支持KVM/QEMU,它还支持xen,Vmware,OpenVZ和VirtualBox等其他HyperVisor,关于它的详细信息参考http://www.libvirt.org/。 我们从 https://launchpad.net/ubuntu/+source/libvirt/1原创 2013-07-02 21:47:03 · 2501 阅读 · 1 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十七)
今天我们实验一些libvirt虚拟机XML定义文件中的配置参数。 XP_VM4 92f1ab08-e115-4016-a522-b550ff593af8 1024000 1024000 1 hvm原创 2013-07-16 21:55:41 · 2839 阅读 · 0 评论 -
Spice代码阅读一:Spice Client 与 Spice Server 通道建立过程
文件方法描述Application.cppinit_globals()初始化Log,ssl库,canvas(或opengl canvas)和quic压缩库 Process_cmd_line()解析命令行连接参数 init_platform_globals(原创 2013-08-04 19:56:14 · 8219 阅读 · 1 评论 -
KVM-QEMU vdagent实现机制分析(三)
承接KVM-QEMUvdagent实现机制分析(2),在qemu将vdagent通过虚拟串口打开字符设备的事件传给spice server之后,spice server的处理是怎么样的呢?还是用图来说明比较形象一点: 上图中的步骤解释:1. 当在虚拟机里启动vdagent,qemu的spice_chr_guest_open被触发,调用spice server 的spi原创 2013-07-28 22:32:21 · 4160 阅读 · 0 评论 -
Spice代码阅读二:Primary surface 创建过程
Spice 主窗口表面的创建应该由虚拟机的QXL驱动发起,经由QEMU将相关参数传递给spice server(主要由负责显示的red_worker.c完成),最后spice server将SPICE_SURFACE_FLAGS_PRIMARY 消息发给spice client完成。上图中省略了QXL driver与 spice client相关部分的过程,用文字来说明。原创 2013-08-05 18:54:35 · 5797 阅读 · 0 评论 -
Mingw32编译Virtviewer
Mingw32编译Virtviewer1. 安装Fedora19;2. 安装mingwroot@localhost#yum installmingw* --skip-broken3. 安装其他依赖root@localhost#yum install intltoolroot@localhost#yum install icoutils.i原创 2013-10-21 21:32:33 · 3446 阅读 · 3 评论 -
Usbclerk 编译安装
Usbclerk 编译安装编译工具 VS2008或 VS2010编译步骤如下:1. 安装VS2008或VS2010,这个不细说;2. 下载usbclerk源码从 http://cgit.freedesktop.org/~agilboa/usbclerk/commit/?id=12e2d63604d689918c26baeeff78bd51ff46原创 2013-10-17 18:34:33 · 3877 阅读 · 0 评论 -
Libwdi 编译安装
Libwdi 编译安装1. 编译工具可以采用MinGW,MinGW-w64,Microsoft Visual C++ (Visual Studio)等编译,但最好的是采用Windows DDK build environment进行编译,为了支持XP系统,建议编译环境设置在XP上,否则从win7等系统编译出来的libwdi.dll不能再XP上使用。编译步骤如下:原创 2013-10-17 18:33:30 · 7191 阅读 · 3 评论 -
QXL驱动分析(一)
QXL安照windows2000显示架构编写,见下图: QXL实现的功能主要包含两块:Display Driver 和 Video Miniport。1. Display DriverDisplay Driver以动态链接库qxldd.dll的形式提供,处于内核态,主要是提供绘图API给GDI,这样当最上层的应用需要绘图的时候,通过调用GDI API(gdi32.dll),GDI原创 2013-08-13 17:50:02 · 33417 阅读 · 0 评论 -
QXL驱动分析(二)——FindAdapter
QXL.c ULONG DriverEntry(PVOID context1, PVOID context2)是mini port的入口,其中初始化了一个很重要的结构:VIDEO_HW_INITIALIZATION_DATA。该结构定义中的HwFindAdapter是video miniport driver必须的,主要用来初始化显示适配器的存储和配置信息,它被video port drive原创 2013-08-16 18:23:35 · 4561 阅读 · 1 评论 -
Spice代码分析(三)——red_worker: red_init
Spice 的图形子系统是最Spice最核心也是最复杂的一块,它不像其他的几个子系统由spice server 主进程来处理,而是有一个单独的线程处理,而且与主进程是并行运行的,负责这个处理的线程就是Red worker。具体来说,redworker负责以下的处理:1) 处理QXL设备命令(如画,更新,光标处理等);2) 处理从Dispatcher接收到的消息;原创 2013-08-10 11:05:38 · 5610 阅读 · 0 评论 -
spice client 和 spice server 通信机制
作者:“达沃时代” 原文链接:http://www.cnblogs.com/D-Tec/archive/2013/04/19/3030129.html〇、基本原理目前的Channel类型枚举值定义如下:enum { SPICE_CHANNEL_MAIN = 1, SPICE_CHANNEL_DISPLAY, SPICE_CHANNEL_IN转载 2013-08-06 15:38:40 · 6729 阅读 · 0 评论 -
Spice VDI接口工作方式
作者“达沃时代” 原文链接:http://www.cnblogs.com/D-Tec/archive/2013/03/01/2939311.htmlVDI接口工作方式Spice中的VDI(Virtual Device Interfaces)是一个经过专门设计的接口规范,其设计哲学可以推广到很多需要做功能扩展的软件项目中。此类接口设计的主要目标是在尽量不改变原有代码的情况下,通过转载 2013-08-06 15:28:03 · 6625 阅读 · 1 评论 -
Qemu, Spice 消息模型
作者“达沃时代” 原文链接:http://www.cnblogs.com/D-Tec/archive/2013/03/21/2973339.html网络事件处理是libspice设计中最关键的部分,可以说是整个Spice的骨架,用以支撑Spice的运行,是理解Spice运作方式的切入口之一(VDI是另一个阅读代码的切入口)。Spice的server和client通信方式采用了三种转载 2013-08-06 15:16:38 · 2664 阅读 · 0 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(七)
qemu编译出来以后,其实就已经可以做一些虚拟机的使用体验了,因此在继续下一步之前,我们先小小的体验一下,感受一下创建和使用虚拟机的乐趣。一.创建镜像文件我们平常装在PC上的操作系统是驻留在硬盘上的,硬盘逻辑上又可以分为多个驱动器,如C盘对应系统盘,D盘对应数据盘等。虚拟机也有类似盘的概念,只不过它通常以文件的形式存在,我们也可以分别创建对应系统盘和数据盘的镜像文件。创建这种镜像文件的原创 2013-06-30 10:49:40 · 2766 阅读 · 0 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(六)
正如本系列第一篇文章架构图所示Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(一),除了在内核空间的KVM模块之外,在用户空间需要QEMU来模拟所需要CPU和设备模型以及用于启动客户机进程,这样才有了一个完整的KVM运行环境。而qemu-kvm是为了针对KVM专门做了修改和优化的QEMU分支,具体关于KVM,QEMU-KVM的介绍还是请参阅相关的官方网站:http://www.li原创 2013-06-29 20:18:07 · 6045 阅读 · 16 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(五)
今天要编译的是Spice,Spice是一个类似RDP的远程连接协议,它基于网络连接,适用于本地、局域网或广域网(说实在的,以目前中国广域网的带宽和延迟,如果没有很好的优化,还是不太适合的)。与RDP的相对独立性不同,Spice并不能独立工作,它需要与Qemu-KVM等结合使用。Spice是一种Client——Server的架构,虚拟化主机这端驻留SpiceServer,要使用远程桌面的终端这边原创 2013-06-29 09:46:30 · 4078 阅读 · 0 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十一)
上一个介绍主要讲了如何virtio驱动对于虚拟机性能改善的重要性以及如何安装针对磁盘的虚拟驱动,接下来我们继续安装其他几个虚拟驱动:QXL虚拟显卡、虚拟网卡、虚拟串口和改善显示和鼠标体验的vdagent程序。在继续之前我们先还是有针对性的修改定义虚拟机的XML定义文件,参阅红色字体部分: XP_VM2 91f15b08-e115-4016-a522-b550f原创 2013-07-06 23:24:13 · 4312 阅读 · 0 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十)
在Ubuntu12.10下搭建基于KVM-QEMU的虚拟机环境(九)中我们用libvirt定义创建、启动和使用了基本的虚拟机过程。今天开始我们通过对XML的更多tag的改变来尝试更多新的功能。 今天要实验的是virtio 的功能,有关virtio的介绍参阅:http://www.linux-kvm.org/page/Virtio 和http://www.ibm.com原创 2013-07-05 21:47:44 · 3871 阅读 · 0 评论 -
用libvirt 挂载光驱
在libvirt 官方文档里,挂载光驱的XML定义如下: 按照这个定义,采用qemu-kvm定义和启动虚拟机以后,发现这个光驱在虚拟机里盘符出现,但是无法读取光盘内容。 后来跑到本地系统 /dev 下找光驱,发现:/dev/cdrom6 -> sr0原来本地光驱不叫cdrom,而是c原创 2013-06-18 11:43:00 · 6399 阅读 · 0 评论 -
Ubuntu12.04下编译可维护的libusb debian包
1. 从https://launchpad.net/debian/+source/libusb 下载最新的libusb版本及debian配置包:libusb_0.1.12-23.2.debian.tar.gz; libusb_0.1.12-23.2.dsc; libusb_0.1.12.orig.tar.gz2. 将上述3个文件上传到 Ubuntu12.04 系统的 /opt下原创 2013-06-13 21:23:13 · 1739 阅读 · 0 评论 -
利用libvirt命令动态挂载数据盘的方法
在利用KVM的虚拟桌面应用中,有时候需要在虚拟桌面起来后还能够动态的挂载或卸载数据盘,以达到类似热插盘U盘或移动硬盘的效果,当然管理上需要做处理。如果纯粹中技术上来讲,大概是下面的几步:1. 创建数据盘: 创建数据盘可以用qemu-img命令,但是缺点是创建完以后还需要在虚拟机里面做磁盘初始化(在磁盘管理里)和格式化。相比较而言,用libguestfs带的 virt-make-fs就原创 2013-05-23 18:16:11 · 6359 阅读 · 0 评论 -
Ubuntu12.04下制作可维护的Spice debian包
1. 从 https://launchpad.net/ubuntu/+source/spice/ 下载最新的spice版本及debian配置包: spice_0.12.2-0nocelt2expubuntu1.debian.tar.gz, spice_0.12.2-0nocelt2expubuntu1.dsc,spice_0.12.2.orig.tar.bz2;2. 将上述3个文件上传到 Ub原创 2013-04-17 13:37:37 · 841 阅读 · 0 评论 -
利用qemu-img创建系统镜像补丁,解决系统升级的方法
1. 假设一批用户已经在使用 xp.img作为母镜像C盘正在使用;2. 现在用户需要统一安装QQ软件;3. 使用qemu-img命令创建 link-copy的增量补丁: qemu-img create -f qcow2 -b xp.img xp_patchQQ.img;4. 以xp_patchQQ.img作为启动盘启动虚拟机;5. 在虚拟机里安装QQ软件,然后关闭虚拟机;6.原创 2012-09-25 11:39:34 · 1470 阅读 · 0 评论 -
qemu kvm 详细教程
qemu kvm 详细教程2010-07-28 11:53转载自http://forum.ubuntu.org.cn/viewtopic.php?f=65&t=154792&sid=591087b7c7a8b9dcef3c39f297d78946研究了很久的KVM,感觉是我用过的最快的虚拟机。对比常用的虚拟机,Vmware的功能全面,设置简单,但其速度不是很转载 2012-07-30 23:53:24 · 2692 阅读 · 0 评论 -
Ubuntu12.04 编译qemu-kvm 1.1.0
1. 从http://sourceforge.net/projects/kvm/files/下载最新版本 qemu-kvm-1.1.0.tar.gz;2. 安装依赖包: sudo apt-get install gcc libsdl1.2-dev zlib1g-dev libasound2-dev linux-libc-dev pkg-config libgnutls-dev pciutils原创 2012-07-30 23:48:13 · 1796 阅读 · 0 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十二)
Libvirt除了在虚拟机的定义文件中可以初始挂载光驱之外,还有一种动态换盘挂载的方式,那就是采用 virsh命令中的attach-device命令,该命令的具体格式如下: dev@devhost:/opt/vm/xpvm1$ sudo virsh attach-device filename 其中,filename是一个用XML格式定义的文件(我们原创 2013-07-08 22:55:47 · 3845 阅读 · 0 评论 -
ubuntu12 环境下编译freerdp
有时候需要从linux环境下远程连接到windows的环境,可以采用freerdp。freerdp是一个linux下开源的工具,在Ubuntu下可以直接用 apt-get install freerdp-x11安装。但是有时候为了自己需要维护或修改BUG的目的,需要从源码编译一个,下面以Ubuntu12.10环境为例,做了一点尝试。1. 从 https://launchpad.net/ub原创 2013-06-23 10:27:00 · 3785 阅读 · 0 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十三)
今天我们实验libvirt提供的快照功能,快照可以用于系统恢复,防止安装了某些软件或中病毒等情况导致系统损毁的情况。一、快照类型1) 磁盘快照内部的:快照驻留在原来的镜像文件内部外部的:快照以一个新的外部独立文件的形式存在,在此之后,原镜像变成只读,所有改变记录到快照文件里磁盘快照由virsh snapshot-create命令创建2) 内存快照原创 2013-07-09 22:34:26 · 2437 阅读 · 1 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(四)
接下来要编译的是Usbredir,在编译之前大致介绍一下什么是Usbredir:usbredir is the name of a networkprotocol for sending usb device traffic over a network connection. It is alsothe name of the software package offering a pars原创 2013-06-28 21:57:44 · 3717 阅读 · 2 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(三)
原则上来说,qemu, libvirt, libusb, usbredir, spice等都可以通过 apt-get install的方式从Ubuntu源在线安装。但是这样如果碰到一点问题,就比较难办,如果自己从源代码开始编译,那么出了问题可以通过阅读和修改源码,修复相关问题。我们要搭建的各个软件模块是有相互依赖性的,比如qemu依赖libspice-server, Usbredir依赖lib原创 2013-06-27 22:30:34 · 3928 阅读 · 0 评论 -
Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十六)
今天我们继续实验Bridge方式的网络配置。Bridge的逻辑原理图如下: 上图中的“br0”就充当了一个桥的作用,主机上的物理网口eth0等根据需要加入到这个桥里面,所有虚拟机要跟外界通信都通过这个br0, br0再经过真实的物理接口eth0等与外界通信。与NAT不同,桥接方式虚拟机跟主机一样能获得主机所在网络的IP地址,不再由主机进行伪装。那么br0是如何在Ubuntu主机上创原创 2013-07-13 11:13:48 · 4702 阅读 · 1 评论