📄 howto
字号:
あなたがどこからスタートして良いかわからないが、Linux カーネル開発コミュニティに参加して何かすることをさがしている場合には、Linux kernelJanitor's プロジェクトにいけば良いでしょう - http://janitor.kernelnewbies.org/ここはそのようなスタートをするのにうってつけの場所です。ここには、Linux カーネルソースツリーの中に含まれる、きれいにし、修正しなければならない、単純な問題のリストが記述されています。このプロジェクトに関わる開発者と一緒に作業することで、あなたのパッチを Linuxカーネルツリーに入れるための基礎を学ぶことができ、そしてもしあなたがまだアイディアを持っていない場合には、次にやる仕事の方向性が見えてくるかもしれません。もしあなたが、すでにひとまとまりコードを書いていて、カーネルツリーに入れたいと思っていたり、それに関する適切な支援を求めたい場合、カーネルメンターズプロジェクトはそのような皆さんを助けるためにできました。ここにはメーリングリストがあり、以下から参照できます http://selenic.com/mailman/listinfo/kernel-mentors実際に Linux カーネルのコードについて修正を加える前に、どうやってそのコードが動作するのかを理解することが必要です。そのためには、特別なツールの助けを借りてでも、それを直接よく読むことが最良の方法です(ほとんどのトリッキーな部分は十分にコメントしてありますから)。そういうツールで特におすすめなのは、Linux クロスリファレンスプロジェクトです。これは、自己参照方式で、索引がついた web 形式で、ソースコードを参照することができます。この最新の素晴しいカーネルコードのリポジトリは以下で見つかります- http://sosdg.org/~qiyong/lxr/開発プロセス-----------------------Linux カーネルの開発プロセスは現在幾つかの異なるメインカーネル「ブランチ」と多数のサブシステム毎のカーネルブランチから構成されます。これらのブランチとは- - メインの 2.6.x カーネルツリー - 2.6.x.y -stable カーネルツリー - 2.6.x -git カーネルパッチ - 2.6.x -mm カーネルパッチ - サブシステム毎のカーネルツリーとパッチ2.6.x カーネルツリー-----------------2.6.x カーネルは Linus Torvalds によってメンテナンスされ、kernel.orgの pub/linux/kernel/v2.6/ ディレクトリに存在します。この開発プロセスは以下のとおり- - 新しいカーネルがリリースされた直後に、2週間の特別期間が設けられ、 この期間中に、メンテナ達は Linus に大きな差分を送ることができます。 このような差分は通常 -mm カーネルに数週間含まれてきたパッチです。 大きな変更は git(カーネルのソース管理ツール、詳細は http://git.or.cz/ 参照) を使って送るのが好ましいやり方ですが、パッ チファイルの形式のまま送るのでも十分です。 - 2週間後、-rc1 カーネルがリリースされ、この後にはカーネル全体の安定 性に影響をあたえるような新機能は含まない類のパッチしか取り込むこと はできません。新しいドライバ(もしくはファイルシステム)のパッチは -rc1 の後で受け付けられることもあることを覚えておいてください。な ぜなら、変更が独立していて、追加されたコードの外の領域に影響を与え ない限り、退行のリスクは無いからです。-rc1 がリリースされた後、 Linus へパッチを送付するのに git を使うこともできますが、パッチは レビューのために、パブリックなメーリングリストへも同時に送る必要が あります。 - 新しい -rc は Linus が、最新の git ツリーがテスト目的であれば十分 に安定した状態にあると判断したときにリリースされます。目標は毎週新 しい -rc カーネルをリリースすることです。 - 以下の URL で各 -rc リリースに存在する既知の後戻り問題のリスト が追跡されます- http://kernelnewbies.org/known_regressions - このプロセスはカーネルが 「準備ができた」と考えられるまで継続しま す。このプロセスはだいたい 6週間継続します。Andrew Morton が Linux-kernel メーリングリストにカーネルリリースについて書いたことをここで言っておくことは価値があります- 「カーネルがいつリリースされるかは誰も知りません。なぜなら、これは現 実に認識されたバグの状況によりリリースされるのであり、前もって決めら れた計画によってリリースされるものではないからです。」2.6.x.y -stable カーネルツリー---------------------------バージョンに4つ目の数字がついたカーネルは -stable カーネルです。これには、2.6.x カーネルで見つかったセキュリティ問題や重大な後戻りに対する比較的小さい重要な修正が含まれます。これは、開発/実験的バージョンのテストに協力することに興味が無く、最新の安定したカーネルを使いたいユーザに推奨するブランチです。もし、2.6.x.y カーネルが存在しない場合には、番号が一番大きい 2.6.xが最新の安定版カーネルです。2.6.x.y は "stable" チーム <stable@kernel.org> でメンテされており、だいたい隔週でリリースされています。カーネルツリーに入っている、Documentation/stable_kernel_rules.txt ファイルにはどのような種類の変更が -stable ツリーに受け入れ可能か、またリリースプロセスがどう動くかが記述されています。2.6.x -git パッチ------------------git リポジトリで管理されているLinus のカーネルツリーの毎日のスナップショットがあります。(だから -git という名前がついています)。これらのパッチはおおむね毎日リリースされており、Linus のツリーの現状を表します。これは -rc カーネルと比べて、パッチが大丈夫かどうかも確認しないで自動的に生成されるので、より実験的です。2.6.x -mm カーネルパッチ------------------------Andrew Morton によってリリースされる実験的なカーネルパッチ群です。Andrew は個別のサブシステムカーネルツリーとパッチを全て集めてきてlinux-kernel メーリングリストで収集された多数のパッチと同時に一つにまとめます。このツリーは新機能とパッチが検証される場となります。ある期間の間パッチが -mm に入って価値を証明されたら、Andrew やサブシステムメンテナが、メインラインへ入れるように Linus にプッシュします。メインカーネルツリーに含めるために Linus に送る前に、すべての新しいパッチが -mm ツリーでテストされることが強く推奨されます。これらのカーネルは安定して動作すべきシステムとして使うのには適切ではありませんし、カーネルブランチの中でももっとも動作にリスクが高いものです。もしあなたが、カーネル開発プロセスの支援をしたいと思っているのであれば、どうぞこれらのカーネルリリースをテストに使ってみて、そしてもし問題があれば、またもし全てが正しく動作したとしても、linux-kernel メーリングリストにフィードバックを提供してください。すべての他の実験的パッチに加えて、これらのカーネルは通常リリース時点でメインラインの -git カーネルに含まれる全ての変更も含んでいます。-mm カーネルは決まったスケジュールではリリースされません、しかし通常幾つかの -mm カーネル (1 から 3 が普通)が各-rc カーネルの間にリリースされます。サブシステム毎のカーネルツリーとパッチ-------------------------------------------カーネルの様々な領域で何が起きているかを見られるようにするため、多くのカーネルサブシステム開発者は彼らの開発ツリーを公開しています。これらのツリーは説明したように -mm カーネルリリースに入れ込まれます。以下はさまざまなカーネルツリーの中のいくつかのリスト- git ツリー- - Kbuild の開発ツリー、Sam Ravnborg <sam@ravnborg.org> git.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git - ACPI の開発ツリー、 Len Brown <len.brown@intel.com> git.kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git - Block の開発ツリー、Jens Axboe <axboe@suse.de> git.kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git - DRM の開発ツリー、Dave Airlie <airlied@linux.ie> git.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git - ia64 の開発ツリー、Tony Luck <tony.luck@intel.com> git.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git - infiniband, Roland Dreier <rolandd@cisco.com> git.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git - libata, Jeff Garzik <jgarzik@pobox.com> git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git - ネットワークドライバ, Jeff Garzik <jgarzik@pobox.com> git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git - pcmcia, Dominik Brodowski <linux@dominikbrodowski.net> git.kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git - SCSI, James Bottomley <James.Bottomley@SteelEye.com> git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git quilt ツリー- - USB, PCI ドライバコアと I2C, Greg Kroah-Hartman <gregkh@suse.de> kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ - x86-64 と i386 の仲間 Andi Kleen <ak@suse.de> その他のカーネルツリーは http://git.kernel.org/ と MAINTAINERS ファ イルに一覧表があります。バグレポート-------------bugzilla.kernel.org は Linux カーネル開発者がカーネルのバグを追跡する場所です。ユーザは見つけたバグの全てをこのツールで報告すべきです。どう kernel bugzilla を使うかの詳細は、以下を参照してください- http://test.kernel.org/bugzilla/faq.htmlメインカーネルソースディレクトリにあるファイル REPORTING-BUGS はカーネルバグらしいものについてどうレポートするかの良いテンプレートであり、問題の追跡を助けるためにカーネル開発者にとってどんな情報が必要なのかの詳細が書かれています。メーリングリスト-------------上のいくつかのドキュメントで述べていますが、コアカーネル開発者の大部分は Linux kernel メーリングリストに参加しています。このリストの登録/脱退の方法については以下を参照してください- http://vger.kernel.org/vger-lists.html#linux-kernelこのメーリングリストのアーカイブは web 上の多数の場所に存在します。これらのアーカイブを探すにはサーチエンジンを使いましょう。例えば- http://dir.gmane.org/gmane.linux.kernelリストに投稿する前にすでにその話題がアーカイブに存在するかどうかを検索することを是非やってください。多数の事がすでに詳細に渡って議論されており、アーカイブにのみ記録されています。大部分のカーネルサブシステムも自分の個別の開発を実施するメーリングリストを持っています。個々のグループがどんなリストを持っているかは、MAINTAINERS ファイルにリストがありますので参照してください。多くのリストは kernel.org でホストされています。これらの情報は以下にあ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -