开发者指南

目录

  1. 报告 BUG
    1. 报告安全漏洞
    2. 报告崩溃事件
    3. 报告一般 BUG
    4. 报告 Alibaba Cloud Linux 操作系统 BUG
  2. 帮助改进项目
    1. 获取内核源码
    2. 构建内核
    3. 提交补丁

1. 报告 BUG

参与本项目最直接的方式就是使用 Cloud Kernel 和 Alibaba Cloud Linux 操作系统并向我们报告使用中遇到的 BUG. 不过在提交 BUG 报告之前,需要先了解一些基本原则:

1.1 报告安全漏洞

我们欢迎来自安全领域的研究专家向我们提交内核及操作系统方面的漏洞报告,然而我们不鼓励任何人直接公开安全漏洞细节。如需报告安全漏洞,烦请发送相关报告至我们的服务邮箱 security@OpenAnolis.org, 我们会第一时间查收并仔细审阅。

1.2 报告崩溃事件

我们深知操作系统和内核的崩溃事件(Kernel Panic)对于任何用户来说都是一个很严重的事件,我们会将此类 BUG 报告提升到高优先级来解决,请在项目的 issues 页面报告此类问题。为了便于我们更好地理解您所碰到的问题,请尽可能包含下列信息:

分析内核崩溃问题极具挑战性,我们鼓励任何尝试帮助复现问题,以推进问题排查的行为。

1.3 报告一般 BUG

请在项目的 issues 页面报告此类问题。

1.4 报告 Alibaba Cloud Linux 操作系统 BUG

Cloud Kernel 与 Alibaba Cloud Linux 操作系统关系紧密,如果您遇到任何 Alibaba Cloud Linux 操作系统相关的问题,也请在项目的 issues 页面提交 BUG 报告,或者在邮件列表阿里云开发者论坛参与讨论。

2. 帮助改进项目

2.1 获取内核源码

在决定参与内核开发之前,建议您先获取内核源码并构建内核。您可以从 Releases 页面下载到稳定版内核的压缩包,然后解压缩到某个目录:

tar xzf ck-release-7.tar.gz

或者您也可以从我们的 Git 仓库 Clone 代码:

git clone git@github.com:alibaba/cloud-kernel.git

Cloud Kernel 是基于 Upstream LTS v4.19.91 版本进行开发的,正式发布分支为 master 分支,开发分支为 linux-next 分支。建议您基于开发分支进行开发。

2.2 构建内核

构建内核之前,您需要一个内核配置文件。我们在 configs 分支提供了一个默认内核配置文件,您只需下载并将其重命名为 .config,然后保存到内核源码树的顶层目录下。

cd cloud-kernel/
wget https://raw.githubusercontent.com/alibaba/cloud-kernel/configs/config-4.19.y-x86_64 -O .config

请注意,默认内核配置文件是一个精简定制版本,删掉了众多驱动模块,其中就包括存储设备驱动和网卡驱动等。因此您不应该直接将此内核运行于物理机上,否则物理机可能因缺少驱动而无法启动。我们推荐您只在 KVM 虚拟机中运行该内核,或者您确认已自行在非 KVM 平台中启用所需的驱动模块。 如需在物理机上运行,可以使用我们提供的备用配置文件

假设您已事先安装好所需的工具链,此时您可以开始构建内核了:

cd cloud-kernel
make oldconfig
make -jN # N 一般是您系统中 CPU 的逻辑核数
make modules -jN
sudo make modules_install
sudo make install

接下来,您可以重启并运行您的新内核。重启前请确保您有紧急启动系统的手段,以防新内核无法正常启动。

2.3 提交补丁

在您日常使用 Cloud Kernel 过程中,您或许发现了一些内核 BUG,并且找到了修复它的方法。欢迎将修复整理成补丁发送给我们。

Cloud Kernel 的开发和 Linux 内核社区开发模式基本一致,您可以参阅 kernel.org 上的 “submitting patches guide” 一文,在这篇文章中,提到了一些非常有用的建议,比如:

此外,我们还有一些特殊的开发规约如下:

2.3.1 回合(Backport)补丁的规则

我们拒绝重复发明轮子,因此如果在社区已有针对某问题的解决方案,请直接回合该解决方案,而非自己再想一个新的解决方案。其他与回合有关的规则有:

2.3.2 新补丁的编写与提交规则

2.3.3 其他规则

2.3.4 提交补丁的方式

当您的补丁完成后,可以提交给我们审核。当前我们接受下列两种方式进行审核: