• 树莓派/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博客_树莓派内核编译

  • 相关阅读:
    jQuery的deferred对象详解
    MySQL主从复制与读写分离
    MySQL和MongoDB的性能测试
    MongoDB与MySQL的插入性能测试【转】
    mongodb+php通过_id查询
    MongoDB资料汇总专题
    mongodb常用命令
    【Mongodb教程 第十九课 】PHP与MONGODB的条件查询
    【Mongodb教程 第十八课 】MongoDB常用命令 数据库命令 集合操作命令
    mongoVUE 破解方法
  • 原文地址:https://www.cnblogs.com/rnckty/p/15102422.html
Copyright © 2020-2023  润新知