5 Star 13 Fork 6

铜豌豆 Linux / atzlinux-kernel

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
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 包安装

请将 * 号使用 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!

空文件

简介

atzlinux linux kernel 展开 收起
C 等 3 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/atzlinux/atzlinux-kernel.git
git@gitee.com:atzlinux/atzlinux-kernel.git
atzlinux
atzlinux-kernel
atzlinux-kernel
master

搜索帮助