不同的架构有不同的linux内核吗?

不同的架构有不同的linux内核吗?

如果我想为 ARM 架构构建自定义内核,我需要:

a) 从 kernel.org 下载内核,对内核进行更改,使用一些交叉编译器(例如代码源或其他东西)构建它

b) 从某处找到 ARM 特定内核,找到一些补丁,使用一些 ARM 特定工具编译它?

可以为 ARM 架构构建任何自定义内核吗?

一般来说,我对内核知之甚少。

答案1

Linux 内核源代码 tarball 和 git 存储库包含所有受支持架构(例如 ARM)的代码。

该子目录Documentation/arm/包含一些 ARM 相关文档,您可能应该在继续操作之前先查看一下。

ARM 特定代码位于arch/arm/子目录中(某些 ARM 特定驱动程序可能位于drivers/*/子目录中)。

因此,请继续从 kernel.org 下载正常的内核 tarball 并开始阅读,Documentation/arm/README其开头如下:

内核编译

为了编译 ARM Linux,您需要一个能够生成带有 GNU 扩展的 ARM ELF 代码的编译器。 GCC 3.3 已知...

看起来在阅读该文件后您将得到很多答案(也许还有更多问题,但请毫不犹豫地提出:)。

答案2

所有架构的内核源代码都是相同的。它主要是用 C 语言编写的,并带有一些特定于架构的汇编。

为 ARM 构建最简单的方法就是已经在 ARM 上运行。然后您可以简单地遵循常规编译文档。

如果您想从不同的体系结构进行构建,这称为交叉编译。我自己从未这样做过,但我确实知道您需要设置一个交叉编译工具链才能这样做。

本指南应该可以帮助你开始。

相关内容