神器 Qemu 一 利用X11 渲染将qmeu 跑在Windows 上
来源:互联网 发布:计算机二级vb上机题库 编辑:程序博客网 时间:2024/05/18 01:47
From: Virtual Machine
摘要
QEMU是一款高效而实用的模拟器及虚拟机监管器,本系列博客试图从最基本的安装使用开始,逐层深入地介绍QEMU。本篇文章从QEMU最基础的知识讲起,介绍了QEMU的安装使用、系统模拟的基本原理以及如何利用QEMU来创建和管理虚拟机。
一、QEMU简介
QEMU是一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor, VMM)。QEMU主要提供两种功能给用户使用。一是作为用户态模拟器,利用动态代码翻译机制来执行不同于主机架构的代码。二是作为虚拟机监管器,模拟全系统,利用其他VMM(Xen, KVM, etc)来使用硬件提供的虚拟化支持,创建接近于主机性能的虚拟机。
用户可以通过不同Linux发行版所带有的软件包管理器来安装QEMU。如在Debian系列的发行版上可以使用下面的命令来安装:
sudo apt-get install qemu
除此之外,也可以选择从源码安装。
获取QEMU源码
可以从QEMU官网上下载QEMU源码的tar包,以命令行下载2.0版本的QEMU为例:
$wget http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2
$tar xjvf qemu-2.0.0.tar.bz2
如果需要参与到QEMU的开发中,最好使用Git获取源码:
$git clone git://git.qemu-project.org/qemu.git
获取QEMU源码
可以从QEMU官网上下载QEMU源码的tar包,以命令行下载2.0版本的QEMU为例:
$wget http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2
$tar xjvf qemu-2.0.0.tar.bz2
如果需要参与到QEMU的开发中,最好使用Git获取源码:
$git clone git://git.qemu-project.org/qemu.git
configure脚本用于生成Makefile,其选项可以用./configure –help查看。这里使用到的选项含义如下:
–enable-kvm:编译KVM模块,使QEMU可以利用KVM来访问硬件提供的虚拟化服务。
–enable-vnc:启用VNC。
–enalbe-werror:编译时,将所有的警告当作错误处理。
–target-list:选择目标机器的架构。默认是将所有的架构都编译,但为了更快的完成编译,指定需要的架构即可。
二、基本原理
QEMU作为系统模拟器时,会模拟出一台能够独立运行操作系统的虚拟机。如下图所示,每个虚拟机对应主机(Host)中的一个QEMU进程,而虚拟机的vCPU对应QEMU进程的一个线程。
系统虚拟化最主要是虚拟出CPU、内存及I/O设备。虚拟出的CPU称之为vCPU,QEMU为了提升效率,借用KVM、XEN等虚拟化技术,直接利用硬件对虚拟化的支持,在主机上安全地运行虚拟机代码(需要硬件支持)。虚拟机vCPU调用KVM的接口来执行任务的流程如下(代码源自QEMU开发者Stefan的技术博客):
open("/dev/kvm")ioctl(KVM_CREATE_VM)ioctl(KVM_CREATE_VCPU)for (;;) { ioctl(KVM_RUN) switch (exit_reason) { case KVM_EXIT_IO: /* ... */ case KVM_EXIT_HLT: /* ... */ }}
QEMU发起ioctrl来调用KVM接口,KVM则利用硬件扩展直接将虚拟机代码运行于主机之上,一旦vCPU需要操作设备寄存器,vCPU将会停止并退回到QEMU,QEMU去模拟出操作结果。
虚拟机内存会被映射到QEMU的进程地址空间,在启动时分配。在虚拟机看来,QEMU所分配的主机上的虚拟地址空间为虚拟机的物理地址空间。
QEMU在主机用户态模拟虚拟机的硬件设备,vCPU对硬件的操作结果会在用户态进行模拟,如虚拟机需要将数据写入硬盘,实际结果是将数据写入到了主机中的一个镜像文件中。
三、创建及使用虚拟机
命令行创建及启动虚拟机
成功安装QEMU之后便可创建自己的虚拟机。具体步骤如下:
1, 使用qemu-img创建虚拟机镜像。虚拟机镜像用来模拟虚拟机的硬盘,在启动虚拟机之前需要创建镜像文件。
[kelvin@kelvin tmp]
fedora.img
-f选项用于指定镜像的格式,qcow2格式是QEMU最常用的镜像格式,采用写时复制技术来优化性能。fedora.img是镜像文件的名字,10G是镜像文件大小。镜像文件创建完成后,可使用qemu-system-x86来启动x86架构的虚拟机:
qemu-system-x86_64 fedora.img
此时会弹出一个窗口来作为虚拟机的显示器,显示内容如下:
因为fedora.img中并未给虚拟机安装操作系统,所以会提示“No bootable device”,无可启动设备
2, 准备操作系统镜像。
可以从不同Linux发行版的官方网站上获取安装镜像,以fedora20为例:
[kelvin@kelvin tmp]$ wget http://ftp6.sjtu.edu.cn/fedora/linux/releases/20/Live/x86_64/Fedora-Live-Desktop-x86_64-20-1.iso
3, 检查KVM是否可用。
QEMU使用KVM来提升虚拟机性能,如果不启用KVM会导致性能损失。要使用KVM,首先要检查硬件是否有虚拟化支持:
[kelvin@kelvin ~]$ grep -E ‘vmx|svm’ /proc/cpuinfo
如果有输出则表示硬件有虚拟化支持。其次要检查kvm模块是否已经加载:
[kelvin@kelvin ~]$ lsmod | grep kvm
kvm_intel 142999 0
kvm 444314 1 kvm_intel
如果kvm_intel/kvm_amd、kvm模块被显示出来,则kvm模块已经加载。最后要确保qemu在编译的时候使能了KVM,即在执行configure脚本的时候加入了–enable-kvm选项。
4, 启动虚拟机安装操作系统。
执行下面的命令启动带有cdrom的虚拟机:
[kelvin@kelvin tmp]$ qemu-system-x86_64 -m 2048 -enable-kvm fedora.img -cdrom ./Fedora-Live-Desktop-x86_64-20-1.iso
2, 准备操作系统镜像。
可以从不同Linux发行版的官方网站上获取安装镜像,以fedora20为例:
[kelvin@kelvin tmp]$ wget http://ftp6.sjtu.edu.cn/fedora/linux/releases/20/Live/x86_64/Fedora-Live-Desktop-x86_64-20-1.iso
3, 检查KVM是否可用。
QEMU使用KVM来提升虚拟机性能,如果不启用KVM会导致性能损失。要使用KVM,首先要检查硬件是否有虚拟化支持:
[kelvin@kelvin ~]$ grep -E ‘vmx|svm’ /proc/cpuinfo
如果有输出则表示硬件有虚拟化支持。其次要检查kvm模块是否已经加载:
[kelvin@kelvin ~]$ lsmod | grep kvm
kvm_intel 142999 0
kvm 444314 1 kvm_intel
如果kvm_intel/kvm_amd、kvm模块被显示出来,则kvm模块已经加载。最后要确保qemu在编译的时候使能了KVM,即在执行configure脚本的时候加入了–enable-kvm选项。
4, 启动虚拟机安装操作系统。
执行下面的命令启动带有cdrom的虚拟机:
[kelvin@kelvin tmp]$ qemu-system-x86_64 -m 2048 -enable-kvm fedora.img -cdrom ./Fedora-Live-Desktop-x86_64-20-1.iso
即可。
图形界面创建及启动虚拟机
命令行启动虚拟机比较繁琐,适合开发者,但对于普通用户来说,采用图形界面管理虚拟机则更为方便。采用图形界面管理QEMU虚拟机需要安装virt-manager,debian系列的发行版只需要执行命令:
$sudo apt-get install virt-manager
安装完成后用root用户启动virt-manager:
$su -
virt-manager
启动后的界面如下图所示:
以上博文转自宅蓝三木同学;,支持原创;
Q & A
1、如何在Windows 上运行virt-manaeger ?
相信很多朋友可能会遇到下面的情况,服务器装的是Linux Server 版本,不能直接运行GUI环境而且由于服务器的特殊性,我们一般只能通过SSH 来连接服务器;
-1. 安装 Xming,然后运行Xming.
-2. 配置putty的ssh选项, 打开X11转发.
-3. 在putty的ssh中输入virt-manager,这样就会在windows上其界面.
2、如何使用桥接网络?
sudo apt-cache search uml-utilities
sudo apt-get install uml-utilities
sudo apt-get install bridge-utils
安装上述软件包以后,qemu 默认会使用macvtap 接口来做桥接,但是这样会出现一个问题,那就是宿主机和虚拟机之前互相ping 不通;
为解决此问题,我们自己配置一个桥
sudo vim /etc/network/interfaces
auto br0
iface br0 inet static
bridge_ports eth0 //此处为你接入网线的接口
address 192.168.2.100
gateway 192.168.2.1
netmask 255.255.0.0
By: Keven - Virtual Machine
- 神器 Qemu 一 利用X11 渲染将qmeu 跑在Windows 上
- 如何在Windows平台上编译Qemu
- 在X11上运行microwindows
- 在Windows上用QEMU仿真ARM系统
- 在Windows上用QEMU仿真ARM系统
- 背黑锅的vlc(一):使用x11渲染出错
- 在QEMU上运行vxworks
- ubuntu上利用qemu-kvm创建虚拟机
- 将grub2安装到qemu上
- windows下利用qemu学习开发linux
- 如何将windows安装在移动硬盘上
- ubuntu 10.04/Windows上编译qemu 1.2
- 编译安装qemu并在qemu上安装centos6.5
- 在ubuntu 8.04上构建openmoko qemu
- Gentoo在qemu上的安装笔记
- Microwindows 在 MINI2440 QEMU上的移植
- 在UBUNTU上安装XP(QEMU、KVM)
- 在Ubuntu上通过qemu模拟beagleboard
- spring mvc的实行代码—采用xml配置
- Qt 蓝牙部分翻译
- mfc入门
- 关于spring的基本知识介绍
- spring的AOP编程
- 神器 Qemu 一 利用X11 渲染将qmeu 跑在Windows 上
- mybatis报错spring.MyBatisSystemException
- 网络流算法--Ford-Fulkerson方法及其多种实现
- jQuery 如何得到 scrollHeight 的值
- struts三种方法设置作用域 已经贴了代码
- 百度地图 定位功能
- 经典算法学习——链表中倒数第k个节点
- AndroidStudio导入项目一直卡在Building gradle project info最快速解决方案
- IM软件中的语音录制与播放【iOS】