嵌入式linux启动根文件系统,嵌入式Linux根文件系统制作和挂载

嵌入式Linux系统由三部分组成: uboot、kernel、根文件系统, 还是这张老图

3f288ee285423cc6e29fa526842ca321.png

这里的根文件系统可以说是包含两个部分: 一个是根,一个是文件系统

那么什么是根呢?哈哈 其实根表示的就是第一个的意思

下面贴张图看看整个根文件系统制作的步骤:

3f288ee285423cc6e29fa526842ca321.png

第一步创建目录,这里是在我自己的一个目录下建立一个名为rootfs的目录:

3f288ee285423cc6e29fa526842ca321.png

第二步 :创建设备文件(比如操作串口,其实就是打开一个串口文件,向里面写入读出等)

这里有两个是必须的,其他的暂时不考虑(串口控制台)(这个在dev目录下执行)

3f288ee285423cc6e29fa526842ca321.png

第一个指令console表示是串口控制台设备 c表示是字符设备 5表示主设备号,1表示次设备号

第二个指令暂时也不明白,先放着。

第三步:加入配置文件(主要是etc目录下的)

3f288ee285423cc6e29fa526842ca321.png

第四步:添加内核模块

3f288ee285423cc6e29fa526842ca321.png

这个要进入到Llinux 内核中编译内核模块!

3f288ee285423cc6e29fa526842ca321.png

第二条指令是将编译好的模块拷贝到rootfs目录下的相应目录中

3f288ee285423cc6e29fa526842ca321.png

从这里可以看到当前目录下的一些.ko文件

第五步:编译安装busybox

3f288ee285423cc6e29fa526842ca321.png

先解压,然后进入目录make menuconfig

3f288ee285423cc6e29fa526842ca321.png

3f288ee285423cc6e29fa526842ca321.png

这里直接进入第一项,这里有两项要设置

1. 选中第一项Build BusyBox as a static binary

2. Corss Compile prefix 输入自己交叉编译器的前缀

3f288ee285423cc6e29fa526842ca321.png

3f288ee285423cc6e29fa526842ca321.png

上图中需要设置两个地方,一个是选中第一项 一个是BusyBox installation prefix安装路径这里填写我自己建的目录所在的绝对路径。

3f288ee285423cc6e29fa526842ca321.png

上图中的home写错了,这里先说一下。退出然后保存,make 编译然后make install(其实这里就是执行一个复制功能)(上面的选项其他的暂不配置)安装成功后截图:

3f288ee285423cc6e29fa526842ca321.png

这是也可以去rootfs/bin目录下看看有什么变化,执行之前bin目录下是空的

3f288ee285423cc6e29fa526842ca321.png

这里可以看到很多常用的命令!

第二部分:挂载根文件系统(即如何使用上边制作好的根文件系统)

3f288ee285423cc6e29fa526842ca321.png

3f288ee285423cc6e29fa526842ca321.png

3f288ee285423cc6e29fa526842ca321.png

第一步:

3f288ee285423cc6e29fa526842ca321.png

Initramfs 启动速度快。缺点是掉电后数据丢失!

进入rootfs目录下,创建一个软链接!把系统的Initramfs链接到当前的目录下的busybox下 软链接的名字取为init

然后进入Linux内核中配置make menuconfig配置内核

3f288ee285423cc6e29fa526842ca321.png

进入general setup

3f288ee285423cc6e29fa526842ca321.png

选中图中蓝色部分上面一项Initial RAM filessystem and RAM disk.......

并且进入图中蓝色部分写入自己执着的rootfs路径:

3f288ee285423cc6e29fa526842ca321.png

保存,然后重新编译内核

3f288ee285423cc6e29fa526842ca321.png

编译完成:

3f288ee285423cc6e29fa526842ca321.png

这里将生成的 arch/arm/boot/uImage文件拷贝到tftpboot目录下!(这个可以参考前面的关于自动启动内核设置那篇博文)

3f288ee285423cc6e29fa526842ca321.png

最后一步,设置环境变量:

打开串口终端,连接开发板

设置环境变量:

3f288ee285423cc6e29fa526842ca321.png

3f288ee285423cc6e29fa526842ca321.png

然后tftp uImage c0008000

bootm c0008000启动内核

这里可以看到上面制作的文件系统启动成功

3f288ee285423cc6e29fa526842ca321.png

下面一步来讲述使用NFS来挂着根文件系统!(network file system)

这样有利于开发过程中的同步,即在PC机上更改一些文件能同时同步到开发板上的文件上

这样就省去了每次更改一些内核文件时重新编译工作!(内核开发过程中非常实用,使用NFS是必须掌握的技巧)

首先第一步还是内核配置:

