所以我最近收购了基于君正 SoC 的 RS-97 游戏,它运行 MIPS 指令集。供应商含糊地提供了有关如何为目标 SoC 编译 linux 内核的说明。因此,根据供应商说明和在线搜索,需要以下内容才能获得该平台的嵌入式 linux 映像。
- 编译工具链(mipsel for mips based architecture)
- 使用工具链使用给定的驱动程序/BSP 编译 linux 内核
- 编译根文件系统 - Busybox 建议(不知道为什么)
- 为目标 SoC 编译 uBoot
- 使用目标特定的分区表对 sd 等存储进行分区
- 将整个图像刷入sd
所以问题是,为什么根文件系统与内核映像是分开的?busybox 在生成文件系统中起什么作用?另外,如果 linux 映像是在没有根文件系统的情况下编译的,如何将两者合并以在根文件系统的 /sys 目录中拥有驱动程序?
这些都是非常大的问题,我会尽可能简单地总结一下。
内核映像是由 kernel.org 提供的可执行文件(您可以根据需要对其进行修改,但大多数人不会),它为您的嵌入式 Linux 项目提供了框架。根文件系统是您的代码和配置所在的位置:内核加载根文件系统。
Busybox 是一个应用程序,它提供了许多有用的功能,例如命令行界面、列出文件、列出进程、复制文件等。 Busybox 的功能根据它的命名方式而变化:您重命名应用程序,它会执行不同的功能。这是将大量实用程序打包到一个小文件系统中的一种非常有效的方法。
你可以给内核一些参数来告诉它在哪里找到它的根文件系统。您要设置
root
参数。请参阅内核的命令行参数。