编译安装QEMU 及卸载
host OS: Fedora 12
下载QEMU源代码
从QEMU官网下载源代码http://wiki.qemu.org/Download,目前的最新版本是qemu-0.12.4.tar.gz
还有单独的加速模块kqemu-1.4.0pre1.tar.gz
解压缩
tar zvxf qemu-0.12.4.tar.gz
编译
编译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设备中把文件copy出来,这个方法的缺点是不能实时的交互文件,制作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,dubug功能enalbe
make menuconfig
编译
make make module_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
从Tuxonice官网http://www.tuxonice.net/downloads/ 下载Hibernate脚本并安装,可以通过修改/etc/hibernate/tuxonice.conf文件中的power method项使得hibernate命令支持不同级别的休眠
从实验中发现,suspend2disk使得QEMU的窗口也消失,必须重新启动QEMU,而suspen2mem则可以通过晃动鼠标等动作唤醒。
在LINUX编译安装QEMU
1.系统环境及版本
Linux发行版本:ubuntu 8.04
安装QEMU-0.9.1
2.准备工作
在QEMU主页下载源代码,并解压到/tmp目录下(假设源代码保存在~/Setup)。
$ tar zvxf ~/Setup/qemu-0.9.1.tar.gz -C /tmp建立编译环境:
$ sudo apt-get install build-essential
编译安装QEMU,最重要的工具就是gcc。在大多数主机,特别是x86架构的PC机上,gcc 4.x是不被QEMU所支持的。build-essential 中包含的是 gcc 4.x,为了正确编译,需要低版本的gcc 3.x(gcc32 或 gcc34),低版本安装后,QEMU的配置脚本(configure script)在配置时会自动搜寻到。我安装的是gcc 3.4:
$ sudo apt-get install gcc-3.4 cpp-3.4安装QEMU需要SDL开发库的支持,可以在其下载页面上下载源代码编译安装,但是推荐在apt中安装,不容易出问题:
$ sudo apt-get install libsdl1.2-dev另外,还需要安装zlib和ESD:
sudo apt-get install zlib1g-dev zlib1g-dbg libesd0-dev
3.编译安装QEMU
现在可以开始安装了:
$ cd /tmp/qemu-0.9.1$ ./configure --prefix=/usr/local/qemu不加上prefix选项也是可以的。这个选项的作用是指定安装目录。如果不指定prefix,则可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。由于QEMU不能用make uninstall的方法卸载,指定安装目录可以便于卸载(其实就是删掉整个安装目录)。
然后
$ make$ sudo make installmake比较费时,请耐心等待。
至此,QEMU安装完成。
4.设置环境变量
如果./configure时使用了prefix选项,还需要设置环境变量PATH,否则bash是找不到qemu的命令的(除非你输入该命令的具体路径,如/usr/local/qemu/bin/qemu)。编辑/etc/profile
$ sudo gedit /etc/profile在文件中添加
PATH="$PATH:/usr/local/qemu/bin"export PATH保存,退出,并用Ctrl+Alt+Backspace重新启动X Window。
卸载qemu 1.4.1
由于通过源码安装的qemu没有办法通过系统工具进行卸载,也没有办法通过make uninstall方法卸载,所以只能通过删除文件的方式进行卸载。
qemu可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/libexec,配置文件默认放在/usr/local/etc,共享文件默认放在/usr/local/etc/share。要卸载源码编译的qemu,需要到这四个目录中找出相关的文件然后删除掉。
如果configure时没有通过--target-list=指定编译的目标机体系结构,则/usr/local/bin中的以qemu开头的文件需要删除,总共51个。
/usr/local/libexec中只有一个文件:qemu-bridge-helper,直接删除即可。
/usr/local/etc比较简单,只有一个qemu目录,其下有一个文件target-x86_64.conf,直接将qemu目录删除即可。
同/usr/local/etc一样,qemu相关的共享文件都放在/usr/local/etc/share目录下的qemu子目录中,直接将该子目录删除即可。
error while loading shared libraries: cannot restore segment prot after reloc: Permission denied错误原因在于selinux禁用了访问此共享库
解决办法: 关闭selinux
1、编辑/etc/selinux/config文件,找到SELINUX=enforcing,改为SELINUX=disabled
2、编辑/etc/sysconfig/selinux文件,找到SELINUX=enforcing,改为SELINUX=disabled
3、重启电脑