用qemu加载linux(基于arm)

今天终于有点时间写些东西。

qemu是由Fabrice Bellard大神开发的开源模拟器,先膜拜下。

如果你如下需求之一就一定需要它:

1.学习操作系统,需要方便快捷的跟踪;

2.没有钱去买开发板的学生;

3.底层开发人员,bootload开发,驱动开发;

好的,你看到这里说明你对他感兴趣,那么继续吧。

要让qemu加载arm版本的linux kernel需要有如下东东:

a.qemu(我们模拟arm,那么就需要qemu-system-arm)

b.linux kernel

c.busybox(用来制作根文件需要)

d.arm架构的编译器比如(arm-none-linux-gnueabi-)

如果你用ubuntu的话,直接apt-get install qemu-system就好了,不过仍然需要下载qemu源码,因为我们要编译一个arm版本的qemu-system-arm,下载源码方法不多说了。现在我以qemu-0.14.0.tar.gz来举例,

$ tar -zxvf qemu-0.14.0.tar.gz
$ cd qemu-0.14.0
$ ./configure –target-list=arm-softmmu
$ make
$ su
# make install

这样就编译安装了qemu-system-arm了,

然后下载内核方法不介绍,我以linux-2.6.27.tar.bz2举例,

$ tar -xjvf linux-2.6.27.tar.bz2
$ cd linux-2.6.27
$ export ARCH=arm
$ export CROSS_COMPILE=arm-none-linux-gnueabi-
$ make menuconfig

在meuconfig中要选上Use the ARM EABI to compile the kernel,因为我们要玩的是arm啊,然后编译,

$ make

好了等待编译结束吧,编译完了以后我们就有了内核了,它在arch/arm/boot/zImage这里。

此时就差根文件系统了,那么就下载busybox(方法自己找),我以busybox-1.18.5.tar.bz2举例,

$ tar -xjvf busybox-1.18.5.tar.bz2
$ cd busybox-1.18.5/
$ export ARCH=arm
$ export CROSS_COMPILE=arm-none-linux-gnueabi-
$ make 
$ make install

然后制作跟文件系统

$ cd cd _install
$ find . | cpio -o --format=newc > ../rootfs.img
$ cd ..
$ gzip -c rootfs.img > rootfs.img.gz

好了,把rootfs.img.gz(跟文件系统)和zImage(内核镜像)拷贝到某个路径下,进入该路径然后执行

$ qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd rootfs.img.gz -append "root=/dev/ram rdinit=/bin/sh"

有关参数意义大家自己查找吧!

最后会出现:

posted on 2012-08-04 17:23    阅读(1208)  评论(0)    收藏  举报

导航