QEMU模拟CortexA9运行Uboot和LinuxV0.2.0互联网

上传人:新** 文档编号:509601179 上传时间:2024-02-23 格式:DOC 页数:19 大小:1.02MB
返回 下载 相关 举报
QEMU模拟CortexA9运行Uboot和LinuxV0.2.0互联网_第1页
第1页 / 共19页
QEMU模拟CortexA9运行Uboot和LinuxV0.2.0互联网_第2页
第2页 / 共19页
QEMU模拟CortexA9运行Uboot和LinuxV0.2.0互联网_第3页
第3页 / 共19页
QEMU模拟CortexA9运行Uboot和LinuxV0.2.0互联网_第4页
第4页 / 共19页
QEMU模拟CortexA9运行Uboot和LinuxV0.2.0互联网_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《QEMU模拟CortexA9运行Uboot和LinuxV0.2.0互联网》由会员分享,可在线阅读,更多相关《QEMU模拟CortexA9运行Uboot和LinuxV0.2.0互联网(19页珍藏版)》请在金锄头文库上搜索。

1、QEMU模拟Cortex-A9运行U-boot和LinuxQEMU模拟Cortex-A9运行U-boot和Linux11. 实验目的22. 实验要求23. 实验原理24. 实验步骤34.1 VMware虚拟机中安装Ubuntu34.2 安装QEMU模拟器34.3 编译并运行U-boot44.4 编译并运行Linux64.5 在目标机(Linux系统)中运行应用程序9思考题111. 实验目的1) 熟练使用Linux操作系统; 2) 认识一种新的内核模拟器QEMU;3) 掌握嵌入式Linux系统的开发流程;2. 实验要求 1) 在PC机上安装VMware虚拟机,并在VMware中安装Linux操作

2、系统(Ubuntu 12.04);2) 在Ubuntu中安装QEMU;3) 编译U-boot,并在QEMU上运行;4) 编译Linux内核,并使用Busybox制作根文件系统;5)在QEMU上运行Linux操作系统;6)在该Linux系统上运行应用程序。3. 实验原理 1)VMware Workstation虚拟机是可以在Windows/Linux系统上运行的应用程序,它可以模拟基于x86的标准PC环境。这个环境和真实的计算机一样,都有芯片组、CPU、内存、显卡、声卡、网卡、软驱、硬盘、光驱、串口、并口、USB控制器、SCSI控制器等设备。与“多启动”系统相比,VMWare采用了完全不同的概念

3、,多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。而VMWare虚拟机软件是一个“虚拟PC”软件,它可以使你在一台机器上同时运行多个Windows、DOS、LINUX系统,并且在系统切换时不需要重启计算机。 在使用上,这台虚拟机和真正的物理主机几乎没有区别,都需要分区、格式化、安装操作系统、安装应用程序和软件,总之,一切操作都跟一台真正的计算机一样。2)QEMU模拟器:QEMU 是一个面向完整PC系统的开源仿真器。除了可以仿真处理器之外,QEMU 还可以仿真所有必要的子系统,如连网硬件和视频硬件。它还允许实现高级概念上的仿真(如对称多处理系统(多达 255个CPU)和对其他

4、处理器架构(如 ARM 和 PowerPC)的仿真。QEMU有两种运行模式:* User mode模拟模式,亦称作使用者模式。QEMU能启动那些为不同中央处理器编译的Linux程序。* System mode模拟模式,亦称作系统模式。QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得对跨平台编写的程序进行测试及调试变得容易。其亦能用来在一部主机上虚拟多部不同的系统。3)嵌入式Linux系统的结构嵌入式Linux系统从软件的角度看通常可以分为4个层次:引导加载程序Bootloader。内核。完成对硬件设备的控制,Linux内核的主要模块分为以下几个部分:存储管理、CPU和进程管理、

5、文件系统、设备管理和驱动、网络通信、以及系统的初始化(引导)、系统调用等。文件系统。它提供了用于管理系统的各种配置文件,以及为系统执行用户应用程序提供了良好的运行环境。用户应用程序。根据不同的用户需求而编写的程序。4)QEMU与宿主机之间的通信机制:QEMU提供了四种网络通信模式:TAP、user、Sockets和VDE。利用user模式可以实现虚拟机和宿主机之间的通信且较为简单易行,在这种通信模式中,虚拟机处于10.0.2.*网段,该网段通过一个NAT服务器与外界通信,NAT服务器的地址是10.0.2.2,虚拟机的IP地址从10.0.2.15开始分配。4. 实验步骤4.1 VMware虚拟机

6、中安装Ubuntu(1)自行下载ubuntu12.04的.iso系统镜像,并在VMware中安装。(2)Ubuntu安装完成后,设置root密码,以便后期编译时获取root权限。(3)终端sudo apt-get update 完成更新。(4)安装GNU的交叉编译工具链。 sudo apt-get install gcc-arm-linux-gnueabisudo apt-get install g+-arm-linux-gnueabi 安装完成后会在 /usr/arm-linux-gnueabi/ 目录下生成库文件、头文件等。4.2 安装QEMU模拟器sudo apt-get install