首先取消掉上面选中的Initial RAM filesystem and RAM disk...选项,如图:(这一项是在Gnenral setup选项里面)

3f288ee285423cc6e29fa526842ca321.png

然后进入file systems中

3f288ee285423cc6e29fa526842ca321.png

进入选中图中蓝色选项:

3f288ee285423cc6e29fa526842ca321.png

选中图中蓝色选项,并且进入,选中图中蓝色部分

3f288ee285423cc6e29fa526842ca321.png

然后退出保存,然后在重新编译make uImage ARCH=arm CROSS_COMPILE=arm-linux-

3f288ee285423cc6e29fa526842ca321.png

同上将uImage拷贝到tftpboot目录下,

然后剩下的就是设置nfs环境变量了

3f288ee285423cc6e29fa526842ca321.png

我电脑linux的ip 是192.168.1.111, 开发板的ip是192.168.1.110

所以这里我设置的环境变量为

setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.111:/home/S3-ARM/rootfs,proto=tcp,nfsvers=3 ip=192.168.1.110:192.168.1.111:192.168.1.1:255.255.255.0::eth0:off设置完后然后saveenv一下

tftp c0008000 uImage

bootm c0008000

然后看一张截图,就是我在pc机的linux上的rootfs目录下建立一个Text.txt文件,可以看到这个文件立刻就可以在开发板上看到。

3f288ee285423cc6e29fa526842ca321.png

这在内核开发基本是必备技能!用起来是相当方便的!

这里NFS挂载补充一点:/etc/init.d/nfs restart 启动nfs服务器

第二点:

vim /etc/exports 文件 输入一下内容,这个是我的rootfs文件路径(这里的意思就是NFS要挂在的目录是哪个,然后挂载属性是什么)

3f288ee285423cc6e29fa526842ca321.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqlite 查询 支持多用户同时_SQLite支持多进程同时操作数据库文件吗?

多个进程可以同时打开同一个数据库。多个进程可以同时执行SELECT。但是,只有一个进程可以随时对数据库进行更改。SQLite使用读/写锁来控制对数据库的访问。(在Win95 / 98 / ME下,缺少对读写锁的支持,而是使用概率模拟。)但请注意:…

pgsql 查询每天的最后一条_Qamp;A | 如何允许他人查询表单数据?

小金Q&A来啦!这一期小金Q&A中,小金收集到近期大家关注最多的几个问题。小金将定期为小金人们答疑解惑,帮助你每天用好小金一点。●Q&A●问:如何批量设置新数据微信提醒?答:点击右上角头像 个人…

linux 解压tar.jz,linux系统压缩文件和解压缩命令

linux系统压缩文件和解压缩命令tar命令   解包:tar zxvf FileName.tar打包:tar czvf FileName.tar DirName gz命令   解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.gz 和 .tgz解压&a…

linux fall delay 10,Cell的Rise delay和Fall delay、Rise transition和fall transition

Cell的Rise delay和Fall delay、Rise transition和Fall transition介绍:如下图所示为一个Cell的lib中关于cell_rise/cell_fall、rise_transition/fall_transition的描述:在NLDM模型的.lib中,cell_rise/cell_fall它描述的是Cell从输入到输出的…

keil流水灯c语言程序两个一起亮,我用keil c51编了一个流水灯程序,编译无误却只有第一和第二个灯亮了,最后停在第一个灯处不动...

满意答案zJ张俭2014.02.09采纳率:43% 等级:12已帮助:10469人你有几个错误:1 你的定时器没有重装,导致第一次中断和后面的中断时间不一样,第一次时间短,后面的时间一直是以65536个周期中断的.2 你在中断函数里用了 for 循环,for循环是一下子…

pyquery获取不到网页完整源代码_python动态网页爬取:爬取pexel上的图片

前言同样的,我们在写一个爬虫前要明确自己想要爬取的东西是什么,明确下载目标数据在浏览器的操作如何对于动态网页的爬取,在网页地址不变的情况下,我们首先要明确如何获取AJAX请求首先我们看看这个网站pexel打开页面后再Chrome浏览…

W ndows找不到explorer,windows找不到explorer.exe的处理教程

很多网友入手windows过程里找不到explorer.exe,很是烦恼,为了帮助大家排忧解难,这里小编就分享了windows找不到explorer.exe的处理教程,希望可以帮助到大家。windows找不到explorer.exe的处理教程1、按winr打开运行窗口&#xff0…

极光推送 android 最新,Android——快速集成极光推送-Go语言中文社区

