过了,一天,周又到了,博主终于可以拿出时间来把上一次没有给大家展示完了的内容今天在这里一并展示给大家,希望和大家共同进步,共同学习,同时我也虔诚的希望各位业界的朋友把自己的工作经验拿出来大家一起分享,一起交流,一起学习,技术的革新少不了大家努力!!!,好了。废话不多说,开始今天的内容吧:

第一部分:制作根文件系统

1.其实对于这个根文件系统,博主一直没有搞明白,何为根文件,想必知道device tree 的朋友并不 陌生,系统本身就是个树形结构,我们整个系统除了u-boot ,内核,其次就是  根文件,内核跑起来之后,接着就要挂载根文件了,根文件系统里存放着我们的各类参数,系统初始化数据,各种系统工具,库文件,头文件。

2.制作根文件要好多的方法,你也可以直接到开发板的厂商官网去看看是否有提供,这样里面的工具,库文件,头文件比较齐全,这样就不用花费时间去制作,但是这样有个缺点就是根文件系统过于庞大,臃肿,所以,这就解释了为什么根文件系统是可以定制的,内核也是可以裁剪的,有些开发板本身自己的内存比较小,如果在加之系统过于庞大,那么这样是不行

3.制作根文件系统的工具:一般有三个,buildroot,busybox ,yocto  ,博主只有用过前两个,我们今天所展示的就是基于 buildroot 而定制的根文件系统

(1)首先我们需要下载  buildroot  安装包:

buildroot  下载地址:https://buildroot.org

(2)下载好以后我们拖放在虚拟机中,进行解压   tar -xvf buildroot-2017.02.5.tar.bz2

(3)解压完毕,我们打开buildroot-2017.05,里面的   configs  这里面有各种厂商的开发板的配置文件,我们找到我们需要的,这里有很多,要和我们在 第一节  中做使用的相同

(3)找到之后我们点击鼠标右键 复制,并  cd ../ 退回上级目录,执行  make qenu_vexpress_defconfig  将配置文件写入 并生成了一个  .cionfig 的配置文件,出现如下图中的所示,说明写入成功

(4)接下来我还可以对源码进行一些详细的配置  :输入  make menuconfig  ,如果这里出错,你可以参考 第一节  中的 解决 方法,如果你在第一节中照着我的做了,那么这里是不会报错的,成功会进入如下的画面

(5)这里我们需要注意的是 :system configuration---->   这项,按 上下 键移到这项,按下 enter  键 进入

找到图中箭头所指的 选项,选择激活密码,并在下面的画面中输入密码,这样操作就需要我们输入密码才能登入根文件系统,博主之前在制作的过程中并没有选择,结果在成功加载 了内核之后进入根文件系统时提示要密码,在尝试了多次仍然失败后,博主重新进行了源码的编译,并选择了密码登录,才能成功登入系统

(6)选择完毕,选择  “exit” 退出主界面上,在选择图中的箭头所指的选项

进入该选项,进行如下的操作:这里我们选择的根文件系统的格式 ext4,根文件的格式有很多种,以后详细跟大家解释

选择完毕后,我们在该画面里选择如下的选项: 这里选项的是我们制作好跟文件后,进行压缩生成一个根文件的压缩文件,这样方便我们进行转移,可以保持文件的完整性

(7)其他的选项我都保持默认就可以了,我们进行保存

(8)解下来我就要进行编译工作了,输入  make -j4,等带编译完毕,我们看看我们的劳动成果

箭头所指的就是我们要的文件了

buildroot 的功能很强大,我们可以用它为我们制定一个属于自己的 操作系统,上图中我们可以看到,最终生成了 根文件rootfs.tar,内核镜像zImage

在host  目录我usr/bin 目录还生成叫  arm  的交叉编译工具链,

我们在制作根文件的时候,还可以选择busybox工具,其实你只要仔细查看了  buildroot  的选项过程,你会发现,buildroot其实是调用了busybox工具

