当前位置:  开发笔记 > 运维 > 正文

使用Qemu虚拟机启动Linux系统

今天终于有点时间写些东西。qemu是由FabriceBellard大神开发的开源模拟器,先膜拜下。如果你如下需求之一就一定需要它:1.学习操作系统,需要方便快捷的跟踪;2.没有钱去买开发板的学生;3.底层开发人员,bootload开发,驱动开发;好的,你看到这里说

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

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..tar.gz
$ cd qemu-0.14.
$ ./configure ?target-list=arm-softmmu
$ make
$ su
# make install

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

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


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

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

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

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


$ tar -xjvf busybox-1.18..tar.bz2
$ cd busybox-1.18./
$ 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"

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

最后会出现:

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有