在radxa zero 3上使用 6.1的内核

我想在zero3 的板子上使用6.1的内核,但是bsp编译后,默认使用的是5.10的内核,请问如何修改为6.1的内核?

如果目的是6.1内核而非有需要自己编译的东西的话,可以考虑用最新的b1镜像(radxa-zero3_bookworm_kde_b1.output_512.img.xz)[0],内核版本是6.1.84。

我需要基于6.x的内核,增加驱动代码,然后编译镜像。我修改./linux/rk356x/fork.conf文件,将bsp_branch修改为linux-6.1-stan-rkr5.1,然后执行bsp后报错,信息如下:
Initialized empty Git repository in /newdisk1/workplace/radxa/bsp/.src/radxa-overlays/.git/
fatal: ambiguous argument ‘FETCH_HEAD’: unknown revision or path not in the working tree.
Use ‘–’ to separate paths from revisions, like this:
‘git […] – […]’
remote: Enumerating objects: 671, done.
remote: Counting objects: 100% (671/671), done.
remote: Compressing objects: 100% (360/360), done.
remote: Total 671 (delta 463), reused 366 (delta 298), pack-reused 0 (from 0)
Receiving objects: 100% (671/671), 186.32 KiB | 1.77 MiB/s, done.
Resolving deltas: 100% (463/463), done.
From https://github.com/radxa-pkg/radxa-overlays

  • branch 552501587a4d2d1b79493c690c6af01f73407ee5 -> FETCH_HEAD
    HEAD is now at 5525015 feat: add rk2410-nocsf build test
    HEAD is now at 5525015 feat: add rk2410-nocsf build test
    /newdisk1/workplace/radxa/bsp/linux/rk356x/0001-common /newdisk1/workplace/radxa/bsp/.src/linux /newdisk1/workplace/radxa/bsp
    /newdisk1/workplace/radxa/bsp/.src/linux /newdisk1/workplace/radxa/bsp
    Applying: VENDOR: Add Radxa overlays
    Checking patch arch/arm64/boot/dts/amlogic/Makefile…
    error: while searching for:

SPDX-License-Identifier: GPL-2.0

dtb-$(CONFIG_ARCH_MESON) += meson-axg-s400.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510-android.dtb

error: patch failed: arch/arm64/boot/dts/amlogic/Makefile:1
Checking patch arch/arm64/boot/dts/rockchip/Makefile…
error: while searching for:

SPDX-License-Identifier: GPL-2.0

dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-evb.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-evb-ddr3-v10.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-evb-ddr3-v10-avb.dtb

error: patch failed: arch/arm64/boot/dts/rockchip/Makefile:1
error: while searching for:
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-tablet-rk806-single-v10.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-tablet-v10.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-tablet-v11.dtb

subdir-y := $(dts-dirs) overlay
error: patch failed: arch/arm64/boot/dts/rockchip/Makefile:178
Checking patch scripts/Makefile.dtbinst…
error: while searching for:
include $(src)/Makefile

dtbs := $(addprefix $(dst)/, $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-)))
dtbos := $(addprefix $(dst)/, $(dtbo-y))
readmes := $(addprefix $(dst)/, $(dtbotxt-y))
subdirs := $(addprefix $(obj)/, $(subdir-y) $(subdir-m))

__dtbs_install: $(dtbs) $(dtbos) $(readmes) $(subdirs)
@:

quiet_cmd_dtb_install = INSTALL $@

error: patch failed: scripts/Makefile.dtbinst:18
error: while searching for:
$(dst)/%.dtbo: $(obj)/%.dtbo
$(call cmd,dtb_install)

$(dst)/README.rockchip-overlays: $(src)/README.rockchip-overlays
$(call cmd,dtb_install)

PHONY += $(subdirs)

error: patch failed: scripts/Makefile.dtbinst:34
Checking patch scripts/Makefile.lib…
Hunk #1 succeeded at 505 (offset 45 lines).
Applying patch arch/arm64/boot/dts/amlogic/Makefile with 1 reject…
Rejected hunk #1.
Applying patch arch/arm64/boot/dts/rockchip/Makefile with 2 rejects…
Rejected hunk #1.
Rejected hunk #2.
Applying patch scripts/Makefile.dtbinst with 2 rejects…
Rejected hunk #1.
Rejected hunk #2.
Applied patch scripts/Makefile.lib cleanly.
Patch failed at 0001 VENDOR: Add Radxa overlays
hint: Use ‘git am --show-current-patch=diff’ to see the failed patch
When you have resolved this problem, run “git am --continue”.
If you prefer to skip this patch, run “git am --skip” instead.
To restore the original branch and stop patching, run “git am --abort”.
bsp

zero3的内核现在使用的是独立的一个仓库打包了
仓库链接:https://github.com/radxa-pkg/linux-rk2410-nocsf

