0%

编译并更换树莓派内核

  • 严格参考下文的官网方式

    参考网站

  • 编译内核官方参考
  • 实时内核官方参考

    编译指令

  • 树莓派github连接下载内核压缩包
  • 解压到/usr/src目录下
  • 切换超级用户sudo passwd root设置密码
  • sudo su切换到超级用户
  • apt install git bc bison flex libssl-dev libncurses-dev make安装必要的包
  • 执行KERNEL=<你的内核名字>sudo make bcm2712_defconfig
    • 注意设置完环境变量之后就不能切换用户了
  • 使用make menuconfig修改内核选项
  • 修改.config中的CONFIG_LOCALVERSION选项为自己希望的自定义内核后缀名
    • 注意,上述内容在make menuconfig后会被覆盖,因此要在上一步之后进行
  • make -j4 Image.gz modules dtbs编译内核
  • make modules_install
    # 这一步是备份,名字不冲突可以不执行
    sudo cp /boot/firmware/$KERNEL.img /boot/firmware/$KERNEL-backup.img
    # 安装内核
    sudo cp arch/arm64/boot/Image.gz /boot/firmware/$KERNEL.img
    sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/firmware/
    sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/firmware/overlays/
    sudo cp arch/arm64/boot/dts/overlays/README /boot/firmware/overlays/
  • 然后使用sudo vim /boot/firmware/config.txt
  • 最后添加一句kernel=<你的内核名字>.img
  • reboot重启
  • 最终成功切换到自己定义的内核
    • picture 0

实时内核

  • 完全按照官网的指示来
  • rt patch找包的时候找符合自己大版本的即可,小版本也相同的可能不好找
  • 注意有时候patch中可能会出现fail的情况,不全是成功,但是不影响编译
  • 结果
    • picture 1
  • 测试CAN的驱动不受影响
    • picture 2