在Windows上用QEMU仿真ARM系统

ARM 94浏览

按照在Debian(etch)上用QEMU仿真ARM系统的方法,并参照http://www.cs.tut.fi/~paulus/emu-arm-debian-howto.html#emu成功在windows系统上安装了ARM Debian系统。

1、安装windows版本的QEMU
可以使用QemuManager附带的windows版本的QEMU。QemuManager的主页是 http://www.davereyn.co.uk ,当前最新的发布版本是5.0。QemuManager 5.0 同时附带了0.9.0版本和0.9.1版本的QEMU,但是只有0.9.0版本的包含qemu-system-arm.exe程序。

2、创建虚拟硬盘
http://www.cs.tut.fi/~paulus/emu-arm-debian-howto.html#emu的说法,要创建raw格式的虚拟盘。
qemu-img create -f raw 4G

3、安装、配置ARM Debian 的仿真系统
按照在Debian(etch)上用QEMU仿真ARM系统的方法,执行下列命令:
(1)安装:
qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.18-6-versatile -initrd initrd.gz -hda hda.img -append "root=/dev/ram"
(2)运行:
qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.18-6-versatile -initrd initrd.img-2.6.18-6-versatile -hda hda.img -append "root=/dev/sda1"
(3)第一次运行时,以root帐户登录并配置:
aptitude install initramfs-tools
console-common console-tools ntpdate
wget
http://people.debian.org/~aurel32/arm-versatile/linux-image-2.6.18-6-versatile_2.6.18.dfsg.1-23+versatile_arm.deb
dpkg -i linux-image-2.6.18-6-versatile_2.6.18.dfsg.1-23+versatile_arm.deb

4、解决读取RTC失败的问题
windows版本的qemu-system-arm不能正确读取RTC,造成系统时间错误,每次登录时都要求更改登录用户的密码。解决的办法是通过NTP获取系统时间,在上一步骤中安装的ntpdate软件包就是为了这个目的的。
ntpdate的配置文件是 /etc/default/ntpdate ,其中包含 NTP Server的服务器名。internet上的NTP server可以到 http://www.pool.ntp.org/ 查找。

5、与host传递文件
QemuManager中包含一个FTP Server,用于guest系统和host系统之间传递文件。guest可通过ftp连接,然后与host之间传递文件。ftp server 的IP就是host的主网卡IP,用户名和密码都是QEMU。注意:guest的网络是NAT模式,host不能直接连接guest,所以guest的ftp与host连接后,必须先执行
pass
命令,设置成passive模式,才能正常地传递文件。

6、其他说明
(1)windows系统上与网络时间同步相关的命令是 net time。可以执行
net time /?
获取简单的命令帮助信息。

(2)ntpdate命令为什么会在系统启动时自动运行?
debian 的ntpdate软件包安装了2个脚本文件:
/etc/network/if-up.d/ntpdate

/etc/dhcp3/dhclient-enter-hook.d/ntpdate
它们在网卡启用时会被自动调用,进而执行ntpdate命令获取NTP时间。

(3)如果想自行编译windows版本的qemu,可以看http://lassauge.free.fr/qemu/。这个网页还可以直接下载0.9.1版本的QEMU(但是该版本中并没有包含qemu-system-arm.exe程序!)

(4)Windows版本的qemu主页在http://www.h7.dion.ne.jp/~qemu-win/,内容丰富,可惜现在已经不更新了。