Linux“三巨头”已经完成了 2
个了,就剩最后一个
rootfs(
根文件系统
)
了,本章我们就来学
习一下根文件系统的组成以及如何构建根文件系统。这是
Linux
移植的最后一步,根文件系统
构建好以后就意味着我们已经拥有了一个完整的、可以运行的最小系统。以后我们就在这个最
小系统上编写、测试
Linux
驱动,移植一些第三方组件,逐步的完善这个最小系统。最终得到
一个功能完善、驱动齐全、相对完善的操作系统
uboot kernel 部分特别是内核启动流程比较复杂,设计模块较多 待后续进一步了解
一 根文件系统简介
根文件系统一般也叫做 rootfs,Linux 中的根文件系统一般是 EXT4。
根文件系统首先是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件
并没有保存在 根文件系统中,一般保存在
NAND Flash 的指定存储地址、 EMMC 专用分区中。而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本(和 服务等加载到内存中去运行。 比如 rcS , inittab
根文件系统和
Linux
内核是分开的,单独 的 Linux
内核是没法正常工作的,必须要搭配根文件系统。如果不提供根文件系统,
Linux
内核 在启动的时候就会提示内核崩溃(Kernel panic)
的提示
1.1 根文件系统结构
proc
目录
此目录一般是空的,当
Linux
系统启动以后会将此目录作为
proc
文件系统的挂载点,
proc
是个虚拟文件系统,没有实际的存储设备。
proc 里面的文件都是临时存在的,一般用来存储系
统运行信息文件
opt
可选的文件、软件存放区,由用户选择将哪些文件或软件放到此目录中。一般编译过程中的产物 存放位置
二 BusyBox 构建根文件系统
BusyBox
是一个集成了大量
的
Linux
命令和工具的软件,像
ls
、
mv
、
ifconfig
等命令
BusyBox
都会提供。
BusyBox
就是一
个大的工具箱,这个工具箱里面集成了
Linux
的许多工具和命令。一般下载
BusyBox
的源码,
然后配置
BusyBox
,选择自己想要的功能,最后编译即可。
1
、例程源码
->6
、
BusyBox
源码
->busybox-1.29.0.tar.bz2
buidroot
2.1 编译根文件小系统
2.1.1、修改 Makefile,添加编译器
同
Uboot
和
Linux
移植一样,打开
busybox
的顶层
Makefile
,添加
ARCH
和
CROSS_COMPILE
的值,如下所示:
164 CROSS_COMPILE ?= /usr/local / arm / gcc - linaro - 4.9.4 - 2017.01 -x86_64_arm - linux - gnueabihf / bin / arm - linux - gnueabihf -......190 ARCH ?= arm
2.1.2、busybox 中文字符支持
如果默认直接编译
busybox
的话,在使用
SecureCRT
的时候中文字符是显示不正常的,中文字
符会显示为“
?
”,比如你的中文目录,中文文件都显示为“
?
”。不知道从哪个版本开始
busybox
中的
shell
命令对中文输入即显示做了限制,即使内核支持中文但在
shell </

本文详细介绍了Linux根文件系统(rootfs)的组成和构建过程,包括BusyBox的集成、内核启动流程、根文件系统的结构,以及如何从交叉编译器获取库文件添加到rootfs中。通过NFS挂载测试了根文件系统的功能,同时提到了rcS、fstab和inittab等重要配置文件的作用。
最低0.47元/天 解锁文章
326

被折叠的 条评论
为什么被折叠?