集成极光推送1,首先肯定是注册,添加应用2,开始自动集成比手动集成简单第一步 在 build.gradledefaultConfig {multiDexEnabledtrueapplicationId rootProject.ext.cfg.applicationIdminSdkVersionrootProject.ext.cfg.minSdkVersiontargetSdk…

华为云服务怎么弄金卡会员_万科牵手华为终端云服务,共建松山湖智慧商圈

12月18日,坐落在东莞松山湖南华为旁的44000㎡的开放式商业mall——滨湖万科里正式启幕。现场华为终端云服务部还与万科南方区域商业事业部签署了战略合作协议,开启共建智慧商圈的新版图。值得一提的是,这也是华为终端云服务与万科在商业板块的…

cad2014打开文件崩溃_CAD玩的再牛,崩溃了咋办?

导读前几天,一入职新人晚上加班画完的图纸在最后一刻CAD崩溃了!好在最后在临时保存文件夹中找到了完整的图纸。这才免于通宵。CAD崩溃是我们画图中经常遇到的问题。对于CAD崩溃后的处理,相信老司机都已经游刃有余。但也有防不胜防的时候&…

android 弹窗ui,Android 弹出窗口与对话框 UI设计

左图: Android 自带的日期选择弹窗; 右图: Android 自带的时间选择弹窗.左图: Android 日历中的重复选择; 右图: Chrome 中的打印.干净简洁的布局与有趣儿又引人注目的交互让操作变得轻松而愉快, 尤其是那在时间选择器中出现的双环.同样的, 也有很多人试图在自己的应用中给他们…

vim反向删除_VIM之操纵缓冲区列表

引子昨天遇到了一个奇怪的问题,一条在Sublime里面看着十分正常的SQL语句,执行了也是正常的,导出的Insert语句也是看着没毛病的,但是在查询出来,传递到下游的时候,说多了一个乱码。WTF,然后就开始…

卸载 windows_Windows 10可能很快会自动卸载有问题的Windows更新

看起来微软已经悄悄地向Windows 10添加了一项新功能,该功能将允许操作系统自动删除导致问题的任何有问题的Windows更新。这是一个好消息,因为Windows 10最近有一些有问题的更新,其中一些阻止了Windows 10的加载。根据微软刚刚发布的一份新支持…

android /data/system/dropbox,Android导出dropbox日志

文章内容已重新排版:Android导出dropbox日志,请到该链接浏览,谢谢支持。大项目中出现anr几乎是必然事件,这里我就不再去赘述怎么分析anr日志了。但是作为分析anr重要依据的必然离不开dropbox日志。问题来了,dropbox文件…

android蓝牙串口 hc06,Android手机通过蓝牙模块HC-06连接Arduino串口输出

通过手机进行通信是可以实现很多遥控功能,虽然距离是比较短,一般是10米,但对于我这种新手做测试,比起买一个几百块的多通道遥控器成本要低很多。实验目的:用Android实现蓝牙连接通过Arduino串口输出信息这次使用的是蓝…

esrgan_港中文-商汤联合实验室:ECCV2018 PIRM-SR 超分辨率比赛冠军:ESRGAN(已开源)...

Summary:中科院和京东AI研究院提出:改进SRN人脸检测算法,目前业界最强!Author:AmusiDate:2019-02-09微信公众号:CVer原文链接:香港中文大学-商汤联合实验室:ECCV2018 PIR…

android中如何新建一个activity,《Android Activity》活动的介绍和创建

Activity 是什么Android 有四大组件:Activity、Service、Broadcast Receiver 和 Content Provider。Activity,活动,即用来承载用户界面的容器,Android 四大组件之一。我们在 APP 里面看到的页面就需要一个 Activity,页…

android qq红点,Android高仿QQ小红点功能

先给大家展示下效果图:绘制贝塞尔曲线:主要是当在一定范围内拖拽时算出固定圆和拖拽圆的外切直线以及对应的切点,就可以通过path.quadTo()来绘制二阶贝塞尔曲线了~整体思路:1、当小红点静止时,什么都不做,只…

android1.6,令人遗憾的Android 1.6系统_戴尔 Mini5(Streak)_手机其它OS-中关村在线

令人遗憾的Android 1.6系统虽然Dell Streak上周五刚刚在美国地区上市,但实际上这款产品的开发时间已经很长了。早在去年Dell的Mini 3i上市之前这款被称之为Dell Mini 5的产品就已经出现在大家的视野之中,而当时其搭载的就是在当时看来还是十分先进的Andr…

android 控制word,Android使用POI进行Word操作(一)

操作步骤步骤一:引用相关POI库步骤二:创建POI中的word文件对象步骤三:调用word文件对象的方法对文件进行操作步骤一:引用相关的POI库吐槽一下,这一步是最坑的本人尝试了很多版本组合,最新的版本提示class重…