最近用qemu模拟versatilepb机器,从网上找了方法制作文件系统,文件系统制作可参照:
http://balau82.wordpress.com/2010/03/27/busybox-for-arm-on-qemu/。
我这里假设文件系统制作好了,我的qemu命令是:
#qemu-system-arm -M versatilepb -m 256M -kernel zImage -initrd /mnt/sdb1/busybox-1.17.1/rootfs.img.gz -append "root=/dev/ram rdinit=/sbin/init console=ttyAMA0 " -nographic
我用交叉编译工具arm-2010q1-202-arm-none-linux-gnueabi- 来编译内核,这里直接用vertatile的默认配置文件即可,当然因我我用的是eabi编译工具,在Kernel Feature里面必须选EABI的支持,然后编译内核,用上述命令启动即可。
当然上述步骤在linux-2.6.32内核没问题,当我从linux-2.6.36内核到linux-3.0用上述方法时候,qemu在输出"uncompressing kernel .boot... " 信息候,挂了,我从网上找了许多天,也改过qemu里面的命令参数,都不成功。终于功夫不负有心人,让我在一个邮件列表里面找到了解决方法,直接修改内核里面的几句代码就可以。下述是邮件列表里面的patch,最近的内核的timer-sp.c函数不在那个路径,但是你可以很轻易的找到它,然后按照下面修改就可以:
diff --git a/arch