我更换了您提供的内核路径后,编译系统,仍然没有成功。
请问,是否可以提供完整的基于bsp+linux6.1开发的完整步骤。
我编译时的报错信息:
Initialized empty Git repository in /newdisk1/workplace/radxa/bsp/.src/radxa-overlays/.git/
fatal: ambiguous argument ‘FETCH_HEAD’: unknown revision or path not in the working tree.
Use ‘–’ to separate paths from revisions, like this:
‘git […] – […]’
remote: Enumerating objects: 671, done.
remote: Counting objects: 100% (671/671), done.
remote: Compressing objects: 100% (360/360), done.
remote: Total 671 (delta 463), reused 366 (delta 298), pack-reused 0 (from 0)
Receiving objects: 100% (671/671), 186.32 KiB | 1.77 MiB/s, done.
Resolving deltas: 100% (463/463), done.
From https://github.com/radxa-pkg/radxa-overlays

  • branch 552501587a4d2d1b79493c690c6af01f73407ee5 -> FETCH_HEAD
    HEAD is now at 5525015 feat: add rk2410-nocsf build test
    HEAD is now at 5525015 feat: add rk2410-nocsf build test
    /newdisk1/workplace/radxa/bsp/linux/rk356x/0001-common /newdisk1/workplace/radxa/bsp/.src/linux /newdisk1/workplace/radxa/bsp
    /newdisk1/workplace/radxa/bsp/.src/linux /newdisk1/workplace/radxa/bsp
    Applying: VENDOR: Add Radxa overlays
    Checking patch arch/arm64/boot/dts/amlogic/Makefile…
    error: while searching for:

SPDX-License-Identifier: GPL-2.0

dtb-$(CONFIG_ARCH_MESON) += meson-axg-s400.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510-android.dtb

error: patch failed: arch/arm64/boot/dts/amlogic/Makefile:1
Checking patch arch/arm64/boot/dts/rockchip/Makefile…
error: while searching for:

SPDX-License-Identifier: GPL-2.0

dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-evb.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-evb-ddr3-v10.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += px30-evb-ddr3-v10-avb.dtb

error: patch failed: arch/arm64/boot/dts/rockchip/Makefile:1
error: while searching for:
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-tablet-rk806-single-v10.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-tablet-v10.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-tablet-v11.dtb

subdir-y := $(dts-dirs) overlay
error: patch failed: arch/arm64/boot/dts/rockchip/Makefile:178
Checking patch scripts/Makefile.dtbinst…
error: while searching for:
include $(src)/Makefile

dtbs := $(addprefix $(dst)/, $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-)))
dtbos := $(addprefix $(dst)/, $(dtbo-y))
readmes := $(addprefix $(dst)/, $(dtbotxt-y))
subdirs := $(addprefix $(obj)/, $(subdir-y) $(subdir-m))

__dtbs_install: $(dtbs) $(dtbos) $(readmes) $(subdirs)
@:

quiet_cmd_dtb_install = INSTALL $@

error: patch failed: scripts/Makefile.dtbinst:18
error: while searching for:
$(dst)/%.dtbo: $(obj)/%.dtbo
$(call cmd,dtb_install)

$(dst)/README.rockchip-overlays: $(src)/README.rockchip-overlays
$(call cmd,dtb_install)

PHONY += $(subdirs)

error: patch failed: scripts/Makefile.dtbinst:34
Checking patch scripts/Makefile.lib…
Hunk #1 succeeded at 505 (offset 45 lines).
Applying patch arch/arm64/boot/dts/amlogic/Makefile with 1 reject…
Rejected hunk #1.
Applying patch arch/arm64/boot/dts/rockchip/Makefile with 2 rejects…
Rejected hunk #1.
Rejected hunk #2.
Applying patch scripts/Makefile.dtbinst with 2 rejects…
Rejected hunk #1.
Rejected hunk #2.
Applied patch scripts/Makefile.lib cleanly.
Patch failed at 0001 VENDOR: Add Radxa overlays
hint: Use ‘git am --show-current-patch=diff’ to see the failed patch
When you have resolved this problem, run “git am --continue”.
If you prefer to skip this patch, run “git am --skip” instead.
To restore the original branch and stop patching, run “git am --abort”.
bsp

不用做什么替换内核路径的事情,目前zero3 6.1内核并不是使用bsp进行编译的。就按照这个仓库[0]的README走。把仓库clone下来,src/文件夹放的就是linux内核代码。对src/下的linux代码做完你需要的修改后,使用devcontainer打开此仓库[0]在你电脑上的文件夹,然后运行make deb去编译内核。devcontainer的好处是能够让所有人的编译环境统一,防止出现因为某些依赖软件版本不达到要求而问出“为什么在我电脑上运行不了”的问题。

EDIT: devcontainer使用的就是docker[1]