根據官方文檔 https://www.raspberrypi.org/documentation/linux/kernel/building.md
步驟如下(這裏只說交叉編譯,因爲在配置高的機器上編譯效率高):
1) 下載 kernel 的 source
$ git clone --depth=1 https://github.com/raspberrypi/linux
如何知道kernel 的當前版本,兩個方法
a) make kernelversion
b) head Makefile
2) 配置kernel
RASPBERRY PI 1 (OR COMPUTE MODULE) DEFAULT BUILD CONFIGURATION
$ cd linux
$ KERNEL=kernel
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig
RASPBERRY PI 2 DEFAULT BUILD CONFIGURATION
$ cd linux
$ KERNEL=kernel7
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
這時候,生成.config文件
如何你不滿意可以用 make ARCH=arm menuconfig 繼續改
3) 安裝toolchain
git clone https://github.com/raspberrypi/tools
把工具路徑設置到$PATH
export PATH=$PATH:~/rapi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
4) 開始編譯
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
5) 打 rt 補丁 (把rapi 改爲實時控制系統)
官方文檔 https://www.raspberrypi.org/documentation/linux/kernel/patching.md
我的步驟:
a) 看 kernel 版本 (4.1.12)
$ head Makefile -n 4
VERSION = 4
PATCHLEVEL = 1
SUBLEVEL = 12
EXTRAVERSION =
下載rt補丁(可先在瀏覽器https://www.kernel.org/pub/linux/kernel/projects/rt/中瀏覽 )
wget https://www.kernel.org/pub/linux/kernel/projects/rt/4.1/patch-4.1.10-rt11.patch.gz
解開gz文件,patch kernel 文件
gunzip patch-4.1.10-rt11.patch.gz
cat patch-4.1.10-rt11.patch | patch -p1
而後重新編譯kernel
make -j3 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs