给 linux kernel 提交 patch 的步骤

这里记录一下给 kernel 提交 patch 的过程,比较零碎。

1. 生成 patch

首先需要把修改提交到本地。

1.1 单个 patch

commit 内容一般包含三个部分:第一行的格式一般是 module: summary,说明对哪个模块做了什么修改;接下来是说明为什么修改;最后是签名,通常是通过 git commit -s 来添加。

然后是生成要发送的 patch:

$ git format-patch --subject-prefix='PATCH' -1

--subject-prefix 是为邮件添加的前缀,通常有下面几个:

  • PATCH:常规的且正式的 patch;
  • RFC:不是要正式提上去的,希望一起讨论这个 patch,用来说明方向,看看意见;
  • RESEND:重新发送之前的 patch。

最后的 …

阅读全文…

在 x86 上调试 linux kernel

记录一下在 x86 上编译调试 6.7-rc7 的过程。

编译内核

从 kernel.org 或者 github 下载内核源码然后开始配置:

cd linux
export ARCH=x86
make x86_64_defconfig
make menuconfig

需要启用 debug 支持以及禁用随机地址(否则不能打断点)

Kernel hacking  --->
    [*] Kernel debugging
    [*]   Miscellaneous debug code
    Compile-time checks and compiler options  --->
        Debug information 

阅读全文…

linux 内核编译脚本

上一次编译内核已经是三年前倒腾 LFS 的事了。这两天心血来潮编译了最新的内核,写个脚本备份一下。这个脚本在 debian 6.0 下成功编译 3.2.0-rc5 并配置好 grub,在别的系统上可能不好使,所以这里更多的是一个过程记录。注释掉的部分是 grub 相关的,因为经实验发现这个工作 update-grub 已经做了。

#!/bin/bash

function display_usage()
{
   echo "Usage: $0 [install src | uninstall version]" >&2
}

if [ $# -ne 2 ]; then
   display_usage
   exit 1
fi

if [ 

阅读全文…