1 编译安装QEMU

首先下载qemu for mini2440,直接打包下载

解压后,进入源代码目录中:
sudo apt-get install zlib1g-dev
sudo apt-get install libsdl-dev

(prefix指定安装路径,这里是$HOME/work/mini2440)

./configure --target-list=arm-softmmu --prefix=$HOME/work/mini2440
make -j4
make install

安装完后,添加环境变量:

sudo vim /etc/bash.bashrc

添加一行:

export PATH=$PATH:$HOME/work/mini2440/bin 

保存退出后,用source 生效或者注销重新登录

source /etc/bash.bashrc

测试是否正常:

qemu-system-arm --version
 
2 使用buildroot一键生成uboot和linux内核及根文件系统

首先下载buildroot的源代码,下载地址:

解压后,进入源代码目录中:
sudo apt-get install libncurses5-dev
patch configure <../configure.patch /* 需要修改源码 打补丁 */
make mini2440_defconfig
make menuconfig

安装库:

sudo apt-get install g++
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install gettext
sudo apt-get install patch
sudo apt-get install git-core
sudo apt-get install xz-utils
sudo apt-get install automake

安装texinfo 4.13

tar -zxvf texinfo-.13a.tar.gz
cd texinfo-4.13
./configure
make
sudo make install

修改bug(注释下面文件中:_GL_WARN_ON_USE (gets,.......  这行代码):

vim output/build/host-m4-1.4./lib/stdio.in.h
vim output/build/host-m4-1.4./lib/stdio.h
在安装 时间比较长(可以先用我提供的安装文件放到buildroot-2012.05/dl目录下,这样省去下载时间)

链接:https://pan.baidu.com/s/1PUxi_DejVo-bgChQH5bzmA 密码:2dkz

3 Flashimg制作nand.bin并启动系统
下载flashimg源码 
http://gitorious.org/flashimg/flashimg.git 
解压后,进入flashimg源码目录后
./autogen.sh (要求autoconf版本大于2.)
./configure
make
sudo make install

然后把我们生成的三个文件 : u-boot.bin, uImage和rootfs.jffs2 拷贝到 flashimg文件夹下运行

./flashimg -s 64M -t nand -f nand.bin -p uboot.part -w boot,u-boot.bin -w kernel,uImage -w root,rootfs.jffs2 -z  
即可生成nand.bin。启动方法为:
qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse 

(若出现错误:浮点数例外启动不了qemu,请全屏最大化终端,再次执行,这是由于分辨率问题造成)

输入下面指令加载内核和根文件系统:
nboot kernel
setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttySAC0,
saveenv
bootm

启动后,输入默认密码root,即可成功登录,此时还没有配置网络。ifconfig发现没有网卡。

 4 NFS挂在根文件系统

首先安装nfs服务

sudo apt-get install nfs-kernel-server 
新建nfsroot文件夹
mkdir ~work/nfsroot 
然后配置nfs目录 
sudo vi /etc/exports 
添加一行
/home/zwx/work/nfsroot *(rw,sync,no_root_squash,no_subtree_check
然后执行:
sudo /etc/init.d/nfs-kernel-server restart
进入NFS共享目录:
cd /home/zwx/work/nfsroot/ 

修改权限

sudo chmod -R  ./ 

解压根文件系统

tar xvzf rootfs_qtopia_qt4-.tar.gz

注意:友善之臂提供的qtopia文件系统在挂载时会初始化网卡,但我们是由nfs挂载的文件系统,这会导致nfs连接中断,挂载失败,所以用nfs挂载之前需要把网卡的初始化过程取消,对应的文件是/etc/init.d/if-config,只需把该文件内容删除即可(删除文件也可以)。

sudo chmod -R  ./
cd rootfs_qtopia_qt4
cd etc/init.d/
rm ifconfig-eth0

创建虚拟网卡并配置ip

sudo apt-get install uml-utilities //运行tunctl必须的工具
sudo tunctl -u $USER -t tap0
sudo ifconfig tap0 192.168.42.1

带网络方式启动qemu

cd /home/zwx/work/qemu/flashimgflashimg-fb97139
qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse -kernel uImage -net nic,vlan= -net tap,vlan=,ifname=tap0,script=no,downscript=no

启动后进入uboot模式,此时的qemu还不能显示,输入下面指令加载内核和根文件系统。

set bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.42.1:/home/zwx/work/nfsroot/rootfs_qtopia_qt4/,proto=tcp,nfsvers=,nolock  ip=192.168.42.2:192.168.42.1::255.255.255.0 console=ttySAC0,
bootm

然后就可以启动了

 5 安装交叉编译工具链:

arm-linux-gcc-4.4..tar.gz 

安装库:

sudo apt-get install lib32stdc++
sudo apt-get install lib32z1

好了 到此就可以愉快的进行开发了。

嵌入式linux:通过qemu模拟mini2440开发环境的更多相关文章

  1. 一步步教你如何在Ubuntu虚拟机中安装QEMU并模拟模拟arm 开发环境(一)uImage u-boot(转)

    初次接触qemu是因为工作的需要,有时候下了班,可能需要在家研究一些东西,因为博主用到arm环境,这时候博主比较小气,不愿花钱买开发板,当然博主在这里给大家的建议是,如果要真正学懂arm构架的相关知识 ...

  2. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统

    qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...

  3. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统【转】

    转自:http://www.cnblogs.com/riskyer/p/3366001.html qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和l ...

  4. 【记录】尝试用QEMU模拟ARM开发板去加载并运行Uboot,kernel,rootfs【转】

    转自:https://www.crifan.com/try_use_qemu_emulate_arm_board_to_load_and_run_uboot_kernel_rootfs/ [背景] 手 ...

  5. 【转】windows和linux中搭建python集成开发环境IDE

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  6. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  7. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  8. Ubuntu Linux下如何配置Android开发环境

    下载和安装Win7系统Android开发环境中讲了怎样在Win7系统中安装Android开发环境,那么怎样在Linux系统中配置Android开发环境呢?本篇文章就将演示如何使用Eclipse.And ...

  9. Linux下快速搭建php开发环境

    php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...

随机推荐

  1. 06.Spring 资源加载 - ResourceLoader

    基本概念 ResourceLoader 接口,在 Spring 中用于加载资源,通过它可以获取一个 Resouce 对象. 内部构造 首先来看它的接口定义: public interface Reso ...

  2. Java面向对象_接口应用——策略模式

    概念:定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化. 接口抽象的就是某种方法. OO设计原则:1.面向接口编程  2.封装变化  3.多用 ...

  3. Windows安全认证是如何进行的?[NTLM篇]

    <上篇>中我们介绍Kerberos认证的整个流程.在允许的环境下,Kerberos是首选的认证方式.在这之前,Windows主要采用另一种认证协议——NTLM(NT Lan Manager ...

  4. 在MFC对话框中快速集成三维控件

    在MFC的对话框中可以方便的集成AnyCAD三维控件(c++版本),遵循一下几步: 1.在对话框资源中增加一个Static控件,ID为IDC_STATIC_3D,并且把它的Notify属性设置为Tru ...

  5. css3的transform变换scale和translate等影响jQuery的position().top和offset().top

    css3的transform变换scale和translate等影响jQuery的position().top和offset().top

  6. js之BOM和DOM

      今天我们来学习js中的一些基础的操作. 一.BOM对象 BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作.使用 BOM,开发者可以移动窗口.改变状态栏中的文本以及执行其他与页面内容不直接相 ...

  7. kickstart2019 round_C B. Circuit Board

    思路: 这题应该不止一种解法,其中的一种可以看作是leetcode85https://www.cnblogs.com/wangyiming/p/11059176.html的加强版: 首先对于每一行,分 ...

  8. 2013 QConf上海软件开发大会总结

    带着工作中的一些疑问,我参加了在上海举办的QConf 全球软件开发大会.会议以主题的形式按分会场召开,我主要选择知名网站案例分析.大数据处理技术.高效能团队建设和金融系统架构与设计四个主题内容.三天会 ...

  9. JAVA 与 sqlite3 连接

    SQLite SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经 ...

  10. Oracle数据的导入导出

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份. exp命令可以把数据从数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到数据库服务器中. 执行环境D ...