最大かつ最も動きの速いオープンソースプロジェクトの1つであるLinuxカーネルは、約53,600のファイルと約2,000万行のコードで構成されています。世界中で15,600人以上のプログラマーがプロジェクトに貢献しており、Linuxカーネルはコラボレーションのメンテナーモデルに従います。
この記事では、最初のカーネル貢献を行うための手順の簡単なチェックリストを提供し、パッチを送信する前に知っておくべきことを確認します。最初のパッチを提供するための提出プロセスの詳細については、KernelNewbiesの最初のカーネルパッチチュートリアルをお読みください。
カーネルへの貢献
ステップ1:システムを準備します。
この記事の手順は、システムに次のツールがあることを前提としています。
- テキストエディタ
- メールクライアント
- バージョン管理システム(例:git)
ステップ2:Linuxカーネルコードリポジトリをダウンロードする:
git clone -b staging-testing
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
現在の設定をコピーします:
コード>
cp /boot/config-`uname -r`* .config
ステップ3:カーネルをビルド/インストールします。
make -jX
sudo make modules_install install
ステップ4:ブランチを作成してそれに切り替えます。
git checkout -b first-patch
ステップ5:最新のコードベースを指すようにカーネルを更新します。
git fetch origin
git rebase origin/staging-testing
ステップ6:コードベースに変更を加えます。
make
を使用して再コンパイルします 変更によってエラーが発生しないようにするコマンド。
ステップ7:変更をコミットしてパッチを作成します。
git add <file>
git commit -s -v
git format-patch -o /tmp/ HEAD^
件名は、コロンで区切られたファイル名へのパスと、それに続く命令型のパッチの機能で構成されます。空白行の後に、パッチの説明と必須のサインオフタグ、そして最後にパッチの差分が表示されます。
簡単なパッチの別の例を次に示します。
次に、コマンドライン(この場合はMutt)から電子メールを使用してパッチを送信します:
mutt -H /tmp/0001-<whatever your filename is>
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
パッチの送信先のメンテナのリストを知るには、get_maintainer.plスクリプトを使用してください。
最初のパッチを送信する前に知っておくべきこと
- Greg Kroah-Hartmanのステージングツリーは、新しい寄稿者からの簡単なパッチを受け入れるため、最初のパッチを送信するのに適した場所です。パッチ送信プロセスに慣れたら、複雑さを増したサブシステム固有のパッチを送信できます。
- コード内のコーディングスタイルの問題を修正することから始めることもできます。詳細については、Linuxカーネルのコーディングスタイルのドキュメントを参照してください。
- スクリプトcheckpatch.plは、コーディングスタイルのエラーを検出します。たとえば、次のコマンドを実行します。
perl scripts/checkpatch.pl -f drivers/staging/android/* | less
- 開発者が不完全なままにしたTODOを完了することができます:
find drivers/staging -name TODO
- Coccinelleはパターンマッチングに役立つツールです。
- カーネルのメーリングアーカイブを読んでください。
- linux.gitログを調べて、インスピレーションを得るために以前の作成者によるコミットを確認してください。
- 注:パッチのレビュー担当者と連絡を取るためにトップポストを投稿しないでください。次に例を示します。
間違った方法:
クリス、
はい、明日の2階での会議のスケジュールを立てましょう。
> 2013年4月26日金曜日午前9時25分、クリスは次のように書いています。
>ねえ、ジョン、いくつか質問がありました:
> 1.明日会議をスケジュールしますか?
> 2.オフィスのどの階にありますか?
> 3.あなたに適した時間は何ですか?(最後の質問が意図せずに返信に残されていることに注意してください。)
正しい方法:
クリス、
以下の私の答えを参照してください...
> 2013年4月26日金曜日の午前9時25分、クリスは次のように書いています。
>ねえ、ジョン、いくつか質問がありました:
> 1.明日会議をスケジュールしますか?
はい明日は大丈夫です。
> 2.オフィスのどの階にありますか?
2階に置いておきましょう。
> 3.あなたに適した時間は何時ですか?
午前9時で大丈夫です。(すべての質問に回答したので、読む時間を節約できます。)
- Eudyptulaチャレンジは、カーネルの基本を学ぶのに最適な方法です。
詳細については、KernelNewbies FirstKernelPatchチュートリアルをお読みください。その後、まだ質問がある場合は、kernelnewbiesメーリングリストまたは#kernelnewbiesIRCチャネルで質問してください。