AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 566514
Accepted
GENIVI-LEARNER
GENIVI-LEARNER
Asked: 2020-02-09 15:02:30 +0800 CST2020-02-09 15:02:30 +0800 CST 2020-02-09 15:02:30 +0800 CST

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

  • 772

我有兴趣为基于 Ingenic SoC 的平台编译 linux 映像。供应商含糊地提供了有关如何为目标 SoC 编译 linux 内核的说明。因此,根据供应商说明和在线搜索,需要以下内容才能获得该平台的嵌入式 linux 映像。

  1. 编译工具链(mipsel for mips based architecture)
  2. 使用工具链使用给定的驱动程序/BSP 编译 linux 内核
  3. 编译根文件系统 - Busybox 建议(不知道为什么)
  4. 为目标 SoC 编译 uBoot
  5. 使用目标特定的分区表对 sd 等存储进行分区
  6. 将整个图像刷入sd

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

linux-kernel busybox
  • 1 1 个回答
  • 553 Views

1 个回答

  • Voted
  1. Best Answer
    MarkU
    2020-02-09T21:44:49+08:002020-02-09T21:44:49+08:00

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

    可以在这里找到一些解决您问题的书籍:

    Linux From Scratch (LFS)
    http://www.linuxfromscratch.org/
    “源自流行的 Linux-From-Scratch-HOWTO,本书描述了从已经安装的 Linux 发行版从头开始创建自己的 Linux 系统的过程,使用只不过是所需的软件来源。”

    本书是 Linux 文档项目的一部分:
    https ://www.tldp.org/guides.html

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

    其他推荐阅读(也在上面的 TLDP 指南链接上):

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

    还可以查看嵌入式 Linux Wiki,https://elinux.org/Main_Page

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

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

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

    busybox 在生成文件系统中起什么作用?

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

    传统的 Unix 偏爱许多小的、独立的实用程序;相比之下,Busybox 方法将几个最常用的实用程序捆绑为 shell 内置程序。Busybox 是包含在目标系统的根文件系统中的一个不错的选择,因为它在一个相当小且方便的包中提供了许多有用的实用程序。

    “Linux from Scratch”指南遵循传统的非 Busybox 方法。我建议首先完成该过程,而不必担心是否为您的目标系统包含 Busybox。

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

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

    虽然术语“文件”通常表示存储在非易失性存储设备(如硬盘或 USB 记忆棒)上的比特流,但“文件”也可以表示任何具有名称或其他类型的临时数据比特串处理。/proc、/sys 和 /dev 中有一些特殊的、动态生成的文件,它们由内核生成,并安装在根文件系统的空 /proc /sys 和 /dev 占位符之上。

    • 3

相关问题

  • 如何让我的帧缓冲控制台工作?

  • 阻止挂载系统调用

  • 为什么无线工具版本 30 成为永久测试版?

  • 程序堆栈大小

  • 哪些 802.11ac(或更高版本)WiFi 加密狗适用于 Linux 4.13 内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve