# atzlinux-kernel **Repository Path**: atzlinux/atzlinux-kernel ## Basic Information - **Project Name**: atzlinux-kernel - **Description**: atzlinux linux kernel - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 13 - **Forks**: 7 - **Created**: 2022-02-25 - **Last Updated**: 2024-08-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 背景: 飞腾机器,主板集成的网卡、声卡等需要额外内核驱动,该驱动目前没有进入上游主线内核。 目前有一份飞腾技术支持提供的基于 4.19 内核补丁文件,飞腾内部版本号为 4.19.9, 想把它移植到 Debian 11 稳定版内核 5.10.140 内核上来。 ## 环境准备 ### git clone 本仓库 git clone https://gitee.com/atzlinux/atzlinux-kernel.git ### 飞腾 4.19 内核补丁文件路径 https://gitee.com/atzlinux/atzlinux-kernel/blob/master/debian/patch/phytium-official/ 文件名: patch-phytium-4.19.9 该文件比较大,在移植时,需要根据驱动模块目录,剥离成小的补丁文件。 该目录下其它文件,是飞腾历史补丁文件和移植到其它版本内核的补丁文件。 ### Debian 11 5.10 内核头文件安装 - 可以在 Debian 11 操作系统上,直接用 apt 安装 apt install linux-headers-arm64 - 在其它 Debian 系操作系统上,可以下载 deb 包安装 * https://mirrors.bfsu.edu.cn/debian/pool/main/l/linux/linux-headers-*-common_*_all.deb * https://mirrors.bfsu.edu.cn/debian/pool/main/l/linux/linux-headers-*-arm64_*_arm64.deb 请将 * 号使用 Debian 11 最新的 5.10.x 内核版本号代替。 安装完成后,会在 /usr/src 下生成头文件目录: /usr/src/linux-headers-*-common /usr/src/linux-headers-*-arm64 ### 5.10 内核源代码 建议使用国内内核 git 镜像 https://mirrors.bfsu.edu.cn/git/linux-stable.git 可以在本机 clone 该内核仓库,方便排查内核函数变化。 ## 目录路径 ### 补丁文件路径 从 4.19 飞腾内核原始补丁文件剥离出来的单个驱动模块补丁文件,和针对 5.10.x 修改后的补丁文件,放到 debian/patch 目录。 ### 可编译源代码 在仓库根目录下,按 linux 内核文件目录层级建立相应目录。 拷贝 5.10 内核源代码相应模块目录,再根据飞腾 4.19 内核补丁文件,进行源代码修改。 该目录下源代码,可以编译通过后,再用 git diff 形成针对 5.10 内核补丁文件, 放入 debian/patch 目录。 - 编译命令 该目录下驱动,可以使用 make -C /usr/src/linux-headers-5.10.0-x-arm64/ M=$PWD modules 编译模块 .ko 文件。 - 清理当前编译目录命令 make -C /usr/src/linux-headers-5.10.0-x-arm64/ M=$PWD clean ## 步骤: #### 移植过程三部曲: 1.提取飞腾旧内核补丁 按功能模块分开放到 debian/patch 目录下。 该补丁文件以 4.19.9-path-filename.patch 形式命名 2.生成新内核补丁 将补丁文件迁移到 5.10.x 内核上,能够成功编译,新的补丁文件,以 5.10.x-path-filename.patch 形式命名 , 放入 debian/patch 目录。 该新内核补丁文件初始版本,可以直接由旧内核补丁直接拷贝,然后逐步修改为能够正常 patch 新内核的补丁文件,持续提交更新。 3.创建生成可编译目录 在仓库根目录下,按目录路径创建相应模块目录,放置在 5.10.x 上可以编译的驱动文件。 需要有 Makefile 和 Kconfig 文件,能够直接编译成 .ko 模块文件。 ## 内核模块 ### insmod 加载 相关驱动模块,希望能够用 module 方式加载到内核。 能够正确识别硬件,功能正常。 ### rmmod 卸载 可以使用 rmmod 卸载驱动模块,dmesg 信息正常。 ### 迁移进度 - 2022-08-07 获取 4.19.9 版飞腾内核补丁 - 2022-03-10 完成 at803x stmmac 模块迁移 - 2022-03-18 由飞腾技术支持提交 4.19.8(2021-12-20)版飞腾内核补丁 ### 迁移成功模块软件包 迁移成功的模块, 相关内核模块二进制包、udeb 安装包、dkms 包,可以通过 arm64 架构的铜豌豆软件源下载安装: https://www.atzlinux.com/allpackages-arm64.htm ## 其它事项 - 补丁文件,请使用 diff -ru 生成 - 如果有对内核头文件的修改,请尽量将改动放在驱动模块的代码上,不修改内核头文件 这样生成的内核模块驱动,可以不依赖内核符号,方便灵活。 - 《铜豌豆 Linux》ARM64 架构 iso 下载 https://www.atzlinux.com/download-iso.htm#arm64 - 大家如果没有 arm64 架构测试机器,可以先在 amd64 机器上,把代码调通,能够编译,再 MR,PR 过来, 我们会在飞腾测试机器上进行编译测试。 #### 参考文档 - Linux 内核模块编译文档: https://docs.kernel.org/kbuild/modules.html 欢迎大家补充! 相关问题,欢迎创建 issue!