为 MIPS 编译 Linux 内核

Compiling the Linux kernel for MIPS

我有一台 32 位 MIPS 机器,想在上面 运行 Linux。我需要使用我的 Windows 7 机器交叉编译 Linux 到 MIPS。我对如何去做这件事感到困惑。有人能告诉我这是什么步骤吗?为什么?我不了解此过程中涉及的所有不同工具。谢谢

OS 关注

好吧,您可以(理论上)在 Windows 下构建内核和 BusyBox rootfs,请参阅 MIPS toolchain for Windows。但是在 Windows 中准备正确的构建环境可能相当 hard(可能是 Cygwin 或 MinGW,我不确定)。例如,在 Ubuntu 中,您开箱即用,一切就绪。

另一点是开发——使用 Linux 进行 Linux 内核开发更加容易和自然。我认识的每个从事 Linux 内核(包括 MIPS 架构)工作的人都在使用 Linux 进行开发和构建内核和 rootfs。

简而言之:Windows是Linux开发的异类环境,尽量避免使用。

所以我建议您 安装 Linux 发行版 并使用它来构建内核和 rootfs,并将构建的映像闪存到您的设备。最新的 Ubuntu LTS 可以(目前是 Ubuntu 14.04)。

组件

首先,您需要弄清楚需要构建哪些组件。如果您有嵌入式系统——对于初学者,我建议您接下来做:

  • 构建引导程序;我推荐U-Boot
  • 单独构建 Linux 内核(git clone 来自 here 的稳定版本)
  • 构建BusyBox-based rootfs
  • flash 引导加载程序、内核和 rootfs 映像到您的设备

现在你有最小的工作环境。

工具链

在构建任何东西之前,请确保您已安装 MIPS toolchain 并且您的环境 (shell) 已正确配置。有两种工具链:

  1. ELF toolchain (has -elf or -none-eabi in its name): intended for bare-metal 个程序。您应该使用它来构建您的引导加载程序和内核。
  2. GNU/Linux toolchain (has -linux-gnu or -linux-gnueabi in its name): it depends on Linux system calls 并具有 C 标准库,因此它旨在用于在 Linux 下构建用户 space 应用程序 运行。您应该使用它来构建 BusyBox,因为它是用户 space 程序。

我可能会建议您查看 Sourcery CodeBench 工具链。下一个你特别感兴趣:

安装工具链后,您需要在工作环境中执行后续操作 (shell)。

  1. 更新您的 PATH 环境变量,将您的工具链的 bin/ 目录添加到其中:

    $ export PATH=/opt/path/to/your/toolchain/bin:$PATH
    
  2. 导出 CROSS_COMPILE 环境变量,其中应包含工具链的前缀。例如,如果您在工具链 bin/ 目录中看到 mips-sde-elf-gcc,那么您应该执行下一步操作:

    $ export CROSS_COMPILE=mips-sde-elf-
    
  3. 导出 ARCH 环境。变种。设置为您的体系结构:

    $ export ARCH=mips
    

现在您可以像构建 x86 一样构建内核和 BusyBox:

$ make <target>

有用的阅读

正如评论中所推荐的那样,可能值得研究 OpenWrt 项目,因为它是为 MIPS 架构设计的(它是各种路由器非常流行的开源固件)并且广泛使用 MIPS 工具。查看 OpenWrt build system 文档以获取有关这些工具的一些线索。