当前位置:首页 » 操作系统 » qemu源码下载

qemu源码下载

发布时间: 2023-09-19 02:47:03

1. qemu如何使用

qemu从某种意义上功能类似于vmware/virtual box之类的软件,可以让你在当前OS中运行其它的操作系统,但是这仅仅是qemu的一种功能

qemu还可以模拟不同的cpu架构下的系统,比如在普通的个人pc上运行 arm linux之类,这个vmware之类的可能没有

关于qemu的使用
先到官网上下载qemu的源代码,目前是 1.2,如果使用的是linux系统,这个好办,直接编译安装,网上有不少说明的文档

使用的过程一般分为三步
1. 创建虚拟机文件系统
qemu-img create /f qcow2 xxx.img 10G

2. 在虚拟机文件系统中安装操作系统
qemu-system-i386 -hda xxx.img -cdrom xxx.iso -boot d 以xxx.img为文件系统,xxx.iso是系统安装ISO文件

3. 运行安装好的操作系统
qemu-system-i386 -hda xxx.img 运行xxx.img中的系统

以上的命令参数都比较简单,实际使用中需根据具体情况自己配置

2. KVM与XEN区别是什么

一、KVM简介

KVM是一个全虚拟化的解决方案。可以在x86架构的计算机上实现虚拟化功能。但KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。

Xen与KVM的比较

Xen是Linux下的一个虚拟化解决方案,但由于被Citrix收购后,变成了和红帽企业版一样了,卖服务收取费用,Redhat从rhel6.0开始已经从内核中把XEN踢出去了,全心投入开发免费的KVM,虽然市场上老用户还在用Xen,但相信kvm会逐步占领大面积的市场,必竟有redhat做为强大支持源。

Xen的实现方法是运行支持Xen功能的kernel,这个kernel是工作在Xen的控制之下,叫做Domain0,使用这个kernel启动机器后,你可以在这个机器上使用qemu软件,虚拟出多个系统。Xen的缺点是如果你需要更新Xen的版本,你需要重新编译整个内核,而且,稍有设置不慎,系统就无法启动。

相比较,KVM就简化的多了。它不需要重新编译内核,也不需要对当前kernel做任何修改,它只是几个可以动态加载的.ko模块。它结构更加精简、代码量更小。所以,出错的可能性更小。并且在某些方面,性能比Xen更胜一筹。

二、KVM的使用

现在以Turbolinux 11版本为基础,介绍KVM的使用方法。

在安装之前,你需要先确认,你的CPU是否支持虚拟化技术,执行:

# egrep '^flags.*(vmx|svm)' /proc/cpuinfo

如果有输出返回,则表示你的CPU支持虚拟化技术。

1.KVM的安装

从官方网站下载KVM源码包:http://kvm.qumranet.com
我们使用KVM-33版本

# tar zxf kvm-33.tar.gz
# cd kvm-33
# ./configure --prefix=/usr/local/kvm-33
# make
# make install

make install后,kvm的模块会安装到/lib/moles/$KernelVersion/extra/目录下。其他相关文件会安装到/usr/local/kvm-33/目录下。

将kvm相关目录连接到系统目录中

