一步步教你如何在ubuntu虚拟机中安装QEMU并模拟arm 开发环境(二)rootfs制作【转】

转自:https://blog.csdn.net/qq_24188351/article/details/77921653?ops_request_misc=%7B%22request%5Fid%22%3A%22158298496319725222401711%22%2C%22scm%22%3A%2220140713.130056874..%22%7D&request_id=158298496319725222401711&biz_id=0&utm_source=distribute.pc_search_result.none-task

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

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

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博主「风清扬的博客」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_24188351/article/details/77921653

原文地址:https://www.cnblogs.com/sky-heaven/p/12391363.html

时间: 2025-01-01 12:13:46

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

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

前几天带大家一起安装了Ubuntu14.04系统,没来得及上车的伙伴可以戳这篇文章:手把手教你在VMware虚拟机中安装Ubuntu14.04系统.今天小编带大家一起在Ubuntu14.04中安装Pycharm,具体的教程如下.1.首先在主目录下创建software文件夹,此时该文件夹为空文件夹.这个文件夹下用于放置安装软件,当然这个步骤不是必须的,只是小编习惯的做法. 2.去Pycharm官网上下载Pycharm的Linux安装包,建议下载专业版的,如下图所示. 3.下载到本地之后,将其用fi

如何在VMware虚拟机中安装centOS

VMware下如何安装centos 准备工作: 电脑一台 VMware安装完毕 centos镜像 第一步:打开VMware点击创建新的虚拟机 第二步:选择自定义安装,点击下一步 第三步:选择硬件兼容性,(若您的兼容性错误在软件兼容性中修改),点击下一步. 第四步:选择虚拟机操作系统,在这里我选择稍后安装操作系统,点击下一步. 第五步:选择Linux选择CentOS(请按照您选择的系统选择64位或32位),点击下一步. 第六步:选择你的虚拟机名称以及需要安装虚拟机的位置,选择完成后点击下一步. 第

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

转 http://www.xitongzhijia.net/xtjc/20160825/81741.html Windows XP是一款经典的操作系统,同时也是一款很老的操作系统,不过尽管如此,还是有一批用户在使用XP系统,所以发行一些软件的时候还是要测试在XP系统中能否运行,这时候我们就可以借助VirtualBox虚拟机安装一个XP系统来测试软件的兼容性,下面就开始讲解详细的VirtualBox虚拟机安装XP系统的教程. 方法/步骤1 创建XP系统环境 1.打开虚拟机,点击新建,名称随便,如我

如何在VirtualBox 虚拟机中挂载共享文件夹

啊,好长时间没写博客了,最近有点忙~~ 不得不说 VirtualBox 对于一些不想装很多个系统又很想实验新系统的人来说确实是神器: 哈哈,个人还是比较爱玩这些个各种各样的Linux 发型版的,但是不得不说其中有的是不熟,还有的是实在不适合做长期使用的操作系统(比如主打界面的ElementaryOS 以及超像MacOS的梨子PearOS),所以我自己常年使用Debian ,而这些想玩的只能放在虚拟机中玩玩咯.我用的是 VirtualBox 4.3.10 版,今天想试试Mint 下能不能正常安装

ZH奶酪:在Virtualbox中的Ubuntu虚拟机中,安装Guest Additions客户端增强包时出错:分配介质 虚拟光盘 xxx\VBoxsGuestAdditions.iso 到虚拟电脑 xxx 失败。您是否要强制卸载分配该介质?

在Virtualbox中的Ubuntu虚拟机中, 安装Guest Additions,出错: 分配介质 虚拟光盘 xxx\VBoxsGuestAdditions.iso 到虚拟电脑 xxx 失败.您是否要强制卸载分配该介质? Could not mount the media/drive xxx\VBoxsGuestAdditions.iso (VERR_PDM_MEDIA_LOCKED) (1)手动弹出对应的光盘: (2)然后可以看到提示,已弹出了: (3)然后再重新操作一次:设备->安装增强

在虚拟机中安装Ubuntu Server 15.04

学Linux,上红联! 红联Linux门户|Linux通用技术|Linux发行版技术|Linux企业应用|Linux实验室|红联Linux论坛 Linux系统教程 Linux入门 Linux管理 Linux技巧 Linux命令 Ubuntu系统 Linux服务器 Linux数据库 Linux开发 您的位置: Linux系统教程 > Ubuntu系统 > 在虚拟机中安装Ubuntu Server 15.04 时间:2015-06-13来源:blgpl.blog.51cto.com 作者:XIAO

Windows Azure上的Odoo(OpenERP)-1.创建Ubuntu虚拟机,安装PostgreSQL 数据库

前提是您必须拥有Windows Azure的账号,如果没有的话,可以去Windows Azure 中国区网站申请免费试用账号.哈哈,我就是第一批申请的试用账号,感觉自己挺幸运的.申请的过程就不写了,请自行Google! 哦,对不起(GFW),请自行百度. 首先请登录Windows Azure,然后我们来大踏步的前进吧! 1.首先让我们创建一个运行Ubuntu操作系统的虚拟机 点击界面左下角的"新建"   会弹出一个对话框,让你选择新建运行何种操作系统的虚拟机 我选择的Ubuntu Se

如何在虚拟机中安装Minimal CD for Ubuntu

最小系统小巧方便,只有几十兆,用来做Openstack的实验和制作Openstack的云镜像的好的选择.下面来说说如何在虚拟机中安装最小系统,为做devstack的实验做好准备. 我选择的是VirtrualBox5.0,可以从下面的地址进行下载:https://www.virtualbox.org/wiki/Downloads 镜像我选择的是64-bit PC (amd64, x86_64) (Recommended)下的第三个Ubuntu 14.04 LTS "Trusty Tahr"

PHP字符串中的变量解析(+教你如何在PHP字符串中加入变量)

定义字符串的时候,用单引号或者双引号都是可以的.我个人习惯是用双引号.在输出字符串的时候,若字符串中含有字符串变量,使用单引号和双引号则是有区别的.如下面程序: 1 2 3 4 5 6 7 8 <?php $website = "NowaMagic"; $name = 'Gonn'; echo 'Welcome to visit $website. My name is $name.'; echo '<br>'; echo "Welcome to visit