1. 程式人生 > 其它 >樹莓派/RaspberryPi 核心編譯

樹莓派/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)配置核心,配置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

    開啟CONFIG_USB_SERIAL_OPTION(載入USB Serial)

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

  2)編譯核心

# 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部落格_樹莓派核心編譯