Linux Kernelへのパッチ作成及び送信手順
概要
1. 変更を行う
2. コミットをrebaseし纏める
git rebase -i [commit id]
3. パッチの作成
git format-patch [commit id]
4. パッチの確認
./scripts/checkpatch.pl [patch file]
ここで何らかのエラーが出力される場合には修正を行う。
- 変数宣言の空白行の有無
空白行を追加する。
WARNING: Missing a blank line after declarations #21: FILE: kernel/sched/core.c:6706: + u64 quota, period; + if (cfs_percent < 0)
- Signed-off-byの有無
コミット(git commit
)時に-s
のオプションを追加することでコミットに付加することが可能。git commit --amend -s
などコミット後の変更も可能。
ERROR: Missing Signed-off-by: line(s)
5. パッチを送信するメンテナの確認
./scripts/get_maintainer.pl [patch file]
出力例:
$ ./scripts/get_maintainer.pl 0001-feat-CFS-Bandwidth-add-an-interface-for-CFS-Bandwidt.patch Ingo Molnar <mingo@redhat.com> (maintainer:SCHEDULER) Peter Zijlstra <peterz@infradead.org> (maintainer:SCHEDULER) linux-kernel@vger.kernel.org (open list:SCHEDULER)
6. パッチの送信
送信者以外にもメーリングリストや自身へのCCは推奨されている。
コマンド例:
$ git send-email \ --to='mingo@redhat.com' --cc-cmd='./scripts/get_maintainer.pl --norolestats 0001-feat-CFS-Bandwidth-add-an-interface-for-CFS-Bandwidt.patch' \ --cc='peterz@infradead.org' \ --cc='linux-kernel@vger.kernel.org' \ --cc='princeontrojanhorse@gmail.com' \ 0001-feat-CFS-Bandwidth-add-an-interface-for-CFS-Bandwidt.patch