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移植相关推荐

  1. 嵌入式Linux入门5:移植总览

    本文概括性地介绍嵌入式Linux移植. 系统移植一般包括三大方面,如下: bootloader:作为上电运行的第一个程序,负责最原始的初始化操作,初始化芯片.初始化内存.初始化IO复用,读取内核代码并 ...

  2. 嵌入式Linux入门经典笔记

    史上最牛的Linux内核学习方法论     点击下载 我的arm_linux移植笔记     点击下载 S3C2440完全开发流程     点击下载 Linux系统命令及其使用详解完整版     点击 ...

  3. 嵌入式linux怎么入门,嵌入式linux入门六步走

    学习嵌入式linux怎样才能快速入门?这是很多出来华清远见参加嵌入式培训学员爱问的问题,这里做一个总结供大家参考,嵌入式linux入门可以概括为六步走: 第一步:学习基本的裸机编程 对于学硬件的人而言 ...

  4. 分享:嵌入式Linux入门学习指导

    很多嵌入式linux初学者对嵌入式linux学习十分迷茫,不知道该怎么一步步学习,嵌入式linux学习方法,学习的流程步骤以及学习过程中需要看哪些好的书籍.下面凌阳教育嵌入式培训网就为大家整理的嵌入式 ...

  5. 嵌入式Linux入门13:应用层调试

    本文主要介绍应用程序的调试方法. 很多网友问我怎么调试内核,怎么查找代码bug.其实我的方法不多.一是靠经验,掉入的坑多了,做笔记回顾,自然就有了经验.二是靠printf/printk大法跟踪.三是利 ...

  6. 嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)

    嵌入式 Linux入门 环境篇第二课,正好换了新电脑,更新 Ubuntu 虚拟机的安装, 体验一下 Ubuntu 22.04 ...... by 矜辰所致 前言 因为以前的电脑虚拟机环境我都配置好了, ...

  7. 嵌入式linux入门学习规划

    嵌入式linux入门学习规划 如何理解嵌入式系统 ◆嵌入式系统是面向用户.面向产品.面向应用的,它必须与具体应用相结合才会具有生命力.才更具有优势.因此可以这样理解上述三个面向的含义,即嵌入式系统是与 ...

  8. 嵌入式linux usb wifi驱动移植

    文档名称:嵌入式linux usb wifi驱动移植 版本历史 版本号        时间        内容 v1.0b001        2012-6-18        初始版本,介绍在嵌入式 ...

  9. 嵌入式linux入门3-3-套接字

    个人博客对应地址:嵌入式linux入门3-3-套接字 socket主要函数 创建套接字 socket,我们一般翻译为套接字,其是一种通讯接口,允许位于不同计算机之间的线程通过网络进行通讯,我们可以使用 ...

  10. ARM在嵌入式linux内核裁剪与移植的应用

    微处理器用一片或少数几片大规模集成电路组成的中央处理器.这些电路执行控制部件和算术逻辑部件的功能.微处理器与传统的中央处理器相比,具有体积小,重量轻和容易模块化等优点.微处理器的基本组成部分有:寄存器 ...

最新文章

  1. 安卓绿色联盟两项免费福利重磅发布:EMUI9.0和绿色应用2.0测试能力
  2. 保洁阿姨看完都会了!java导出excel并下载详解
  3. c# winform 程序打包部署
  4. mysql show sleep_mysq解决sleep进程过多的办法
  5. zedboard的xdc文件
  6. cnblogs 博客园模板技巧
  7. 在一个环境中使用不同版本的rails
  8. 大并发服务器不得不说的技术--TCP_CORK
  9. spss 因子分析非正定矩阵解决方案
  10. 双目测距Python-OpenCV代码及详细解释
  11. 终于申请自己的博客了
  12. 后天就是七夕节,你准备好了吗?送上几个七夕代码,展示你技能的时候到了!
  13. hadoop2.9安装及配置_阿里云服务器上装Hadoop的心得(内附Hadoop2.9.2详细安装教程)...
  14. 解决微信访问 80 端口的限制问题
  15. 公司服务器中了.Monkey865qqz勒索病毒怎么处理?
  16. linux deb文件安装
  17. VMware虐我千百遍,我却待她如初恋
  18. java判断字符串是否为有效单词
  19. 百度语音识别极速版的使用例子(JAVA)
  20. JZ-7J-204/AC220V中间继电器

热门文章

  1. php 远程图片大小,PHP下载远程图片并保存到本地方法总结
  2. 西门子rwd60参数设置调试手册_RWD60 RWD68 RWD62西门子温控器调试说明指导
  3. 知乎通过港交所上市聆讯 2021年营收29.6亿元
  4. 收入超10亿?罗永浩:要真有这个收入 我早就还完债做智能产品去了
  5. 苹果可折叠iPhone有望在2023年推出 支持手写笔
  6. 特斯拉上调电动汽车预订订金:由100美元上调至250美元
  7. 滴滴披露女司机数据:80后女性过半 24%全年零违章
  8. 小米四曲面瀑布屏概念手机亮相:按键、开孔、边框全部消失
  9. 马斯克:特斯拉电动皮卡Cybertruck能在水上漂一会儿
  10. 一加8系列新机有望亮相CES 2020:全系支持5G网络