Qemu是一个开源虚拟机,Qemu虚拟机和vmware和virtualbox的虚拟原理是不同的,Qemu能虚拟不同CPU的运行,而vmware和virtualbox对此无能为力,但也有Android的修改版能在x86机器上运行的那另当别论。Android emulator就是基于Qemu开发的。Debian也出了它自己的ARM版本,以后ubuntu也可能会出它的移动版本,也能用相似办法安装它的虚拟机版本。但由于Qemu需要把客户机的机器语言翻译成宿主机的机器语言,速度就非常的慢,Android SDK的模拟器出了名的慢就是这个原因。
Debian ARMEL版是Debian新出的ARM小端存储( little-endian)系统。以前的ARM大端存储(big-endian)系统已经被debian不赞成使用了。最新的arm处理器已经能在小端模式和大端模式之间切换,这可能就是debian弃用ARM大端存储的原因,你也能通过这个地址http://people.debian.org/~aurel32/qemu/arm/获得老式的ARM大端存储已安装好了的Qemu映像。
我的宿主机是Chakra,其它linux应该能用相同方法完成,ubuntu有Qemu的安装包,第一步就省了。
1.先在这个地方下载它的源代码:http://wiki.qemu.org/Download windows有专门安装包,这里就不细说了。然后:
$make clean
$./configure
$make
$sudo make install
这个工作应该能在半小时以内完成。
如果你在之后的运行中出现:
oss: Could not initialize DAC oss: Failed to open `/dev/dsp' oss: Reason: No such file or directory oss: Could not initialize DAC oss: Failed to open `/dev/dsp' oss: Reason: No such file or directory audio: Failed to create voice `lmxxx.out'
错误的话,这里就需要$./configure --audio-drv-list=alsa 之后重新编译。
在以后的运行过程中可能还需要设置环境变量:export QEMU_AUDIO_DRV=alsa
2.下载debian arm版的网络安装加载映像:
$ wget http://ftp.nl.debian.org/debian-archive/debian/dists/lenny/main/installer-armel/current/images/versatile/netboot/initrd.gz
$ wget http://ftp.nl.debian.org/debian-archive/debian/dists/lenny/main/installer-armel/current/images/versatile/netboot/vmlinuz-2.6.26-2-versatile
3.创建你的磁盘映像,但使用raw格式,安装完成后,你能直接mount访问里面的文件。
$ qemu-img create -f raw hda.img 4G
如果你要安装图形界面,就需要映像大些,如果不安装图形界面,1G就足够了。
4.启动QEmu安装:
$qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.26-2-versatile -hda hda.img -initrd initrd.gz -append "root=/dev/ram" -m 256
安装过程中注意不要选中国镜像,中国镜像没有armel版的,最好选日本镜像,很近速度快。
Debian的特点是安装包很大,请谨慎选择。我的意见是不选任何一个软件集,现在已经有最基本的软件了,安装完成后自己通过apt-get安装软件包。
安装的最后会提示你,“未安装启动引导器”不用操心这一点,我们将在下一步用Qemu启动。
5.获取启动引导:
$ sudo mkdir akann
$ sudo mount -o loop,offset=32256 hda.img akann
$ sudo cp akann/boot/initrd.img-2.6.26-2-versatile .
$ sudo umount akann
如果出现:
“mount: 您必须指定文件系统类型”错误的话,可以使用以下命令:
sudo losetup /dev/loop0 hda.img sudo kpartx -a /dev/loop0 sudo mount /dev/mapper/loop0p1 akann cp akann/boot/initrd.img-2.6.26-2-versatile . sudo umount akann
6.然后运行:
qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.26-2-versatile -initrd initrd.img-2.6.26-2-versatile -hda hda.img -append "root=/dev/sda1"
当你的鼠标焦点在虚拟机屏幕内要想跳出来,用“Ctrl+Alt"键。
Qemu的全屏模式开关是”Ctrl+Alt+f".
7.修改全局默认语言,如果不修改,字符界面下将出现乱码。
#locale -a
查看现在可用的语言。如果没有英语,必须修改/etc/locale.gen文件,把en_US.UTF8 UTF8前面的#去掉。然后:
#locale-gen
修改/etc/default/locale文件,修改为
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
重启动。
(注:这里先安装中文,再改回英文是纯Geek行为,你完全可以在开始就安装为英文。)
8.安装图形界面:
以root用户登录
#apt-get install xorg
配置X图形界面使用X -configure失败,于是只有手工修改xorg.conf文件(这一点国内外google遍了都找不到方法,即使按照Debian的预安装桌面都无法工作,只能自己找,实验了很多次终于成功),把最后的几行修改为:
Section "Device"
Identifier "device0"
Driver "fbdev"
Option "UseFBDev" "true"
EndSection
Section "Monitor"
Identifier "monitor0"
HorizSync 20-50
VertRefresh 40-80
EndSection
Section "Screen"
Identifier "screen0"
Device "device0"
Monitor "monitor0"
DefaultDepth 16
SubSection "Display"
Modes "1024x768"
Depth 16
EndSubSection
EndSection
最新的debian6修改xorg.conf无用,需要修改/usr/share/X11/xorg.conf.d目录下的任意xxx.conf文件,添加以上几行即可修改分辨率,但我只能调到
800x600,1024x768设置失败。
窗口管理器可选安装xfce:
#aptitude install xfce4
一些有用的xfce工具:
#aptitude install xfce4-goodies
gdm,kdm,xdm运行xfce会话即可,startx需要对~/.xinitrc增加一句:(当我安装好xfce时这一步安装已自动完成了)
exec ck-launch-session startxfce4
然后执行:
#startx
安装后的效果:
另外窗口管理器我选用了轻量级的fluxbox:
#apt-get install fluxbox
字体选用ttf-wqy-zenhei:
#apt-get install ttf-wqy-zenhei
浏览器:
#apt-get install iceweasel
效果图:
debian的arm版不是移动设备系统,并没有对移动设备作专门设计,目前的这个Debian的ARM版应该是以ARM服务器和嵌入设备作为目标市场的。因为ARM芯片的节能特性以及价格便宜造就了以后大型数据中心的服务器更有可能采用ARM芯片,据载Debian的ARM版已经上升到了Debian各种分发的第三位。实际上Debian的这个ARM版作一定修改,也能适用于移动设备。
在Qemu上安装的这个Debian ARMEL版适用于在它上面调试硬件相关程序。