嵌入式Linux入门8:rootfs移植
rootfs,即root filesystem,中文直译为根文件系统,有时称文件系统(虽然不正确)。我们在板子上运行的命令、程序,都离不开rootfs,当然也离不开内核。本文着重介绍一下rootfs。
rootfs包含了系统环境,如系统命令、动态库/静态库、配置文件。也包含了用户程序(用户程序也可以理解为命令,不过是用户级别的)。现在有很多框架生成rootfs,如buildroot、LFS,不过嵌入式环境中,flash空间比较小(考虑硬件成本),busybox是不二之选,busybox体积非常小,因为将编译得到的所有命令,都链接到一个叫busybox的二进制文件,——这个box非常busy。所以十分适合嵌入式的场合,文中的rootfs就是指busybox。当然,如果财大气粗,flash空间非常大,则另说。
制作rootfs的过程,也称为“构建rootfs”。
一、rootfs编译步骤
busybox官网为https://busybox.net/,版本更新比较频繁。其实,选定一个版本即可,不需要追求最新。
1、配置:make menuconfig
一般地,busybox官方会有默认的配置,在此基础上再按需要选择,或删除或增加。
2、编译:make
注意,配置和编译,都要区分交叉编译,如是,则要编译时添加诸如CROSS_COMPILE=arm-linux- ARCH=arm的选项。
3、安装:make install
默认将编译好的二进制安装到busybox当前目录._install目录。
二、rootfs移植要点
一般地,厂家会自带了rootfs,里面包含厂家已经写好的脚本文件,如启动脚本、配置文件,等。如果自己从头构建的话,除了busybox的二进制,还需要自行添加配置文件,一般在/etc目录,还有一些库文件,在/lib目录,等等。
需要提出的是,有些工具busybox是不带的,如ldd、file等等。这些命令有的厂家会自带,如不自带,则要额外再编译,因此也是移植的一个工作量。
另外,有些配置可能不符合实际需求,也需要修改,比如设置默认IP、网关,点LED灯,禁止某些功能,等。
三、rootfs学习要点
rootfs不算复杂,一般使用厂家自带的编译好的文件即可。只需要在其上进行适应性修改。这些修改包含新加某些命令,修改启动脚本,等等。
笔者认为,可以在适当时候研究一下busybox源码,了解其结构,里面的一些技巧可直接在实际项目中使用。
最后需要提一下交叉编译器的问题。u-boot、kernel、rootfs的编译,最好使用同一版本的编译器。编译器虽然有版本兼容一说,但不同版本的编译编译得到的结果,可能会非常奇怪。额外添加的二进制文件,也需要相同版本的编译器。
2019年6月的PS:笔者建立了一个rootfs的仓库:https://www.cststudio.com.cn/rootfs,仅供参考。
李迟 2017.7.14 周五 晚
嵌入式Linux入门8:rootfs移植相关推荐
- 嵌入式Linux入门5:移植总览
本文概括性地介绍嵌入式Linux移植. 系统移植一般包括三大方面,如下: bootloader:作为上电运行的第一个程序,负责最原始的初始化操作,初始化芯片.初始化内存.初始化IO复用,读取内核代码并 ...
- 嵌入式Linux入门经典笔记
史上最牛的Linux内核学习方法论 点击下载 我的arm_linux移植笔记 点击下载 S3C2440完全开发流程 点击下载 Linux系统命令及其使用详解完整版 点击 ...
- 嵌入式linux怎么入门,嵌入式linux入门六步走
学习嵌入式linux怎样才能快速入门?这是很多出来华清远见参加嵌入式培训学员爱问的问题,这里做一个总结供大家参考,嵌入式linux入门可以概括为六步走: 第一步:学习基本的裸机编程 对于学硬件的人而言 ...
- 分享:嵌入式Linux入门学习指导
很多嵌入式linux初学者对嵌入式linux学习十分迷茫,不知道该怎么一步步学习,嵌入式linux学习方法,学习的流程步骤以及学习过程中需要看哪些好的书籍.下面凌阳教育嵌入式培训网就为大家整理的嵌入式 ...
- 嵌入式Linux入门13:应用层调试
本文主要介绍应用程序的调试方法. 很多网友问我怎么调试内核,怎么查找代码bug.其实我的方法不多.一是靠经验,掉入的坑多了,做笔记回顾,自然就有了经验.二是靠printf/printk大法跟踪.三是利 ...
- 嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)
嵌入式 Linux入门 环境篇第二课,正好换了新电脑,更新 Ubuntu 虚拟机的安装, 体验一下 Ubuntu 22.04 ...... by 矜辰所致 前言 因为以前的电脑虚拟机环境我都配置好了, ...
- 嵌入式linux入门学习规划
嵌入式linux入门学习规划 如何理解嵌入式系统 ◆嵌入式系统是面向用户.面向产品.面向应用的,它必须与具体应用相结合才会具有生命力.才更具有优势.因此可以这样理解上述三个面向的含义,即嵌入式系统是与 ...
- 嵌入式linux usb wifi驱动移植
文档名称:嵌入式linux usb wifi驱动移植 版本历史 版本号 时间 内容 v1.0b001 2012-6-18 初始版本,介绍在嵌入式 ...
- 嵌入式linux入门3-3-套接字
个人博客对应地址:嵌入式linux入门3-3-套接字 socket主要函数 创建套接字 socket,我们一般翻译为套接字,其是一种通讯接口,允许位于不同计算机之间的线程通过网络进行通讯,我们可以使用 ...
- ARM在嵌入式linux内核裁剪与移植的应用
微处理器用一片或少数几片大规模集成电路组成的中央处理器.这些电路执行控制部件和算术逻辑部件的功能.微处理器与传统的中央处理器相比,具有体积小,重量轻和容易模块化等优点.微处理器的基本组成部分有:寄存器 ...
最新文章
- 安卓绿色联盟两项免费福利重磅发布:EMUI9.0和绿色应用2.0测试能力
- 保洁阿姨看完都会了!java导出excel并下载详解
- c# winform 程序打包部署
- mysql show sleep_mysq解决sleep进程过多的办法
- zedboard的xdc文件
- cnblogs 博客园模板技巧
- 在一个环境中使用不同版本的rails
- 大并发服务器不得不说的技术--TCP_CORK
- spss 因子分析非正定矩阵解决方案
- 双目测距Python-OpenCV代码及详细解释
- 终于申请自己的博客了
- 后天就是七夕节,你准备好了吗?送上几个七夕代码,展示你技能的时候到了!
- hadoop2.9安装及配置_阿里云服务器上装Hadoop的心得(内附Hadoop2.9.2详细安装教程)...
- 解决微信访问 80 端口的限制问题
- 公司服务器中了.Monkey865qqz勒索病毒怎么处理?
- linux deb文件安装
- VMware虐我千百遍,我却待她如初恋
- java判断字符串是否为有效单词
- 百度语音识别极速版的使用例子(JAVA)
- JZ-7J-204/AC220V中间继电器
热门文章
- php 远程图片大小,PHP下载远程图片并保存到本地方法总结
- 西门子rwd60参数设置调试手册_RWD60 RWD68 RWD62西门子温控器调试说明指导
- 知乎通过港交所上市聆讯 2021年营收29.6亿元
- 收入超10亿?罗永浩:要真有这个收入 我早就还完债做智能产品去了
- 苹果可折叠iPhone有望在2023年推出 支持手写笔
- 特斯拉上调电动汽车预订订金:由100美元上调至250美元
- 滴滴披露女司机数据:80后女性过半 24%全年零违章
- 小米四曲面瀑布屏概念手机亮相:按键、开孔、边框全部消失
- 马斯克:特斯拉电动皮卡Cybertruck能在水上漂一会儿
- 一加8系列新机有望亮相CES 2020:全系支持5G网络