7、 qemu qemu-system qemu-utils然后在终端中运行qemu-system-arm -version会显示如下QEMU的版本信息:4.3 编译并运行U-boot(1)在windows下到ftp:/ftp.denx.de/pub/u-boot/ 下载最新版本的U-Boot源代码,(参考版本u-boot-2012.04.tar.bz2 ),下载完后将其放入ubuntu中在该目录下解压:tar jxvf u-boot-2012.04.tar.bz2,在当前目录下会产生一个u-boot-12.04的文件夹:进入到u-boot-2012.04目录下,修改其中的Makefile,添加两

8、行(可放在文档的开头),ARCH?=arm CROSS_COMPILE ?= arm-linux-gnueabi-(2)进入到u-boot-2012.04文件夹下,终端输入命令:make ca9x4_ct_vxp_config make 结果如下:结果会在u-boot-2012.04文件夹下生成u-boot.bin等文件,如下图所示:(3)然后在终端中执行下面的命令,来启动U-bootqemu-system-arm -M vexpress-a9 -m 256M -nographic -kernel u-boot或者qemu-system-arm -M vexpress-a9 -m 256M -

9、serial stdio -kernel u-boot结果如下图:此时是检测Flash failed后停止运行,是因为在 arch/arm/lib/board.c里面 board_init_r()函数里检测Flash失败后调用了hang(), 暂时先把hang()去掉就可以运行下去了。正常的运行结果如下:4.4 编译并运行Linux(1)到http:/www.kernel.org/下载最新的Linux内核源码,(参考 linux-3.4.4.tar.bz2),解压后得到文件夹linux-3.4.4,修改Makefile , 修改的位置如下图:修改如下ARCH = armCROSS_COMPIL

10、E=arm-linux-gnueabi-在linux-3.4.4目录下 make vexpress_defconfig然后 make menuconfig - System Type 把 Enable the L2x0 outer cache controller 取消, 否则Qemu会起不来。然后make,会在arch/arm/boot/ 目录下生成zImage内核映像文件,这就是我们需要的内核映像。(2)制作根目录系统。1.编译busybox 下载busybox源码:http:/ = armCROSS_COMPILE=arm-linux-gnueabi-make menuconfig进行配

11、置在Busybox Setting-Build Opdions-选择 Build BusyBox as a static binary (no shared libs)使用静态编译 make ,会在目录中产生install文件, make inatall ,会在目录中生成文件夹_install,2. 制作根文件系统目录mkdir rootfscd rootfs(1) 建立目录结构mkdir bin etc dev lib proc tmp root home sys usr sbin var mnt(2) 运行库-来自工具链cp -a /usr/arm-linux-gnueabi/lib/*

12、lib(3) 配置文件-来自busyboxcp -a /examples/bootfloppy/etc/* etc(4) busybox工具集cp -a /_install/* .(5) 设备文件udo cp -a /dev/console /dev/loop0 /dev/loop1 /dev/null /dev/ram0 /dev/tty /dev/tty0 /dev/tty1 /dev/zero dev(6) 修改mdev配置,mdev负责自动生成设备节点,mdev.conf是配置文件vim etc/mdev.conf controlC0-9 0:0 0660 =snd/pcm.* 0:0

13、 0660 =snd/seq.* 0:0 0660 =snd/mix.* 0:0 0660 =snd/ timer 0:0 0660 =snd/其他特殊要求的设备文件,同样道理即可.(7) 修改启动配置vi etc/init.d/rcS增加mount -n -t proc none /proc mount -n -t sysfs none /sys mdev -s 这句很重要,生成所有的设备节点如果用nfs的话,有了以上目录就可以了3. 根文件系统镜像dd if=/dev/zero of=rootfs.img bs=1M count=64 # 32M的镜像mkfs.ext3 rootfs.im

14、gmkdir tmpfssudo mount -o loop rootfs.img tmpfssudo cp -a rootfs/* tmpfs/sudo umount tmpfsrootfs.img中就有了文件系统镜像了,ext3格式.(3)QEMU运行Linux系统qemu-system-arm -M vexpress-a9 -m 256M -kernel /home/syl/linux-3.4.4/arch/arm/boot/zImage -append root=/dev/mmcblk0 console=tty0 init=/linuxrc -sd rootfs.img运行结果如下:/home/syl/linux-3.4.4/arch/arm/boot/是放置内核镜像的路径。4.5 在目标机(Linux系统)中运行应用程序用户应用程序在目标机上运行有两种方法:将编译后的可执行文件放入到根文件系统中,在做成根文件系统的镜像后,由内核调用并执行。使用NFS(网络文件系统)在本地机和目标机之间建立通信。1)QEMU与Ubuntu之间的通信1. 首先在Ubuntu上安装NFS网络文件系统apt-get install nfs-kernel-server2. 在NFS服务的配置文件/etc/exports中添加:/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号