利用qemu模拟cortexa9搭建linux环境_第1页
利用qemu模拟cortexa9搭建linux环境_第2页
利用qemu模拟cortexa9搭建linux环境_第3页
利用qemu模拟cortexa9搭建linux环境_第4页
利用qemu模拟cortexa9搭建linux环境_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用QEMU模拟Cortex-A9搭建linux环境北航嵌入式系统上机实验,第一个实验运行ubbot,第二个实验搭建linux环境。一、运行U-boot1. 在WMware Workstation虚拟机上安装ubuntu12.04版2. 在终端sudo apt-get update完成更新3. 安装GNU工具链sudo apt-get install gcc-arm-linux-gnueabisudo apt-get install g+-arm-linux-gnueabi安装完成后会在 /usr/arm-linux-gnueabi/ 目录下生成库文件、头文件等。4. 安装QEMU模拟器sudo apt-get install qemu qemu-system qemu-utils然后在终端中运行qemu-system-arm -version会显示如下信息5. 编译和运行U-boot在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 (注意不能使用root 权限来解压,不然下一步的Makefile不能修改) ,在当前目录下会产生一个u-boot-12.04的文件夹。进入到u-boot-2012.04目录下,修改其中的Makefile,按照说明增加两行:ARCH ?=arm CROSS_COMPILE ?= arm-linux-gnueabi-把这两条语句放在文档的开头,结果能运行在 arch/arm/lib/board.c里面把hang()去掉。(注意在board.c文件中有两处hang(),都要注释掉。之后进入到u-boot-2012.04文件夹下执行命令:make ca9x4_ct_vxp_config 然后执行 sudo make命令 (执行make之前要先获取root权限,因为有的文件需要root权限来操作)结果如下: 结果会在u-boot-2012.04文件夹下生成u-boot.bin等文件,如下图所示:然后在终端中执行下面的命令,来启动U-bootqemu-system-arm -M vexpress-a9 -m 256M -nographic -kernel u-boot或者qemu-system-arm -M vexpress-a9 -m 256M -serial stdio -kernel u-boot结果如下图:二、编译和运行linux1、到/下载最新的Linux内核源码,我下载的是linux-3.4.4.tar.bz2.用 tar jxvf linux-3.4.5.tar.bz2解压后得到文件夹linux-3.4.4,修改Makefile,修改的位置如下图:修改如下ARCH ?= armCROSS_COMPILE?=arm-linux-gnueabi-2.在linux-3.4.4目录下 make vexpress_defconfig3. make menuconfig 进行配置弹出如下配置界面,如果提示出现错误,我们在更新CentOS或者Ubuntu的内核时,执行make menuconfig可能看如这样的错误:* Unable to find the ncurses libraries or the* required header files.* make menuconfig requires the ncurses libraries.* Install ncurses (ncurses-devel) and try again.那么执行以下命令sudo apt-get install libncurses5-dev(这是添加需要的库函数、头文件)在System Type选项中把Enable the L2x0 outer cache controller取消,否者QEMU运行不起来(我也不知道为什么)。4.执行make,会在arch/arm/boot/ 目录下生成zImage内核映像文件,这就是我们需要的内核映像。三、制作根目录系统 根目录是qemu运行linux后可以访问的目录。后面要在qemu上的linux里运行hello.out,就需要把hello.out放入到根目录中,再重新制作根目录系统。编译busybox 下载busybox源码:/downloads/busybox-1.21.0.tar.bz2解压,tar jxvf busybox-1.21.0.tar.bz2还是在busybox-1.21.0目录下的Makefile中修改ARCH ?= armCROSS_COMPILE ?= arm-linux-gnueabi-make menuconfig进行配置在Busybox Setting-Build Opdions-选择 Build BusyBox as a static binary (no shared libs)使用静态编译 make ,会在目录中产生install文件 make install ,会在目录中生成文件夹_install3 4步出错的话,好像是和glibc版本过高有关,找不到相关函数,make menuconfig 去掉如下选项Linux System Utilities Support mounting NFS file systems 网络文件系统Networking Utilities inetd (Internet 超级服务器 )(2)由上一步编译busybox生成_install目录,该目录下包含文件夹:/bin, /sbin ,/usr 文件:linuxrc。(3)mkdir rootfs,在busybox下创建roofts,复制_install下的文件到roofts在roofts下创建lib目录,并将/user/arm-linux-gnueabi/lib/*.so* 拷贝到该目录下;(4)在roofts下创建etc目录mkdir etcVim是文本编辑器,没有的可以在终端中输入vim根据提示安装。使用方法:i进入编辑模式,esc进入末行模式,末行模式下输入:wq保存并退出。详细信息可以百度。1 etc目录下新建文件:vim mdev.conf,但该文件内容为空2 etc目录下新建文件:vim inittab,内容如下:# /etc/inittab:sysinit:/etc/init.d/rcSconsole:askfirst:-/bin/sh:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount -a -r3 etc目录下新建文件夹:mkdir init.d,然后进入该文件夹新建文件vim rcS,将如下内容添加到文件rcS中:#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=Sprevlevel=Numask 022export PATH runlevel prevlevel# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.#/bin/mount -t proc none /proc/bin/mount -t tmpfs none /tmp/bin/mount -t tmpfs none /var/bin/mkdir -p /var/log/bin/hostname -F /etc/sysconfig/HOSTNAME4 终端中输入chmod +x rcS 改变rcS的属性5 etc目录下新建文件:vim fstab,内容如下# device mount-point type options dump fsck ordernone /proc proc defaults 0 0none /dev/pts devpts mode=0622 0 0tmpfs /dev/shm tmpfs defaults 0 0(5)roofts下创建dev目录在dev目录中创建两个节点:sudo mknod console c 5 1sudo mknod null c 1 3(6)roofts下创建其他目录,内容暂时为空:mkdir proc mnt tmp sys root home完成以上步骤后roofts里的文件为:(7)根文件系统镜像进入到busybox文件下,在终端中输入:dd if=/dev/zero of=rootfs.img bs=1M count=32 #创建一个32M的镜像mkfs.ext3 rootfs.img /格式化为imgmkdir tmpfssudo mount -o loop rootfs.img tmpfssudo cp -a rootfs/* tmpfs/sudo umount tmpfsrootfs.img中就有了文件系统了,ext3格式.四、启动qemu文件系统镜像启动qemu - 此时不需要u-boot了,直接启动内核指定参数即可(此时要保证做好了zImage和rootfs.img)命令行输入:(/home/yjl/linux-3.4.5/arch/arm/boot/zImage这是我电脑存放内核的路径,不是你自己电脑的路径,要找到你下载的内核所在的那个文件夹,添加你自己的路径)qemu-system-arm -M vexpress-a9 -m 256M -kernel /home/yjl/linux-3.4.5/arch/arm/boot/zImage -append root=/dev/mmcblk0 console=tty0 init=/linuxrc -sd rootfs.img 运行结果如下:(一个Linux系统就跑了起来,输入ls看看有没有那些目录:/lib /etc /dev等等)四、在qemu模拟的linux中运行helloworld1.编写c程序在ubuntu 某目录的终端中输入 sudo vim hello.c,输入以下命令:#include int main() printf(hello world!n); return 0;保存并退出(:wq)2.用arm-linux-gcc来编译hello.c/s/BLE0LnXCzYUDy 下载arm-linux-gcc-4.4.3.tar.gz复制到ubuntu中,tar zxvf arm-linux-gcc-4.4.3.tar.gz解压。解压后的文件在/opt/FriendlyARM/toolschain/4.4.3。配置系统环境变量sudo vim /etc/profile,在最后一行添加 export PATH=$PATH:/home/XXXXX /opt/FriendlyARM/toolschain/4.4.3/bin地址换成上一部解压后的地址,保存并退出终端输入source /etc/profile 使环境变量生效在终端上输入命令 arm-linux 再长按Tab键,有arm-linux-的命令就说明环境变量设置成功了。终端中输入sudo apt-get install ia32-libs安装32位的库文件终端中输入arm-linux-gcc v可以看到版本信息。注意:1.每次打开终端时都要输入source /etc/profile,在使用arm-linux-gcc,否则会提示命令不存在。2.这部分可以参照/Linux/2013-06/85902.htm在hello.c的目录在终端输入arm-linux-gcc hello.c,生成hello.out3.将hello.out放入根系统中在busybox下创建roofts2文件夹,将hello.out复制进去,将roofts文件夹里除了dev以外的文件直接复制到roofts2里,dev不能复制,直接在roofts2下重新创建,方法和创建roofts时的一样

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论