热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Fedora系统中qemu虚拟机的安装使用方法

qemu是最近出现的一种新的虚拟机,本身小巧的系统和linux的加速器,使它一经面世就受到了热烈的欢迎,国内也有不少用户,但没有一篇完整的文章介绍,使许多人走了不少弯路,其实,安装是比较简单的,较为复杂的部分是在网络部分,下面,就以Fedora5加kernel

qemu是最近出现的一种新的虚拟机,本身小巧的系统和linux的加速器,使它一经面世就受到了热烈的欢迎,国内也有不少用户,但没有一篇完整的文章介绍,使许多人走了不少弯路,其实,安装是比较简单的,较为复杂的部分是在网络部分,下面,就以Fedora 5加kernel 2.6.17.4做为主机详细介绍qemu的安装和使用

先安装Kqemu
$ tar zxvf kqemu-1.3.0pre9.tar.gz
$ cd kqemu-1.3.0pre9
$ su root
# ./configure
# make

# make install

 

然后安装qemu

# tar zxvf qemu-0.8.1.tar.gz

# cd qemu-0.8.1

#./configure --prefix=/usr/local --enable-kqemu --enable-user --enable-alsa --disable-gcc-check

说明:

--enable-user 可以允许系统下的所有用户使用Qemu

--enable-alas 可以允许系统共享系统的声音系统

--disable-gcc-check 因为wqemu默认是使用gcc3.2,我的系统gcc已经升级到了4.1,所有禁止了qemu对gcc的检查

#make

#make install

经过以上的操作,加速器和qemu都已经安装完成了。

 

二.创建新的img

用户可以将img文件创建到任意位置,只要有足够的空间就行。

# mkdir win2kp
# cd win2k
# qemu-img create win2k.img 2G
Formating 'win2k.img', fmt=raw, size=2097152 kB

2G是指定虚拟机的硬盘大小的

三.网络的设置

国内的很多人都讲加参数就如何可以使用网络,但实际远没那么简单,我就是一开始看了网络上某人的贴子,结果是反反复复,网络一直不能正常工作,后来从qemu的网站上下了所有的doc才搞定(比如有人发的贴都是使用-user-net就可以上网了,不但把语法写错了,而且只有这个参数根本就上不了网!),在此我只说最复杂的部分,就是主机<->虚拟机<->internet全通的模式。

  这种方式是使用tun/tap模式,必须崾内核的支持,主机上会增加一块虚拟网络设备(tun0),然后就可以象真实网卡一样配置它.
 首先查看你的内核是否支持tun设备:

 #ls -l /lib/modules/2.6.17.4/kernel/drivers/net/tun.ko
 如果存在,则执行下面的命令,否则重新编译模块。
 #modprobe tun
  
 这时检查modules:
 #lsmod |grep tun
  tun 10240 1

tun加载成功以后,要手工编辑一个shell.而且必须放在/etc下,文件名必须是qemu-ifup.最后要记得给脚本加上执行权限,如果要允许系统下的所有用户使用,还必须更改脚本的权限,并在脚本中的命令前加上sudo,下面是是个完整的,给所有用户使用的脚本。
    
#vi /etc/qemu-ifup :
  #!/bin/sh
  sudo /sbin/ifconfig $1 192.168.10.1

   sudo route add -host 192.168.10.100 dev $1

   sudo echo 1 > /proc/sys/net/ipv4/ip_forward
  sudo iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

  
#chmod a+x /etc/qemu-ifup   
    
四.安装虚拟系统

虚拟机的启动有很多选项,下面我就以我安装好的win2k来说明

如果要使用shm,必须进行以下的操作

# umount /dev/shm
# mount -t tmpfs -o size=528m none /dev/shm

别忘了启动加速器

#modprobe kqemu

shm的容量必须比你将要分配给虚拟机的内存大16m,否则无法使用,上面是准备给虚拟机512m的内存,所以,shm被设置成了528,如果你只给虚拟机256m的内存,上面的size应该是272.

好了,下面准备开始给上面创建的win2k.img装入系统
# qemu -hda /usr/local/win2k/win2k.img -cdrom /dev/hdc -boot d -m 512 -win2k-hack

对于win2k的安装必须指定-win2k-hack参数,否则安装会中途出错退出,这个参数只需要在安装的时候使用,在运行的时候是不需要的。

-hda是指定将要使用的image文件,也就是windows的C盘

-cdrom是准备给cdrom的驱动器,也就是windows的D盘,有人说这个参数是-cdrom /dev/cdrom,是指定你的主机的cdrom的位置,这是一个天大的错误,这里指的是启动后的虚拟机,和主机的cdrom在哪里没关系,当然,你的系统必须有cdrom,如果没有cdrom,我想在linux下虚拟mount一个还是很容易的。

-boot d ,就是指定系统从D启动,各上面一项相关的

-m 512,指定分配组虚拟机的内存

如果一切顺利,安装完成以后,你就可以启动系统了

 

五.启动虚拟机

首先,按前面的介绍,加载好加速器和tun的模块,如果前面已经加载了,这里就不再需要了,只在主机重启了以后需要,如果经常使用虚拟机,也可以将它们直接添加进/etc/rc.d/rc.local让系统自动加载。

#modprobe kqemu

#modprobe tun

#qemu -hda /usr/local/win2k/win2k.img -cdrom /dev/hdc -hdb fat:/home/seabird/work -m 512 -localtime -net nic -net tun

参数:

-hdb fat:/home/seabird/work

这是一个非常有用的参数,它的意思是把主机的/home/seabird/work目录直接以fat的格式加载到虚拟机,当然,它是只读的

-localtime,指定虚拟机使用当前的系统时间

-net nic -net tun

这两个参数必须同时使用,否则,你还是上不了网,它的意思是启动虚拟机的网卡同时和主机以及internet通讯,只有这个参数加载的时候,系统才会去读取/etc/qemu-ifup文件,其它的模式是不会读取这个文件的。

启动完成以后,将win2k的网卡地址指定为192.168.10.100,网关设为1921.68.10.1还记得/etc/qemu-ifup文件吗,这个文件中的地址和你的虚拟机的地址是相关的,并不像有些人说的你可以像主机一样随便指定地址去上网,它是把主机作为一个NAT设备来使用的。当然,你别忘记指定一个虚拟机可以到达的DNS服务器

六.后记

 1.指定虚拟机的网络地址的时候。千万别指一个和你的主机相同网段的,那样,你是不可能上网的。

2.可以去安装98,但到目前的最新版为止,winxp在大多情况下安装是不成功的,这个在qemu的网站上说的很清楚,只有等以后的版本了,所以,你看到的安装winxp的贴子是没有实践的,我在三台配置不同的机器上安装都以失败告终了。

3.win2k运行的时候,如果用它自己的关机是关不掉虚拟机的,原因是不支持电源管理,教你一个方法,使用win2k的安装/卸载硬件,一步步往下走,在windows搜索完硬件后出现的对话窗中选择添加新硬件(白痴的windows,我竟然不能让它跳过搜索), ->下一步,选择“否,我想从列表选择硬件”->下一步->NT Apm/legacy支持->下一步,安装完成后你就可以正常关机了。

4.qemu还有一个最大的优点是可以启动你的硬盘上的双系统,如果现在就是双系统,你可以像下面一样直接启动:

#qemu -hda /dev/hda1 -m 512 -net nic -net tun

/hda1是你的另一个系统的硬盘分区,如果你是grub启动,这里就是你的grub所在的位置,等grub菜单出现后,选择想启动的系统就可以了(天啊,别选你现在正在运行的系统啊).


推荐阅读
author-avatar
书友76132462
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有