3月 4, 2022

Linuxカーネルに貢献するためのステップ

最大かつ最速の移動—オープンソースプロジェクトの一つ、Linuxカーネルは、約53,600ファイルと約20万行のコードで構成されています。 世界中で15,600人以上のプログラマがこのプロジェクトに貢献しており、Linuxカーネルはコラボレーションのためのメンテナモデルに従っています。

この記事では、カーネルの最初の貢献に関わる手順の簡単なチェックリストを提供し、パッチを提出する前に知っておくべきことを見ていきます。 最初のパッチを投稿するための提出プロセスをより詳細に見るには、KernelNewbies First Kernel Patch tutorialを読んでください。

カーネルへの貢献

ステップ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>

パッチを送信するメンテナのリストを知るには、次のコマンドを使用しますget_maintainer.pl スクリプト。

最初のパッチを提出する前に知っておくべきこと

  • Greg Kroah-Hartmanのステージングツリーは、新しい貢献者からの簡単なパッチを受け入れるので、最初のパッチを提出するのに適した場所です。 パッチ送信プロセスに慣れると、複雑さを増したサブシステム固有のパッチを送信できます。
  • また、コード内のコーディングスタイルの問題を修正することから始めることもできます。 詳細については、Linuxカーネルコーディングスタイルのドキュメントを参照してください。
  • checkpatch.pl あなたのためのコーディングスタイルのエラーを検出します。 たとえば、次のように実行します:
    perl scripts/checkpatch.pl -f drivers/staging/android/* | less
  • 開発者が不完全なままにしたTODOsを完了することができます:
    find drivers/staging -name TODO 
  • Coccinelleは、パターンマッチングのための便利なツールです。
  • カーネルメーリングアーカイブを読みます。
  • git logは、以前の作成者によるコミットを参照してインスピレーションを得ます。
  • 注:パッチのレビュアーと通信するためにトップポストをしないでください! ここに例があります:

    間違った方法:

    クリス、
    はい、明日、二階で会議をスケジュールしましょう。
    >日月26日、2013年の9:25AM,Chris書:
    >こんにちはジョンがあったの質問:
    >1. 明日会議を予定しますか?
    > 2. オフィスのどの階に?
    > 3. あなたには何時に適していますか?

    (最後の質問が意図せずに回答に未回答のままになっていたことに注意。正しい方法:

    Chris、
    以下の私の答えを参照してください。..
    >日月26日、2013年の9:25AM,Chris書:
    >こんにちはジョンがあったの質問:
    >1. 明日会議を予定しますか?
    はい明日は大丈夫です。
    > 2. オフィスのどの階に?
    二階に置いておこう。
    > 3. あなたには何時に適していますか?
    09:00amは大丈夫だろう。

    (すべての質問に回答したので、この方法で読書時間を節約できます。)

  • Eudyptula challengeは、カーネルの基本を学ぶのに最適な方法です。

詳細については、KernelNewbies First Kernel Patch tutorialをお読みください。 その後、まだ質問がある場合は、kernelnewbiesメーリングリストまたは#kernelnewbies IRCチャンネルで尋ねてください。

コメントを残す

メールアドレスが公開されることはありません。