Compile Raspberry Pi Kernel

by LauCyun May 28,2017 09:52:24 13,948 views

使用官方给的镜像搭建好了树莓派的开发环境,可以说已经可以上手应用了,但是如果官方提供的内核有些功能不能满足我们的需要或者需要对内核进行部分裁剪,那么就需要对树莓派的内核进行裁剪,本篇将讲解如何自己编译最新的 Linux Kernel 给你的 Raspberry Pi 使用。
1. 下载编译工具、Kernel源文件、固件 Firmware

下载地址:https://github.com/raspberrypi

上面列出了树莓派所有的开源软件:

  • firmware:树莓派的交叉编译好的二进制内核、模块、库、bootloader
  • linux:内核源码
  • tools:编译内核和其他源码所需的工具——交叉编译器等

我们只需要以上三个文件即可,下面的源码可以了解一下:

  • documentation:树莓派离线帮助文档,教你如何使用、部署树莓派(树莓派官方使用教程)
  • userland:arm 端用户空间的一些应用库的源码——vc 视频硬浮点、EGL、mmal、openVG 等
  • hats:Hardware Attached on Top,树莓派 B+ 型板子的扩展板资料
  • maynard:一个 gtk 写成的桌面环境
  • scratch:一个简易、可视化编程环境
  • noobs:一个树莓派镜像管理工具,他可以让你在一个树莓派上部署多个镜像
  • weston:一个应用程序
  • target_fs:树莓派最小文件系统,使用 busybox 制作
  • quake3:雷神之锤 3 有线开发源码 firmwareb

下载源码:

$ mkdir raspeberrypi_src
$ cd raspberrypi_src
$ git clone git://github.com/raspberrypi/firmware.git
$ git clone git://github.com/raspberrypi/linux.git
$ git clone git://github.com/raspberrypi/tools.git

会得到三个文件夹:firmware、linux、tools

图1 编译工具、Kernel源文件、固件 Firmware

 

2. 编译、提取内核及其模块

2.1 获得内核配置文件

在运行的树莓派中运行

$ ls /proc/

可看到一个叫 config.gz 的文件,他是当前的树莓派配置选项记录文件,我们将他拷出,放入我们的内核源码目录树下。

$ cp /proc/config /home/pi

我们这里使用前面交过的 samba 拷出并拷入内核源码目录下,不熟悉的人可参考前面文章。

在 linux 内核源码下执行

$ zcat config.gz > .config

2.2 配置、编译内核

修改内核源码 makefile ARCH 类型和编译器路径$vi Makefile +195,找到以上类似代码,改为如图所示。

查看、修改配置选项$make menuconfig,可出现以下界面。

如果不做修改,直接选中 exit 即可(注意使用键盘操作)。

编译内核镜像$makearch/arm/boot目录下可以看到一个叫zImage的文件,就是我们新的内核,但是树莓派需要另外一种格式的镜像,需要进行处理一下,执行以下命令

$ cd tools/mkimage

$./imagetool-uncompressed.py ../../linux/arch/arm/boot/zImage

即可在当前文件夹下看到一个叫kernel.img的文件,就是我们需要的新内核了。

提取 modules 上一步其实不但编译出来了内核的源码,一些模块文件也编译出来了,这里我们提取一下,

$ cd raspberrypi_src
$ mkdir modules
$ cd linux
$ make modules_install INSTALL_MOD_PATH=../modules

即可在 modules 得到我们需要的模块文件。

Tags