![不同的架构有不同的linux内核吗?](https://linux22.com/image/17707/%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9E%B6%E6%9E%84%E6%9C%89%E4%B8%8D%E5%90%8C%E7%9A%84linux%E5%86%85%E6%A0%B8%E5%90%97%EF%BC%9F.png)
如果我想为 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 上运行。然后您可以简单地遵循常规编译文档。
如果您想从不同的体系结构进行构建,这称为交叉编译。我自己从未这样做过,但我确实知道您需要设置一个交叉编译工具链才能这样做。
本指南应该可以帮助你开始。