用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"
有关参数意义大家自己查找吧!
最后会出现:

浙公网安备 33010602011771号