这里我们只是介绍 采用 qemu  来模拟arm 的环境,至于要把我们生成的目标文件下载到嵌入式开发板实物,我们要需要是buildroot生成uboot文件如下:

这样我们就可以生成 u-boot  引导文件,即可以将  rootfs.ext4,  u-boot, zImage  这些文件下载或烧写到开发板对应的扇区,就组成了我们的操作系统

至于如何烧写,这里不做讲解

第二部分:采用 qemu  生成我们最终的 模拟 环境

(1)通过在第一章中的操作,我们已经有了  u-boot引导文件,kernel的可引导镜像uImage,和配置好网络加载相关的环境变量,而在本节中的操作,我们又生成根文件系统的压缩文件rootfs.tar

(2)我们加目录下新建一个文件夹  QEMU ,将第一节中生成的文件: u-boot   uImage 和本节中生成的rootfs.tar 文件都拷贝到该目录下,新建一个目录rootfs ,将rootfs.tar  放进去解压得到如下的文件

(3)cd  ../

退回上级目录,我们来写个运行的脚本文件,touch  qemu_arm_run.sh  ,加上可执行权限  sudo chmod 777 qemu_arm_run.sh,   vi  qemu_arm_run.sh

加入如下的内容:注意   9 行的目录一定是你QEMU 文件夹所在目录,可以进入QEMU目录 ,输入pwd 命令来查看 目录结构

(4)我们现在可以来试试了,sudo ./qemu_arm_run.sh 看到我们已经成功加载就u-boot,博主这里是 ip 地址的问题,所有没有成功加载内核,我们进入 u-boot 所在的目录,按照第一章中的相关的方法 修改 include/vexpress_commd.h中的ip 地址,改成我们现在所用的ip,重新编译u-boot 生成新的u-boot,在拷贝到当前目录,再次执行脚本命令,就可以成功加载内核了

这里我们可以输入print  来打印环境变量信息:

我们修改完上面所说的新信息后,在执行运行脚本命令,这是激动的时刻出现了:

看到这一幕,是不是很熟悉呢

其实qemu  模拟arm  环境,还有一种方法,就是根文件也采用dd命令做成镜像,但这样我们就不能和主机里面的rootfs 目录同步,在arm 里面的操作,我们主机并不能接收到,采用  nfs   方式来挂载  根文件,我们模拟出来的arm环境和主机里面rootfs的内容是同步的,只要一个命目录中的内容改变,另一个目录里面的也随之改变,这是不是很方便呢,我们在 x86环境里写好测试程序,交叉编译成arm 版本的,就可以直接放到我们模拟出开的arm环境去运行了,并不需要开发板实物

好了,到这,里我们两节的内容就将完了,欢迎大家借鉴,希望可以尽早的帮助到您!

---------------------
作者:风清扬的博客
来源:CSDN
原文:https://blog.csdn.net/qq_24188351/article/details/77921653
版权声明:本文为博主原创文章,转载请附上博文链接!

