首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入式Linux平台内核映像的构建

嵌入式Linux平台内核映像的构建
EN

Unix & Linux用户
提问于 2020-02-08 23:02:30
回答 1查看 710关注 0票数 -1

我感兴趣的是为基于Ingenic的SoC平台编译一个linux映像。供应商含糊地提供了关于如何为目标SoC编译linux内核的说明。因此,根据供应商的指示和在线搜索,需要有一个嵌入式linux的图像为平台。

  1. 编译工具链(mipsel用于基于mips的体系结构)
  2. 使用工具链使用给定的驱动程序/BSP编译linux内核
  3. 编译根文件系统- Busybox建议(不知道原因)
  4. 为目标uBoot编译SoC
  5. 使用特定于目标的分区表对存储(例如sd )进行分区
  6. 将整个图像闪现到sd中

那么问题是,为什么根文件系统与内核映像是分开的?在生成文件系统中,busybox扮演什么角色?另外,如果linux映像是在没有根文件系统的情况下编译的,那么如何将这两者合并为根文件系统中的/sys目录中的驱动程序呢?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-02-09 05:44:49

构建嵌入式linux是一个非常广泛而又非常神秘的话题,不确定它是否适合EE.SE或Unix/Linux.SE站点。

一些针对你的问题的书可以在这里找到:

Linux从头开始(LFS)

http://www.linuxfromscratch.org/

这本书源自流行的Linux从头开始操作,它描述了从一个已经安装的Linux发行版中从零开始创建您自己的Linux系统的过程,只使用所需的软件资源。

本书是Linux文档项目的一部分:

https://www.tldp.org/guides.html

从您之前的问题(关于EE.SE)中可以看出,您正在自学嵌入式系统,因此建议您阅读。从零开始,Linux假定您在PC上为同一台PC构建Linux发行版;这与交叉编译以针对PC以外的不同系统的问题不同。

更多的建议阅读(也在上面的TLDP指南链接上):

  • 初学者巴什指南
  • Linux简介--手握指南
  • GNU/Linux命令行工具摘要
  • 高级Bash脚本指南
  • Linux系统管理员指南
  • Linux内核模块编程指南(如果您开始编写设备驱动程序的话)
  • 自定义Linux:移植指南-将LinuxPPC移植到自定义SBC

还签出了嵌入式Linux Wiki,https://elinux.org/Main_页面

您可能会考虑从一个更普遍支持的嵌入式目标系统开始,比如Raspberry Pi或Beaglebone,那里有很多现有的支持。如果您首先在您的PC上构建一个相当当前的发行版,然后构建相当当前的发行版以在嵌入式目标系统上运行,则项目成功的几率要高得多。这在本质上是同样的问题,但是更多的人可以帮助解决关于构建里斯宾(Debian)的具体问题,很少有人会试图专门猜测Ingeninc SoC。例如,请参见RaspberryPi.SE:https://raspberrypi.stackexchange.com/questions/3196/building-kernel-image-img-including-ramdisk上的问题

为什么根文件系统与内核映像是分开的?

Linux就是这样设计的。内核映像是在内核空间中运行的可执行代码(启动时具有特殊权限),根文件系统是它的数据。除了为特定目标系统构建引导媒体之外,将两者结合起来是没有意义的。

busybox在生成文件系统中扮演什么角色?

没有。Busybox将几个最常用的Unix实用程序合并到shell可执行文件中。

Tradidional Unix倾向于许多小型、独立的实用程序;相比之下,Busybox方法将几个最常用的实用程序捆绑在shell内置程序中。Busybox是一个很好的选择,可以包含在目标系统的根文件系统中,因为它在一个相当小、方便的包中提供了许多有用的实用程序。

"Linux从头开始“指南遵循传统的非Busybox方法。我建议您先完成这个过程,而不必担心是否在目标系统中包含Busybox。

如果linux映像是在没有根文件系统的情况下编译的,那么如何合并这两个文件以使根文件系统中的/sys目录中有驱动程序呢?

设备驱动程序要么是作为内核映像的一部分构建的,要么是单独的可加载内核模块,它们可以在引导过程中随意加载。

虽然“文件”一词通常是指存储在非易失性存储设备上的比特流,如硬盘或USB棒,但"file“也可以是指任何具有名称或其他类型句柄的临时数据位。/proc、/sys和/dev中有一些特殊的、动态生成的文件,这些文件由内核生成,并安装在根文件系统的空/proc /sys和/dev占位符之上。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/566514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档