原创

嵌入式Linux入门8:rootfs移植

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://latelee.blog.csdn.net/article/details/75137866

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 周五 晚

文章最后发布于: 2017-07-14 22:59:36
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览