一步步教你如何在ubuntu虚拟机中安装QEMU并模拟arm 开发环境(二)rootfs制作的更多相关文章

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

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

  2. 手把手教你如何在Ubuntu系统中安装Pycharm

    前几天带大家一起安装了Ubuntu14.04系统,没来得及上车的伙伴可以戳这篇文章:手把手教你在VMware虚拟机中安装Ubuntu14.04系统.今天小编带大家一起在Ubuntu14.04中安装Py ...

  3. [转载]一步一步教你如何在Virtualbox虚拟机中安装Remix

    原文地址:https://bbs.jide.com/forum.php?mod=viewthread&tid=4892 大神请路过-- [准备工具] 1.Virtualbox虚拟机(这个是免费 ...

  4. 如何在VMware虚拟机中安装CentOS6.7系统(上篇)

    之前给大家分享了在VMware中如何创建CentOS虚拟机,今天给大家分享一下如何在虚拟机中安装CentOS系统,以CentOS6.7系统为例,其他的系统版本也可以参考该教程进行类似处理,具体的流程如 ...

  5. 如何在VMware虚拟机中安装CentOS6.7系统(下篇)

    上一篇文章讲到了CentOS6.7的安装教程,安装步骤到时区选择这块了,这篇文章接上篇文章,继续讲述CentOS6.7的安装教程,直至安装完成. 17.设置root的登录密码,日后登录虚拟机,用户名就 ...

  6. Monkey入门之如何在android虚拟机中安装apk包

    如果想把公司的产品apk包安装到android虚拟机中,应该进行如下操作: 1.首先将apk包放到C:\Program Files\Android\android-sdk\platform-tools ...

  7. 如何在VirtualBox虚拟机中安装XP系统? 转

    关闭VM (windows 7 )的方法, 使用 退出 保持状态 开启VM (windows 7 )的方法, 选择启动 ######Iissue 1 网络连接不上,可以重新初始化 网络连接. #### ...

  8. 如何在VMware ubuntu linux虚拟机中安装VMware tools

    VMware Tools可以实现在主机<->虚拟机之间拷贝文字.文件等功能.本文讲述如何在VMware ubuntu linux虚拟机中安装VMware tools. 测试环境: VMwa ...

  9. 一步步教你:如何用Qemu来模拟ARM系统

    这是道哥的第011篇原创 目录 前言 为什么需要ARM模拟系统 应用程序的开发 系统开发(BSP) Qemu是什么? Qemu的两种模式 Qemu 能做什么?或者说适合做什么? 在 Ubuntu16. ...

随机推荐

  1. JS正则表达式的创建、匹配字符串、转义、字符类、重复以及常用字符

    正则表达式都是操作字符串的 作用:对数据进行查找.替换.有效性验证 创建正则表达式的两种方式: // 字面量方式 /js/ // 构造函数方式 regular expression new RegEx ...

  2. SAP 如何看某个TR是否传入了Q或者P系统?

    SAP 如何看某个TR是否传入了Q或者P系统? 两种方式可以查询. 1)进入Q系统或者P系统.SE16,看表TPALOG, 输入请求号码, 执行,看记录里的字段TPSTAT_KEY是否为空,如果不为空 ...

  3. python+selenium自动化测试,浏览器最大化报错解决方法

    此处以谷歌浏览器为例 [问题1]缺少chrome驱动,webdriver调用谷歌浏览器的时候就报错了,如下图: [原因分析]缺少谷歌驱动程序 [解决办法] 1.查看本地安装chrome浏览器版本 2. ...

  4. mybatis 测试输出SQL语句到控制台配置

    1: mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  5. asp.net abp模块化开发之通用树2:设计思路及源码解析

    一.前言 上一篇大概说了下abp通用树形模块如何使用,本篇主要分析下设计思路. 日常开发中会用到很多树状结构的数据,比如:产品的多级分类.省市区县,大多数系统也会用到类似“通用字典/数据字典”的功能, ...

  6. JSP其余内置对象及四大范围对象的使用

    一.application String getContextPath():获取虚拟路径String getRealPath():获取虚拟路径对应的绝对路径 实例 application.jsp &l ...

  7. css基本概念与css核心语法介绍

    css基本概念 css是什么?不需要了解太多文字类介绍,记住css是层叠样式表,HTML是页面结构,css负责页面样式,javascrt负责静态页面的交互.CSS 能够对网页中元素位置的排版进行像素级 ...

  8. 如何在vue-cli中使用vuex(配置成功

    前言 众所周知,vuex 是一个专为 vue.js 应用程序开发的状态管理模式,在构建一个中大型单页应用中使用vuex可以帮助我们更好地在组件外部管理状态.而vue-cli是vue的官方脚手架,它能帮 ...

  9. 【计算语言学实验】基于 Skip-Gram with Negative Sampling (SGNS) 的汉语词向量学习和评估

    一.概述 训练语料来源:维基媒体 https://dumps.wikimedia.org/backup-index.html 汉语数据 用word2vec训练词向量,并用所学得的词向量,计算 pku_ ...

  10. spring gzip 静态压缩优化

    HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览.相对 于普通的浏览过程HTML ,CSS,Java ...