树莓派/RaspberryPi 内核编译

目标:修改Linux的内核源码,让其识别并加载相关的USB Serial的驱动(也可用于升级内核)

环境:树莓派3B+(搭载)

原有内核版本

Linux raspberrypi 4.14.76-v7+ #1150 SMP Mon Oct 15 15:19:23 BST 2018 armv7l GNU/Linux

 

1、下载树莓派Linux的内核源码

  源码地址:https://github.com/raspberrypi/linux

  选择所需编译的分支版本:4.14.y

# git clone --depth=1 -b rpi-4.14.y https://github.com/raspberrypi/linux.git

  众所周知,国内直接下载github的源码是比较慢的,所以在此提供一个高速下载的地址 

# git clone --depth=1 -b rpi-4.14.y https://gitclone.com/github.com/raspberrypi/linux.git

 

2、修改源码

  根据相关的文档修改 [KERNEL]/drivers/usb/serial/option.c 文件(此处不是重点,不做详细介绍,)


3、编译、提取内核及其模块

  1)安装bc

# apt-get install -y bc

  2)配置内核,配置makefile的ARCH类型和编辑器路径

    可以直接修改内核根目录的Makefile文件,修改下面的这两行    

ARCH  ?=$(SUBARCH)
CROSS_COMPILE ?=$(CONFIG_CROSS_COMPILE:"%"=%)

    或者执行指令

# cd linux
# KERNEL=kernel7
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
说明:
  Pi 1 使用bcmrpi_defconfig
  Pi 2/3 使用bcm2709_defconfig

    配置内核模块,执行

# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

  PS:如果此处报错 Makefile:520: recipe for target 'menuconfig' failed,则安装以下包

apt-get install ncurses-dev

  开启CONFIG_USB_SERIAL_OPTION(加载USB Serial)

    [*] Device Drivers
      [*] USB Support
        [*] USB Serial Converter support
           [*] USB driver for GSM and CDMA modems

  3)编译内核

# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

    如果是多处理系统可以添加选项-jn ,n为数字,表示多处理器的数量*1.5。可以加快编译速度

# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 zImage modules dtbs

  整个编译的时间根据配置的不同有所不同,本次编译时间约1小时,请耐心等待。

 

4、升级内核及其文件

  1)安装modules (/path为存放的路径)

# make modules_install ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/path/modules
# cp /path/modules/lib/modules/4.14.114-v7+ /lib/modules/

  2)升级内核

# mv /boot/$KERNEL.img /boot/$KERNEL-backup.img 
# ./scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img
# cp arch/arm/boot/dts/*.dtb /boot/
# cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
# cp arch/arm/boot/dts/overlays/README /boot/overlays/

 

5、重启并查看内核

# uname -a
Linux raspberrypi 4.14.114-v7+ #2 SMP Wed Aug 4 20:49:36 CST 2021 armv7l GNU/Linux

升级成功

 

参考:

  1、树莓派/RaspberryPi 内核编译 - Qiengo - 博客园 (cnblogs.com)
  2、树莓派3B+内核编译_jqh_111的专栏-CSDN博客_树莓派内核编译

posted @ 2021-08-05 11:09  贱书生  阅读(1199)  评论(0编辑  收藏  举报