# ln -s /usr/local/kvm-33/bin/* /usr/bin/
# ln -s /usr/local/kvm-33/lib/* /usr/lib/
(若为x86_64系统,则执行: ln -s /usr/local/kvm-33/lib64/* /usr/lib64/)
# ln -s /usr/local/kvm-33/include/kvmctl.h /usr/include/
# ln -s /usr/local/kvm-33/include/linux/* /usr/include/linux/
# ln -s /usr/local/kvm-33/share/qemu /usr/share/

2.KVM的使用

a.你需要先建立一个映像文件作为虚拟系统的硬盘

# mkdir /images
# cd /images
# /usr/bin/qemu-img -f qcow gtes11.img 20G

b.创建网络配置脚本

# echo ’/sbin/ifconfig $1 10.0.1.1 netmask 255.255.255.0’ > /etc/qemu-ifup

c.加载KVM模块

Intel CPU使用:
# modprobe kvm-intel
AMD CPU使用:
# modprobe kvm-amd

d.安装虚拟系统

# /usr/bin/qemu-i386 -m 512 -k en-us -M pc -hda /images/gtes11.img -cdrom /iso/zuma-SP3-rc3-6-\
disc1-20061031.iso -net nic,vlan=1,model=rtl8139,macaddr=00:00:00:00:99:01 -net tap,vlan=1,ifname=tap0,\
script=/etc/qemu-ifup -vnc localhost:1 -boot d

在另一个终端执行:

# vncviewer localhost:1

参数分析:

我们为虚拟系统分配512MB内存。使用gtes11.img作为它的第一块硬盘,使用Turbolinux10.5的disc1作为它的光盘。
并从光盘引导。它有一块rtl8139的网卡,MAC地址为:00:00:00:00:99:01,并把这个网卡与主机的tap0接口连接。
tap0接口使用/etc/qemu-ifup脚本进行初始化。虚拟系统的输出作为一个vnc服务器,绑定在主机的localhost:1上。

注:

1.若为x86_64系统,则使用/usr/bin/qemu-system-x86_64代替qemu-i386

2.在64位系统上,可以安装32位和64位的虚拟系统。但在32位系统上,只能安装32位的虚拟系统。

qemu参数介绍:

-da 映像文件:使用映像文件作为虚拟系统的第一块硬盘。同样还可以使用hdb、hdc、hdd指定第2、3、4块硬盘。
-drom 光盘映像文件:使用光盘映像文件作为虚拟系统的光盘。
-oot [a|c|d|n]:设置虚拟系统的引导顺序。a为软驱、c为硬盘、d为光驱、n为网络。
- 内存大小:设置虚拟系统使用的内存大小,单位为MB。
- 语言:设置虚拟系统键盘类型。
-et nic[,vlan=n][,macaddr=addr][,model=type]
建立一个虚拟网卡,并把它连接到VLAN的n端口上。
-net tap[,vlan=n][,fd=h][,ifname=name][,script=file]

把主机的TAP网络接口连接到VLAN的n端口上,并使用script指定的脚本进行初始化。

3. Qemu安装之后如何卸载

qemu卸载根据安装方式的不同也会有响应的卸载方式:(1)源码编译安装需要手动卸载;(2)ubutnu pakage安装需要命令卸载
(1) 源码编译安装的qemu需要手动卸载:
可执行文件默认放在/usr/local/bin
库文件默认存放在/usr/local/libexec
配置文件默认存放在/usr/local/etc
共享文件默认存放在/usr/local/share

卸载源码只需将上面四个目录中相关文件或者目录删除
#

# rm -rf /usr/local/bin/qemu-*
# rm -rf /usr/local/libexec/qemu-bridge-helper
# rm -rf /usr/local/etc/qemu

# rm -rf /usr/local/share/qemu
(2) pakage安装方式需命令卸载
删除包和相关依赖
# sudo apt-get remove --auto-remove qemu-system-x86
删除配置文件和相关的数据文件
# sudo apt-get purge --auto-remove qemu-system-x86

4. qemu怎样为选择arm linux内核镜像选择运行arm平台

下载Linux内核

下载内核有两种方法,一种是用git直接下载内核代码树,方便后面的内核开发。另一种是直接到内核社区下载对应版本的源码包。我采用第一种方法,但后面发现主线上3.18版本和后面版本的代码,使用这种搭建方法运行不起来。目前未查明问题的根因。如果读者想快速搭建成功,建议选用3.16版本的内核进行搭建。

安装arm的交叉编译工具链

想必做嵌入式开发的朋友,对交叉编译工具链不陌生。如果你订制一个交叉编译工具链,建议你使用crosstool-ng开源软件来构建。但在这里建议直接安装arm的交叉编译工具链:

sudoapt-getinstallgcc-arm-linux-gnueabi

编译Linux内核

生成vexpress开发板子的config文件:

makeCROSS_COMPILE=arm-linux-gnueabi-ARCH=armvexpress_defconfig

编译:

makeCROSS_COMPILE=arm-linux-gnueabi-ARCH=arm

生成的内核镱像位于arch/arm/boot/zImage,后续qemu启动时需要使用该镜像。

下载和安装qemu模拟器

其实Ubuntu12.04有qemu的安装包,但由于版本较低,对vexpress开发板支持不友好,建议下载高版本的qemu:

wget

配置qemu前,需要安装几个软件包:

sudoapt-getinstallzlib1g-dev

sudoapt-getinstalllibglib2.0-0

sudoapt-getinstalllibglib2.0-dev

配置qemu,支持模拟arm架构下的所有单板:

./configure--target-list=arm-softmmu--audio-drv-list=

编译和安装:

make

makeinstall

测试qemu和内核能否运行成功

qemu已经安装好了,内核也编译成功了,到这里最好是测试一下,编译出来的内核是否OK,或者qemu对vexpress单板支持是否够友好。

运行命令很简单:

qemu-system-arm-Mvexpress-a9-m512M-kernel/home/ivan/kernel_git/linux/arch/arm/boot/zImage-nographic-append"console=ttyAMA0"

如果看到内核启动过程中的打印,说明前的搭建是成功的。

这里简单介绍下qemu命令的参数:

-Mvexpress-a9模拟vexpress-a9单板,你可以使用-M?参数来获取该qemu版本支持的所有单板

-m512M单板运行物理内存512M

-kernel/home/ivan/kernel_git/linux/arch/arm/boot/zImage告诉qemu单板运行内核镜像路径

-nographic不使用图形化界面,只使用串口

-append"console=ttyAMA0"内核启动参数,这里告诉内核vexpress单板运行,串口设备是哪个tty。

注意:

我每次搭建,都忘了内核启动参数中的console=参数应该填上哪个tty,因为不同单板串口驱动类型不尽相同,创建的tty设备名当然也是不相同的。那vexpress单板的tty设备名是哪个呢?其实这个值可以从生成的.config文件CONFIG_CONSOLE宏找到。

如果搭建其它单板,需要注意内核启动参数的console=参数值,同样地,可从生成的.config文件中找到。

制作根文件系统

到这里是否大功告成了呢?其实在上面的测试中,你会发现内核报panic,因为内核找不到根文件系统,无法启init进程。

根文件系统要考虑两个方面:

1.根文件系统的内容

如果你看过《LinuxFromScratch》,相信你会对这一步产生恐惧感,但如果一直从事嵌入式开发,就可以放下心来。根文件系统就是简单得不能再简单的几个命令集和态动态而已。为什么LinuxFromScratch会有那么复杂,是因为它要制作出一个Linux发生版。但在嵌入式领域,几乎所有的东西,都是mini版本,根文件系统也不例外。

本文制本的根文件系统=busybox(包含基础的Linux命令)+运行库+几个字符设备

2.根文件系统放在哪里

其实依赖于每个开发板支持的存储设备,可以放到NorFlash上,也可以放到SD卡,甚至外部磁盘上。最关键的一点是你要清楚知道开发板有什么存储设备。

本文直接使用SD卡做为存储空间,文件格式为ext3格式

下载、编译和安装busybox

wget

makedefconfig

makeCROSS_COMPILE=arm-linux-gnueabi-

makeinstallCROSS_COMPILE=arm-linux-gnueabi-

安装完成后,会在busybox目录下生成_install目录,该目录下的程序就是单板运行所需要的命令。

形成根目录结构

先在Ubuntu主机环境下,形成目录结构,里面存放的文件和目录与单板上运行所需要的目录结构完全一样,然后再打包成镜像(在开发板看来就是SD卡),这个临时的目录结构称为根目录

1.创建rootfs目录(根目录),根文件系统内的文件全部放到这里

sudomkdirrootfs

2.拷贝busybox命令到根目录下

sudocpbusybox-1.20.2/_install/*-rrootfs/

3.从工具链中拷贝运行库到lib目录下

sudocp-P/usr/arm-linux-gnueabi/lib/*rootfs/lib/

4.创建4个tty端终设备

sudomknodrootfs/dev/tty1c41

sudomknodrootfs/dev/tty2c42

sudomknodrootfs/dev/tty3c43

sudomknodrootfs/dev/tty4c44

制作根文件系统镜像

1.生成32M大小的镜像

ddif=/dev/zeroof=a9rootfs.ext3bs=1Mcount=32

2.格式化成ext3文件系统

mkfs.ext3a9rootfs.ext3

3.将文件拷贝到镜像中

sudomkdirtmpfs

sudomount-text3a9rootfs.ext3tmpfs/-oloop

cp-rrootfs/*tmpfs/

sudoumounttmpfs

系统启动运行

完成上述所有步骤之后,就可以启动qemu来模拟vexpress开发板了,命令参数如下:

qemu-system-arm-Mvexpress-a9-m512M-kernel/home/ivan/qemu/linux/arch/arm/boot/zImage-nographic-append"root=/dev/mmcblk0console=ttyAMA0"-sda9rootfs.ext3

从内核启动打印,到命令行提示符出现,激动人心的时刻出现了……

写在后面的话

通过上面的步骤,搭建出来一个最小的qemu+arm开发环境,你可以上面的基础上修改内核,或者增加一些测试程序在单板上运行,甚至使用单板的flash设备。

在此,你可以做纯arm架构的内核开发,或者与架构无关的内核开发,也可以做单板相关的驱动开发。

5. 如何使用QEMU来模拟ARMv8开发平台

使用Qemu模拟Cortex-A9运行U-boot和Linux 作者来源于网络
我的开发环境: Ubuntu-12.04 所有软件包为最新

1. 安装GNU工具链

sudo apt-get insatll gcc-arm-linux-gnueabi

sudo apt-get insatll g++-arm-linux-gnueabi
安装完成后会在 /usr/arm-linux-gnueabi/ 目录下生成库文件、头文件等。 我安装的GCC版本为:
arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

Copyright (C) 2011 Free Software Foundation, Inc.

2. 安装Qemu模拟器
sudo apt-get install qemu qemu-system qemu-utils

这时应该已经可以运行qemu-system-arm命令了, 其版本为:
qemu-system-arm --version

QEMU emulator version 1.0.50 (Debian 1.0.50-2012.03-0ubuntu2), Copyright (c) 2003-2008 Fabrice Bellard

3. 编译和运行U-boot:
ftp://ftp.denx.de/pub/u-boot/ 下载最新版本的U-Boot源代码, 我用的目前最新版本 u-boot-2012.04.tar.bz2
解压后进入源代码目录,在Makefile里面增加两行:

6. 求助,编译qemu

编译QEMU需要用到的工具和库:gcc libsdl1.2-dev zlib1g-dev libasound2-dev pkg-config libgnutls-dev pciutils-dev
前三个是必须的,后面我没有遇到提示,编译时如果遇到某库没有安装,可以用yum search或者yum list来查找相关的软件包,安装dev版本的
接下来编译
./configure make make install

全部编译花费的时间很长,QEMU会把所有的target都编译出来,如果只需要模拟特定的平台,可以
./configure TARGET=i386-softmmu

运行QEMU
安装好QEMU之后可以从官网上下载一个很小的包含linux系统的虚拟磁盘来实验一下linux-0.2.img.bz2,不过这个linux剪裁的很小实在做不了什么,磁盘镜像也很小,不能往里面放东西
QEMU现在都是用VNC方式运行的,即QEMU会把自己当做VNC的服务器端,使用QEMU时还需要用VNC的客户端来连接它。
首先安装VNC client软件,可以用yum search vncviewer来搜索下可以的软件。
在终端中运行QEMU,5900表示在VNC服务器在本机的5900端口
qemu -hda linux-0.2.img.bz2 -vnc ::1:5900

打开另一个终端,输入
vncview 127.0.0.1:5900

QEMU的GUI界面显示
安装guest OS
首先创建一块虚拟磁盘镜像,如果是准备安装Fedora这样的OS,还是创建10G以上的硬盘吧。用dd命令也可以创建一块空的硬盘镜像,但是很慢。
qemu-img create -f qcow2 disk.img 10G

Fedora 12的系统安装ISO镜像文件一份,可以从fedora官网下载,开始安装操作系统,-m 512表示指定内存大小512M,不可缺少,不然fedora12启动后画面显示出问题
qemu -hda disk.img -m 512 -cdrom Fedora.XXXX.iso -vnc ::1:5900

在另一个终端里输入:
vncviewer 127.0.0.1:5900

然后可以在QEMU窗口中安装fedora,一切步骤同裸机安装,就是很慢很慢
启动guest OS,目前发现的问题是对键盘的支持不好,键位错乱了
qemu -hda disk.img -m 512 -vnc ::1:5900

guest与host文件交互问题,解决方法很多,可以通过网络传输,QEMU还支持把host disk挂载使用,我是把所需要的文件制作成iso镜像,然后在启动qemu时用- cdrom来指定这个文件,guest OS启动再从CDROM设备中把文件出来,这个方法的缺点是不能实时的交互文件,制作ISO文件,在linux下:
mkisofs XXX YYY.iso

编译内核
下载linux内核源代码: 解压缩源代码,放在/usr/src/kernels
gzip -d linux-2.6.32.tar.gz tar -xvf linux-2.6.32.tar mv -rf linux-2.6.32 /usr/src/kernels

下载Tuxonice补丁程序,注意对应的版本号:http://www.tuxonice.net/ 打补丁
cd /usr/src/kernels/linux-2.6.32 (the root directory of your tree) bzcat /path/to/patch | patch -p1

config,把电源管理那部分的功能都enable,bug功能enalbe
make menuconfig

编译
make make mole_install

制作内核镜像
make bzImage

制作初始化镜像
mkinitrd

make install可以自动完成工作使得下次系统从这个内核启动,手工做的话把内核镜像文件,initrd文件和system.map文件一起复制到/boot/下面,并修改/boot/grub/menu.lst
更换guest OS内核
将编译好的三个文件制作成ISO文件,并通过qemu的-cdrom指定,然后在guest OS中复制内核到boot文件夹下,修改menu.lst
linux下制作iso镜像文件的命令,源文件放在/dev/cdrom目录下:

mkisofs -r -o myiso.iso /dev/cdrom

热点内容
云服务器历史演进顺序 发布:2025-01-24 09:36:58 浏览:739
研究ftp的意义 发布:2025-01-24 09:31:22 浏览:253
联想安卓升级包在哪里下载 发布:2025-01-24 09:15:20 浏览:591
认票的算法 发布:2025-01-24 09:00:45 浏览:927
android调用打印机 发布:2025-01-24 09:00:32 浏览:808
网易版我的世界服务器如何 发布:2025-01-24 08:55:47 浏览:968
编译器鼻祖 发布:2025-01-24 08:54:11 浏览:844
如何用安卓编译项目 发布:2025-01-24 08:30:46 浏览:863
计算机同时输出和存储设备的区别 发布:2025-01-24 08:29:21 浏览:581
食物语上传 发布:2025-01-24 07:58:44 浏览:754