1*4882a593SmuzhiyunNOTE: 2*4882a593SmuzhiyunThis is a version of Documentation/process/howto.rst translated into Japanese. 3*4882a593SmuzhiyunThis document is maintained by Tsugikazu Shibata <tshibata@ab.jp.nec.com> 4*4882a593SmuzhiyunIf you find any difference between this document and the original file or 5*4882a593Smuzhiyuna problem with the translation, please contact the maintainer of this file. 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunPlease also note that the purpose of this file is to be easier to 8*4882a593Smuzhiyunread for non English (read: Japanese) speakers and is not intended as 9*4882a593Smuzhiyuna fork. So if you have any comments or updates for this file, please 10*4882a593Smuzhiyuntry to update the original English file first. 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun---------------------------------- 13*4882a593Smuzhiyun 14*4882a593Smuzhiyunこの文書は、 15*4882a593SmuzhiyunDocumentation/process/howto.rst 16*4882a593Smuzhiyunの和訳です。 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun翻訳者: Tsugikazu Shibata <tshibata@ab.jp.nec.com> 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun---------------------------------- 21*4882a593Smuzhiyun 22*4882a593SmuzhiyunLinux カーネル開発のやり方 23*4882a593Smuzhiyun========================== 24*4882a593Smuzhiyun 25*4882a593Smuzhiyunこれは上のトピック( Linux カーネル開発のやり方)の重要な事柄を網羅した 26*4882a593Smuzhiyunドキュメントです。ここには Linux カーネル開発者になるための方法とLinux 27*4882a593Smuzhiyunカーネル開発コミュニティと共に活動するやり方を学ぶ方法が含まれています。 28*4882a593Smuzhiyunカーネルプログラミングに関する技術的な項目に関することは何も含めないよ 29*4882a593Smuzhiyunうにしていますが、カーネル開発者となるための正しい方向に向かう手助けに 30*4882a593Smuzhiyunなります。 31*4882a593Smuzhiyun 32*4882a593Smuzhiyunもし、このドキュメントのどこかが古くなっていた場合には、このドキュメント 33*4882a593Smuzhiyunの最後にリストしたメンテナにパッチを送ってください。 34*4882a593Smuzhiyun 35*4882a593Smuzhiyunはじめに 36*4882a593Smuzhiyun--------- 37*4882a593Smuzhiyun 38*4882a593Smuzhiyunあなたは Linux カーネルの開発者になる方法を学びたいのでしょうか? そ 39*4882a593Smuzhiyunれとも上司から「このデバイスの Linux ドライバを書くように」と言われた 40*4882a593Smuzhiyunのかもしれません。この文書の目的は、あなたが踏むべき手順と、コミュニティ 41*4882a593Smuzhiyunと一緒にうまく働くヒントを書き下すことで、あなたが知るべき全てのことを 42*4882a593Smuzhiyun教えることです。また、このコミュニティがなぜ今うまくまわっているのかと 43*4882a593Smuzhiyunいう理由も説明しようと試みています。 44*4882a593Smuzhiyun 45*4882a593Smuzhiyunカーネルは少量のアーキテクチャ依存部分がアセンブリ言語で書かれている以 46*4882a593Smuzhiyun外の大部分は C 言語で書かれています。C言語をよく理解していることはカー 47*4882a593Smuzhiyunネル開発に必要です。低レベルのアーキテクチャ開発をするのでなければ、 48*4882a593Smuzhiyun(どんなアーキテクチャでも)アセンブリ(訳注: 言語)は必要ありません。以下 49*4882a593Smuzhiyunの本は、C 言語の十分な知識や何年もの経験に取って代わるものではありませ 50*4882a593Smuzhiyunんが、少なくともリファレンスとしては良い本です。 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun - "The C Programming Language" by Kernighan and Ritchie [Prentice Hall] 53*4882a593Smuzhiyun - 『プログラミング言語C第2版』(B.W. カーニハン/D.M. リッチー著 石田晴久訳) [共立出版] 54*4882a593Smuzhiyun - "Practical C Programming" by Steve Oualline [O'Reilly] 55*4882a593Smuzhiyun - 『C実践プログラミング第3版』(Steve Oualline著 望月康司監訳 谷口功訳) [オライリージャパン] 56*4882a593Smuzhiyun - "C: A Reference Manual" by Harbison and Steele [Prentice Hall] 57*4882a593Smuzhiyun - 『新・詳説 C 言語 H&S リファレンス』 (サミュエル P ハービソン/ガイ L スティール共著 斉藤 信男監訳)[ソフトバンク] 58*4882a593Smuzhiyun 59*4882a593Smuzhiyunカーネルは GNU C と GNU ツールチェインを使って書かれています。カーネル 60*4882a593Smuzhiyunは ISO C89 仕様に準拠して書く一方で、標準には無い言語拡張を多く使って 61*4882a593Smuzhiyunいます。カーネルは標準 C ライブラリに依存しない、C 言語非依存環境です。 62*4882a593Smuzhiyunそのため、C の標準の中で使えないものもあります。特に任意の long long 63*4882a593Smuzhiyunの除算や浮動小数点は使えません。カーネルがツールチェインや C 言語拡張 64*4882a593Smuzhiyunに置いている前提がどうなっているのかわかりにくいことが時々あり、また、 65*4882a593Smuzhiyun残念なことに決定的なリファレンスは存在しません。情報を得るには、gcc の 66*4882a593Smuzhiyuninfo ページ( info gcc )を見てください。 67*4882a593Smuzhiyun 68*4882a593Smuzhiyunあなたは既存の開発コミュニティと一緒に作業する方法を学ぼうとしているこ 69*4882a593Smuzhiyunとに思い出してください。そのコミュニティは、コーディング、スタイル、開 70*4882a593Smuzhiyun発手順について高度な標準を持つ、多様な人の集まりです。地理的に分散した 71*4882a593Smuzhiyun大規模なチームに対してもっともうまくいくとわかったことをベースにしなが 72*4882a593Smuzhiyunら、これらの標準は長い時間をかけて築かれてきました。これらはきちんと文 73*4882a593Smuzhiyun書化されていますから、事前にこれらの標準について事前にできるだけたくさ 74*4882a593Smuzhiyunん学んでください。また皆があなたやあなたの会社のやり方に合わせてくれる 75*4882a593Smuzhiyunと思わないでください。 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun法的問題 78*4882a593Smuzhiyun-------- 79*4882a593Smuzhiyun 80*4882a593SmuzhiyunLinux カーネルのソースコードは GPL ライセンスの下でリリースされていま 81*4882a593Smuzhiyunす。ライセンスの詳細については、ソースツリーのメインディレクトリに存在 82*4882a593Smuzhiyunする、COPYING のファイルを見てください。もしライセンスについてさらに質 83*4882a593Smuzhiyun問があれば、Linux Kernel メーリングリストに質問するのではなく、どうぞ 84*4882a593Smuzhiyun法律家に相談してください。メーリングリストの人達は法律家ではなく、法的 85*4882a593Smuzhiyun問題については彼らの声明はあてにするべきではありません。 86*4882a593Smuzhiyun 87*4882a593SmuzhiyunGPL に関する共通の質問や回答については、以下を参照してください- 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun https://www.gnu.org/licenses/gpl-faq.html 90*4882a593Smuzhiyun 91*4882a593Smuzhiyunドキュメント 92*4882a593Smuzhiyun------------ 93*4882a593Smuzhiyun 94*4882a593SmuzhiyunLinux カーネルソースツリーは幅広い範囲のドキュメントを含んでおり、それ 95*4882a593Smuzhiyunらはカーネルコミュニティと会話する方法を学ぶのに非常に貴重なものです。 96*4882a593Smuzhiyun新しい機能がカーネルに追加される場合、その機能の使い方について説明した 97*4882a593Smuzhiyun新しいドキュメントファイルも追加することを勧めます。 98*4882a593Smuzhiyunカーネルの変更が、カーネルがユーザ空間に公開しているインターフェイスの 99*4882a593Smuzhiyun変更を引き起こす場合、その変更を説明するマニュアルページのパッチや情報 100*4882a593Smuzhiyunをマニュアルページのメンテナ mtk.manpages@gmail.com に送り、CC を 101*4882a593Smuzhiyunlinux-api@vger.kernel.org に送ることを勧めます。 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun以下はカーネルソースツリーに含まれている読んでおくべきファイルの一覧で 104*4882a593Smuzhiyunす- 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun README 107*4882a593Smuzhiyun このファイルは Linuxカーネルの簡単な背景とカーネルを設定(訳注 108*4882a593Smuzhiyun configure )し、生成(訳注 build )するために必要なことは何かが書かれ 109*4882a593Smuzhiyun ています。 カーネルに関して初めての人はここからスタートすると良い 110*4882a593Smuzhiyun でしょう。 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun :ref:`Documentation/process/changes.rst <changes>` 113*4882a593Smuzhiyun このファイルはカーネルをうまく生成(訳注 build )し、走らせるのに最 114*4882a593Smuzhiyun 小限のレベルで必要な数々のソフトウェアパッケージの一覧を示してい 115*4882a593Smuzhiyun ます。 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun :ref:`Documentation/process/coding-style.rst <codingstyle>` 118*4882a593Smuzhiyun これは Linux カーネルのコーディングスタイルと背景にある理由を記述 119*4882a593Smuzhiyun しています。全ての新しいコードはこのドキュメントにあるガイドライン 120*4882a593Smuzhiyun に従っていることを期待されています。大部分のメンテナはこれらのルー 121*4882a593Smuzhiyun ルに従っているものだけを受け付け、多くの人は正しいスタイルのコード 122*4882a593Smuzhiyun だけをレビューします。 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun :ref:`Documentation/process/submitting-patches.rst <codingstyle>` と :ref:`Documentation/process/submitting-drivers.rst <submittingdrivers>` 125*4882a593Smuzhiyun これらのファイルには、どうやってうまくパッチを作って投稿するかにつ 126*4882a593Smuzhiyun いて非常に詳しく書かれており、以下を含みます (これだけに限らない 127*4882a593Smuzhiyun けれども) 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun - Email に含むこと 130*4882a593Smuzhiyun - Email の形式 131*4882a593Smuzhiyun - だれに送るか 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun これらのルールに従えばうまくいくことを保証することではありません 134*4882a593Smuzhiyun が (すべてのパッチは内容とスタイルについて精査を受けるので)、 135*4882a593Smuzhiyun ルールに従わなければ間違いなくうまくいかないでしょう。 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun この他にパッチを作る方法についてのよくできた記述は- 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun "The Perfect Patch" 140*4882a593Smuzhiyun http://www.ozlabs.org/~akpm/stuff/tpp.txt 141*4882a593Smuzhiyun "Linux kernel patch submission format" 142*4882a593Smuzhiyun https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun :ref:`Documentation/process/stable-api-nonsense.rst <stable_api_nonsense>` 145*4882a593Smuzhiyun このファイルはカーネルの中に不変の API を持たないことにした意識的 146*4882a593Smuzhiyun な決断の背景にある理由について書かれています。以下のようなことを含 147*4882a593Smuzhiyun んでいます- 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun - サブシステムとの間に層を作ること(コンパチビリティのため?) 150*4882a593Smuzhiyun - オペレーティングシステム間のドライバの移植性 151*4882a593Smuzhiyun - カーネルソースツリーの素早い変更を遅らせる(もしくは素早い変更を妨げる) 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun このドキュメントは Linux 開発の思想を理解するのに非常に重要です。 154*4882a593Smuzhiyun そして、他のOSでの開発者が Linux に移る時にとても重要です。 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun :ref:`Documentation/admin-guide/security-bugs.rst <securitybugs>` 157*4882a593Smuzhiyun もし Linux カーネルでセキュリティ問題を発見したように思ったら、こ 158*4882a593Smuzhiyun のドキュメントのステップに従ってカーネル開発者に連絡し、問題解決を 159*4882a593Smuzhiyun 支援してください。 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun :ref:`Documentation/process/management-style.rst <managementstyle>` 162*4882a593Smuzhiyun このドキュメントは Linux カーネルのメンテナ達がどう行動するか、 163*4882a593Smuzhiyun 彼らの手法の背景にある共有されている精神について記述しています。こ 164*4882a593Smuzhiyun れはカーネル開発の初心者なら(もしくは、単に興味があるだけの人でも) 165*4882a593Smuzhiyun 重要です。なぜならこのドキュメントは、カーネルメンテナ達の独特な 166*4882a593Smuzhiyun 行動についての多くの誤解や混乱を解消するからです。 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun :ref:`Documentation/process/stable-kernel-rules.rst <stable_kernel_rules>` 169*4882a593Smuzhiyun このファイルはどのように stable カーネルのリリースが行われるかのルー 170*4882a593Smuzhiyun ルが記述されています。そしてこれらのリリースの中のどこかで変更を取 171*4882a593Smuzhiyun り入れてもらいたい場合に何をすれば良いかが示されています。 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun :Ref:`Documentation/process/kernel-docs.rst <kernel_docs>` 174*4882a593Smuzhiyun カーネル開発に付随する外部ドキュメントのリストです。もしあなたが探 175*4882a593Smuzhiyun しているものがカーネル内のドキュメントでみつからなかった場合、この 176*4882a593Smuzhiyun リストをあたってみてください。 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun :ref:`Documentation/process/applying-patches.rst <applying_patches>` 179*4882a593Smuzhiyun パッチとはなにか、パッチをどうやって様々なカーネルの開発ブランチに 180*4882a593Smuzhiyun 適用するのかについて正確に記述した良い入門書です。 181*4882a593Smuzhiyun 182*4882a593Smuzhiyunカーネルはソースコードそのものや、このファイルのようなリストラクチャー 183*4882a593Smuzhiyunドテキストマークアップ(ReST)から自動的に生成可能な多数のドキュメントを 184*4882a593Smuzhiyunもっています。これにはカーネル内APIの完全な記述や、正しくロックをかけ 185*4882a593Smuzhiyunるための規則などが含まれます。 186*4882a593Smuzhiyun 187*4882a593Smuzhiyunこれら全てのドキュメントを PDF や HTML で生成するには以下を実行します - :: 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun make pdfdocs 190*4882a593Smuzhiyun make htmldocs 191*4882a593Smuzhiyun 192*4882a593Smuzhiyunそれぞれメインカーネルのソースディレクトリから実行します。 193*4882a593Smuzhiyun 194*4882a593SmuzhiyunReSTマークアップを使ったドキュメントは Documentation/outputに生成され 195*4882a593Smuzhiyunます。Latex とePub 形式で生成するには - :: 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun make latexdocs 198*4882a593Smuzhiyun make epubdocs 199*4882a593Smuzhiyun 200*4882a593Smuzhiyunカーネル開発者になるには 201*4882a593Smuzhiyun------------------------ 202*4882a593Smuzhiyun 203*4882a593Smuzhiyunもしあなたが、Linux カーネル開発について何も知らないのならば、 204*4882a593SmuzhiyunKernelNewbies プロジェクトを見るべきです 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun https://kernelnewbies.org 207*4882a593Smuzhiyun 208*4882a593Smuzhiyunこのサイトには役に立つメーリングリストがあり、基本的なカーネル開発に関 209*4882a593Smuzhiyunするほとんどどんな種類の質問もできます (既に回答されているようなことを 210*4882a593Smuzhiyun聞く前にまずはアーカイブを調べてください)。またここには、リアルタイム 211*4882a593Smuzhiyunで質問を聞くことができる IRC チャネルや、Linuxカーネルの開発に関して学 212*4882a593Smuzhiyunぶのに便利なたくさんの役に立つドキュメントがあります。 213*4882a593Smuzhiyun 214*4882a593SmuzhiyunWeb サイトには、コードの構成、サブシステム、現在存在するプロジェクト 215*4882a593Smuzhiyun(ツリーにあるもの無いものの両方)の基本的な管理情報があります。ここには、 216*4882a593Smuzhiyunまた、カーネルのコンパイルのやり方やパッチの当て方などの間接的な基本情 217*4882a593Smuzhiyun報も記述されています。 218*4882a593Smuzhiyun 219*4882a593Smuzhiyunあなたがどこからスタートして良いかわからないが、Linux カーネル開発コミュ 220*4882a593Smuzhiyunニティに参加して何かすることをさがしているのであれば、Linux kernel 221*4882a593SmuzhiyunJanitor's プロジェクトにいけば良いでしょう - 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun https://kernelnewbies.org/KernelJanitors 224*4882a593Smuzhiyun 225*4882a593Smuzhiyunここはそのようなスタートをするのにうってつけの場所です。ここには、 226*4882a593SmuzhiyunLinux カーネルソースツリーの中に含まれる、きれいにし、修正しなければな 227*4882a593Smuzhiyunらない、単純な問題のリストが記述されています。このプロジェクトに関わる 228*4882a593Smuzhiyun開発者と一緒に作業することで、あなたのパッチを Linuxカーネルツリーに入 229*4882a593Smuzhiyunれるための基礎を学ぶことができ、そしてもしあなたがまだアイディアを持っ 230*4882a593Smuzhiyunていない場合には、次にやる仕事の方向性が見えてくるかもしれません。 231*4882a593Smuzhiyun 232*4882a593Smuzhiyunもしあなたが、すでにひとまとまりコードを書いていて、カーネルツリーに入 233*4882a593Smuzhiyunれたいと思っていたり、それに関する適切な支援を求めたい場合、カーネルメ 234*4882a593Smuzhiyunンターズプロジェクトはそのような皆さんを助けるためにできました。ここに 235*4882a593Smuzhiyunはメーリングリストがあり、以下から参照できます - 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun https://selenic.com/mailman/listinfo/kernel-mentors 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun実際に Linux カーネルのコードについて修正を加える前に、どうやってその 240*4882a593Smuzhiyunコードが動作するのかを理解することが必要です。そのためには、特別なツー 241*4882a593Smuzhiyunルの助けを借りてでも、それを直接よく読むことが最良の方法です(ほとんど 242*4882a593Smuzhiyunのトリッキーな部分は十分にコメントしてありますから)。そういうツールで 243*4882a593Smuzhiyun特におすすめなのは、Linux クロスリファレンスプロジェクトです。これは、 244*4882a593Smuzhiyun自己参照方式で、索引がついた web 形式で、ソースコードを参照することが 245*4882a593Smuzhiyunできます。この最新の素晴しいカーネルコードのリポジトリは以下で見つかり 246*4882a593Smuzhiyunます - 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun https://elixir.bootlin.com/ 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun開発プロセス 251*4882a593Smuzhiyun------------ 252*4882a593Smuzhiyun 253*4882a593SmuzhiyunLinux カーネルの開発プロセスは現在幾つかの異なるメインカーネル「ブラン 254*4882a593Smuzhiyunチ」と多数のサブシステム毎のカーネルブランチから構成されます。これらの 255*4882a593Smuzhiyunブランチとは - 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun - メインの 4.x カーネルツリー 258*4882a593Smuzhiyun - 4.x.y -stable カーネルツリー 259*4882a593Smuzhiyun - サブシステム毎のカーネルツリーとパッチ 260*4882a593Smuzhiyun - 統合テストのための 4.x -next カーネルツリー 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun4.x カーネルツリー 263*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~ 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun4.x カーネルは Linus Torvalds によってメンテナンスされ、 266*4882a593Smuzhiyunhttps://kernel.org の pub/linux/kernel/v4.x/ ディレクトリに存在します。 267*4882a593Smuzhiyunこの開発プロセスは以下のとおり - 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun - 新しいカーネルがリリースされた直後に、2週間の特別期間が設けられ、 270*4882a593Smuzhiyun この期間中に、メンテナ達は Linus に大きな差分を送ることができます。 271*4882a593Smuzhiyun このような差分は通常 -next カーネルに数週間含まれてきたパッチです。 272*4882a593Smuzhiyun 大きな変更は git(カーネルのソース管理ツール、詳細は 273*4882a593Smuzhiyun http://git-scm.com/ 参照) を使って送るのが好ましいやり方ですが、パッ 274*4882a593Smuzhiyun チファイルの形式のまま送るのでも十分です。 275*4882a593Smuzhiyun - 2週間後、-rc1 カーネルがリリースされ、この後にはカーネル全体の安定 276*4882a593Smuzhiyun 性に影響をあたえるような新機能は含まない類のパッチしか取り込むこと 277*4882a593Smuzhiyun はできません。新しいドライバ(もしくはファイルシステム)のパッチは 278*4882a593Smuzhiyun -rc1 の後で受け付けられることもあることを覚えておいてください。な 279*4882a593Smuzhiyun ぜなら、変更が独立していて、追加されたコードの外の領域に影響を与え 280*4882a593Smuzhiyun ない限り、退行のリスクは無いからです。-rc1 がリリースされた後、 281*4882a593Smuzhiyun Linus へパッチを送付するのに git を使うこともできますが、パッチは 282*4882a593Smuzhiyun レビューのために、パブリックなメーリングリストへも同時に送る必要が 283*4882a593Smuzhiyun あります。 284*4882a593Smuzhiyun - 新しい -rc は Linus が、最新の git ツリーがテスト目的であれば十分 285*4882a593Smuzhiyun に安定した状態にあると判断したときにリリースされます。目標は毎週新 286*4882a593Smuzhiyun しい -rc カーネルをリリースすることです。 287*4882a593Smuzhiyun - このプロセスはカーネルが 「準備ができた」と考えられるまで継続しま 288*4882a593Smuzhiyun す。このプロセスはだいたい 6週間継続します。 289*4882a593Smuzhiyun 290*4882a593SmuzhiyunAndrew Morton が Linux-kernel メーリングリストにカーネルリリースについ 291*4882a593Smuzhiyunて書いたことをここで言っておくことは価値があります - 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun *「カーネルがいつリリースされるかは誰も知りません。なぜなら、 294*4882a593Smuzhiyun これは現実に認識されたバグの状況によりリリースされるのであり、 295*4882a593Smuzhiyun 前もって決められた計画によってリリースされるものではないから 296*4882a593Smuzhiyun です。」* 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun4.x.y -stable カーネルツリー 299*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 300*4882a593Smuzhiyun 301*4882a593Smuzhiyunバージョン番号が3つの数字に分かれているカーネルは -stable カーネルです。 302*4882a593Smuzhiyunこれには、4.x カーネルで見つかったセキュリティ問題や重大な後戻りに対す 303*4882a593Smuzhiyunる比較的小さい重要な修正が含まれます。 304*4882a593Smuzhiyun 305*4882a593Smuzhiyunこれは、開発/実験的バージョンのテストに協力することに興味が無く、最新 306*4882a593Smuzhiyunの安定したカーネルを使いたいユーザに推奨するブランチです。 307*4882a593Smuzhiyun 308*4882a593Smuzhiyunもし、4.x.y カーネルが存在しない場合には、番号が一番大きい 4.x が最新 309*4882a593Smuzhiyunの安定版カーネルです。 310*4882a593Smuzhiyun 311*4882a593Smuzhiyun4.x.y は "stable" チーム <stable@vger.kernel.org> でメンテされており、 312*4882a593Smuzhiyun必要に応じてリリースされます。通常のリリース期間は 2週間毎ですが、差 313*4882a593Smuzhiyunし迫った問題がなければもう少し長くなることもあります。セキュリティ関 314*4882a593Smuzhiyun連の問題の場合はこれに対してだいたいの場合、すぐにリリースがされます。 315*4882a593Smuzhiyun 316*4882a593Smuzhiyunカーネルツリーに入っている、 317*4882a593SmuzhiyunDocumentation/process/stable-kernel-rules.rst ファイルにはどのような種 318*4882a593Smuzhiyun類の変更が -stable ツリーに受け入れ可能か、またリリースプロセスがどう 319*4882a593Smuzhiyun動くかが記述されています。 320*4882a593Smuzhiyun 321*4882a593Smuzhiyunサブシステム毎のカーネルツリーとパッチ 322*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 323*4882a593Smuzhiyun 324*4882a593Smuzhiyunそれぞれのカーネルサブシステムのメンテナ達は --- そして多くのカーネル 325*4882a593Smuzhiyunサブシステムの開発者達も --- 各自の最新の開発状況をソースリポジトリに 326*4882a593Smuzhiyun公開しています。そのため、自分とは異なる領域のカーネルで何が起きている 327*4882a593Smuzhiyunかを他の人が見られるようになっています。開発が早く進んでいる領域では、 328*4882a593Smuzhiyun開発者は自身の投稿がどのサブシステムカーネルツリーを元にしているか質問 329*4882a593Smuzhiyunされるので、その投稿とすでに進行中の他の作業との衝突が避けられます。 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun大部分のこれらのリポジトリは git ツリーです。しかしその他の SCM や 332*4882a593Smuzhiyunquilt シリーズとして公開されているパッチキューも使われています。これら 333*4882a593Smuzhiyunのサブシステムリポジトリのアドレスは MAINTAINERS ファイルにリストされ 334*4882a593Smuzhiyunています。これらの多くは https://git.kernel.org/ で参照することができま 335*4882a593Smuzhiyunす。 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun提案されたパッチがこのようなサブシステムツリーにコミットされる前に、メー 338*4882a593Smuzhiyunリングリストで事前にレビューにかけられます(以下の対応するセクションを 339*4882a593Smuzhiyun参照)。いくつかのカーネルサブシステムでは、このレビューは patchworkと 340*4882a593Smuzhiyunいうツールによって追跡されます。Patchwork は web インターフェイスによっ 341*4882a593Smuzhiyunてパッチ投稿の表示、パッチへのコメント付けや改訂などができ、そしてメン 342*4882a593Smuzhiyunテナはパッチに対して、レビュー中、受付済み、拒否というようなマークをつ 343*4882a593Smuzhiyunけることができます。大部分のこれらの patchwork のサイトは 344*4882a593Smuzhiyunhttps://patchwork.kernel.org/ でリストされています。 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun統合テストのための 4.x -next カーネルツリー 347*4882a593Smuzhiyun~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 348*4882a593Smuzhiyun 349*4882a593Smuzhiyunサブシステムツリーの更新内容がメインラインの 4.x ツリーにマージされる 350*4882a593Smuzhiyun前に、それらは統合テストされる必要があります。この目的のため、実質的に 351*4882a593Smuzhiyun全サブシステムツリーからほぼ毎日プルされてできる特別なテスト用のリポジ 352*4882a593Smuzhiyunトリが存在します- 353*4882a593Smuzhiyun 354*4882a593Smuzhiyun https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git 355*4882a593Smuzhiyun 356*4882a593Smuzhiyunこのやり方によって、-next カーネルは次のマージ機会でどんなものがメイン 357*4882a593Smuzhiyunラインカーネルにマージされるか、おおまかなの展望を提供します。-next カー 358*4882a593Smuzhiyunネルの実行テストを行う冒険好きなテスターは大いに歓迎されます。 359*4882a593Smuzhiyun 360*4882a593Smuzhiyunバグレポート 361*4882a593Smuzhiyun------------- 362*4882a593Smuzhiyun 363*4882a593Smuzhiyunhttps://bugzilla.kernel.org は Linux カーネル開発者がカーネルのバグを追跡する 364*4882a593Smuzhiyun場所です。ユーザは見つけたバグの全てをこのツールで報告すべきです。どう 365*4882a593Smuzhiyunkernel bugzilla を使うかの詳細は、以下を参照してください - 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun https://bugzilla.kernel.org/page.cgi?id=faq.html 368*4882a593Smuzhiyun 369*4882a593Smuzhiyunメインカーネルソースディレクトリにあるファイル 370*4882a593Smuzhiyunadmin-guide/reporting-bugs.rstはカーネルバグらしいものについてどうレポー 371*4882a593Smuzhiyunトするかの良いテンプレートであり、問題の追跡を助けるためにカーネル開発 372*4882a593Smuzhiyun者にとってどんな情報が必要なのかの詳細が書かれています。 373*4882a593Smuzhiyun 374*4882a593Smuzhiyunバグレポートの管理 375*4882a593Smuzhiyun------------------- 376*4882a593Smuzhiyun 377*4882a593Smuzhiyunあなたのハッキングのスキルを訓練する最高の方法のひとつに、他人がレポー 378*4882a593Smuzhiyunトしたバグを修正することがあります。あなたがカーネルをより安定化させる 379*4882a593Smuzhiyunこに寄与するということだけでなく、あなたは 現実の問題を修正することを 380*4882a593Smuzhiyun学び、自分のスキルも強化でき、また他の開発者があなたの存在に気がつきま 381*4882a593Smuzhiyunす。バグを修正することは、多くの開発者の中から自分が功績をあげる最善の 382*4882a593Smuzhiyun道です、なぜなら多くの人は他人のバグの修正に時間を浪費することを好まな 383*4882a593Smuzhiyunいからです。 384*4882a593Smuzhiyun 385*4882a593Smuzhiyunすでにレポートされたバグのために仕事をするためには、 386*4882a593Smuzhiyunhttps://bugzilla.kernel.org に行ってください。もし今後のバグレポートに 387*4882a593Smuzhiyunついてアドバイスを受けたいのであれば、bugme-new メーリングリスト(新し 388*4882a593Smuzhiyunいバグレポートだけがここにメールされる) または bugme-janitor メーリン 389*4882a593Smuzhiyunグリスト(bugzilla の変更毎にここにメールされる)を購読できます。 390*4882a593Smuzhiyun 391*4882a593Smuzhiyun https://lists.linux-foundation.org/mailman/listinfo/bugme-new 392*4882a593Smuzhiyun 393*4882a593Smuzhiyun https://lists.linux-foundation.org/mailman/listinfo/bugme-janitors 394*4882a593Smuzhiyun 395*4882a593Smuzhiyunメーリングリスト 396*4882a593Smuzhiyun---------------- 397*4882a593Smuzhiyun 398*4882a593Smuzhiyun上のいくつかのドキュメントで述べていますが、コアカーネル開発者の大部分 399*4882a593Smuzhiyunは Linux kernel メーリングリストに参加しています。このリストの登録/脱 400*4882a593Smuzhiyun退の方法については以下を参照してください- 401*4882a593Smuzhiyun 402*4882a593Smuzhiyun http://vger.kernel.org/vger-lists.html#linux-kernel 403*4882a593Smuzhiyun 404*4882a593Smuzhiyunこのメーリングリストのアーカイブは web 上の多数の場所に存在します。こ 405*4882a593Smuzhiyunれらのアーカイブを探すにはサーチエンジンを使いましょう。例えば- 406*4882a593Smuzhiyun 407*4882a593Smuzhiyun http://dir.gmane.org/gmane.linux.kernel 408*4882a593Smuzhiyun 409*4882a593Smuzhiyunリストに投稿する前にすでにその話題がアーカイブに存在するかどうかを検索 410*4882a593Smuzhiyunすることを是非やってください。多数の事がすでに詳細に渡って議論されてお 411*4882a593Smuzhiyunり、アーカイブにのみ記録されています。 412*4882a593Smuzhiyun 413*4882a593Smuzhiyun大部分のカーネルサブシステムも自分の個別の開発を実施するメーリングリス 414*4882a593Smuzhiyunトを持っています。個々のグループがどんなリストを持っているかは、 415*4882a593SmuzhiyunMAINTAINERS ファイルにリストがありますので参照してください。 416*4882a593Smuzhiyun 417*4882a593Smuzhiyun多くのリストは kernel.org でホストされています。これらの情報は以下にあ 418*4882a593Smuzhiyunります - 419*4882a593Smuzhiyun 420*4882a593Smuzhiyun http://vger.kernel.org/vger-lists.html 421*4882a593Smuzhiyun 422*4882a593Smuzhiyunメーリングリストを使う場合、良い行動習慣に従うようにしましょう。少し安っ 423*4882a593Smuzhiyunぽいが、以下の URL は上のリスト(や他のリスト)で会話する場合のシンプル 424*4882a593Smuzhiyunなガイドラインを示しています - 425*4882a593Smuzhiyun 426*4882a593Smuzhiyun http://www.albion.com/netiquette/ 427*4882a593Smuzhiyun 428*4882a593Smuzhiyunもし複数の人があなたのメールに返事をした場合、CC: で受ける人のリストは 429*4882a593Smuzhiyunだいぶ多くなるでしょう。正当な理由がない限り、CC: リストから誰かを削除 430*4882a593Smuzhiyunをしないように、また、メーリングリストのアドレスだけにリプライすること 431*4882a593Smuzhiyunのないようにしましょう。1つは送信者から、もう1つはリストからのように、 432*4882a593Smuzhiyunメールを2回受けることになってもそれに慣れ、しゃれたメールヘッダーを追 433*4882a593Smuzhiyun加してこの状態を変えようとしないように。人々はそのようなことは好みませ 434*4882a593Smuzhiyunん。 435*4882a593Smuzhiyun 436*4882a593Smuzhiyun今までのメールでのやりとりとその間のあなたの発言はそのまま残し、 437*4882a593Smuzhiyun"John Kernelhacker wrote ...:" の行をあなたのリプライの先頭行にして、 438*4882a593Smuzhiyunメールの先頭でなく、各引用行の間にあなたの言いたいことを追加するべきで 439*4882a593Smuzhiyunす。 440*4882a593Smuzhiyun 441*4882a593Smuzhiyunもしパッチをメールに付ける場合は、 442*4882a593SmuzhiyunDocumentation/process/submitting-patches.rst に提示されているように、そ 443*4882a593Smuzhiyunれは プレーンな可読テキストにすることを忘れないようにしましょう。カー 444*4882a593Smuzhiyunネル開発者は 添付や圧縮したパッチを扱いたがりません。彼らはあなたのパッ 445*4882a593Smuzhiyunチの行毎にコメントを入れたいので、そうするしかありません。あなたのメー 446*4882a593Smuzhiyunルプログラムが空白やタブを圧縮しないように確認しましょう。最初の良いテ 447*4882a593Smuzhiyunストとしては、自分にメールを送ってみて、そのパッチを自分で当ててみるこ 448*4882a593Smuzhiyunとです。もしそれがうまく行かないなら、あなたのメールプログラムを直して 449*4882a593Smuzhiyunもらうか、正しく動くように変えるべきです。 450*4882a593Smuzhiyun 451*4882a593Smuzhiyun何をおいても、他の購読者に対する敬意を表すことを忘れないでください。 452*4882a593Smuzhiyun 453*4882a593Smuzhiyunコミュニティと共に働くこと 454*4882a593Smuzhiyun-------------------------- 455*4882a593Smuzhiyun 456*4882a593Smuzhiyunカーネルコミュニティのゴールは可能なかぎり最高のカーネルを提供すること 457*4882a593Smuzhiyunです。あなたがパッチを受け入れてもらうために投稿した場合、それは、技術 458*4882a593Smuzhiyun的メリットだけがレビューされます。その際、あなたは何を予想すべきでしょ 459*4882a593Smuzhiyunうか? 460*4882a593Smuzhiyun 461*4882a593Smuzhiyun - 批判 462*4882a593Smuzhiyun - コメント 463*4882a593Smuzhiyun - 変更の要求 464*4882a593Smuzhiyun - パッチの正当性の証明要求 465*4882a593Smuzhiyun - 沈黙 466*4882a593Smuzhiyun 467*4882a593Smuzhiyun思い出してください、これはあなたのパッチをカーネルに入れる話です。あな 468*4882a593Smuzhiyunたは、あなたのパッチに対する批判とコメントを受け入れるべきで、それらを 469*4882a593Smuzhiyun技術的レベルで評価して、パッチを再作成するか、なぜそれらの変更をすべき 470*4882a593Smuzhiyunでないかを明確で簡潔な理由の説明を提供してください。もし、あなたのパッ 471*4882a593Smuzhiyunチに何も反応がない場合、たまにはメールの山に埋もれて見逃され、あなたの 472*4882a593Smuzhiyun投稿が忘れられてしまうこともあるので、数日待って再度投稿してください。 473*4882a593Smuzhiyun 474*4882a593Smuzhiyunあなたがやるべきでないことは? 475*4882a593Smuzhiyun 476*4882a593Smuzhiyun - 質問なしにあなたのパッチが受け入れられると想像すること 477*4882a593Smuzhiyun - 守りに入ること 478*4882a593Smuzhiyun - コメントを無視すること 479*4882a593Smuzhiyun - 要求された変更を何もしないでパッチを出し直すこと 480*4882a593Smuzhiyun 481*4882a593Smuzhiyun可能な限り最高の技術的解決を求めているコミュニティでは、パッチがどのく 482*4882a593Smuzhiyunらい有益なのかについては常に異なる意見があります。あなたは協調的である 483*4882a593Smuzhiyunべきですし、また、あなたのアイディアをカーネルに対してうまく合わせるよ 484*4882a593Smuzhiyunうにすることが望まれています。もしくは、最低限あなたのアイディアがそれ 485*4882a593Smuzhiyunだけの価値があるとすすんで証明するようにしなければなりません。 486*4882a593Smuzhiyun正しい解決に向かって進もうという意志がある限り、間違うことがあっても許 487*4882a593Smuzhiyun容されることを忘れないでください。 488*4882a593Smuzhiyun 489*4882a593Smuzhiyunあなたの最初のパッチに単に 1ダースもの修正を求めるリストの返答になるこ 490*4882a593Smuzhiyunとも普通のことです。これはあなたのパッチが受け入れられないということで 491*4882a593Smuzhiyunは **ありません**、そしてあなた自身に反対することを意味するのでも **あ 492*4882a593Smuzhiyunりません**。単に自分のパッチに対して指摘された問題を全て修正して再送す 493*4882a593Smuzhiyunれば良いのです。 494*4882a593Smuzhiyun 495*4882a593Smuzhiyun 496*4882a593Smuzhiyunカーネルコミュニティと企業組織のちがい 497*4882a593Smuzhiyun----------------------------------------------------------------- 498*4882a593Smuzhiyun 499*4882a593Smuzhiyunカーネルコミュニティは大部分の伝統的な会社の開発環境とは異ったやり方で 500*4882a593Smuzhiyun動いています。以下は問題を避けるためにできると良いことのリストです。 501*4882a593Smuzhiyun 502*4882a593Smuzhiyun あなたの提案する変更について言うときのうまい言い方 - 503*4882a593Smuzhiyun 504*4882a593Smuzhiyun - "これは複数の問題を解決します" 505*4882a593Smuzhiyun - "これは2000行のコードを削除します" 506*4882a593Smuzhiyun - "以下のパッチは、私が言おうとしていることを説明するものです" 507*4882a593Smuzhiyun - "私はこれを5つの異なるアーキテクチャでテストしたのですが..." 508*4882a593Smuzhiyun - "以下は一連の小さなパッチ群ですが..." 509*4882a593Smuzhiyun - "これは典型的なマシンでの性能を向上させます..." 510*4882a593Smuzhiyun 511*4882a593Smuzhiyun やめた方が良い悪い言い方 - 512*4882a593Smuzhiyun 513*4882a593Smuzhiyun - "このやり方で AIX/ptx/Solaris ではできたので、できるはずだ..." 514*4882a593Smuzhiyun - "私はこれを20年もの間やってきた、だから..." 515*4882a593Smuzhiyun - "これは私の会社が金儲けをするために必要だ" 516*4882a593Smuzhiyun - "これは我々のエンタープライズ向け商品ラインのためである" 517*4882a593Smuzhiyun - "これは私が自分のアイディアを記述した、1000ページの設計資料である" 518*4882a593Smuzhiyun - "私はこれについて、6ケ月作業している..." 519*4882a593Smuzhiyun - "以下は ... に関する5000行のパッチです" 520*4882a593Smuzhiyun - "私は現在のぐちゃぐちゃを全部書き直した、それが以下です..." 521*4882a593Smuzhiyun - "私は〆切がある、そのためこのパッチは今すぐ適用される必要がある" 522*4882a593Smuzhiyun 523*4882a593Smuzhiyunカーネルコミュニティが大部分の伝統的なソフトウェアエンジニアリングの労 524*4882a593Smuzhiyun働環境と異なるもう一つの点は、やりとりに顔を合わせないということです。 525*4882a593Smuzhiyunemail と irc を第一のコミュニケーションの形とする一つの利点は、性別や 526*4882a593Smuzhiyun民族の差別がないことです。Linux カーネルの職場環境は女性や少数民族を受 527*4882a593Smuzhiyun容します。なぜなら、email アドレスによってのみあなたが認識されるからで 528*4882a593Smuzhiyunす。 529*4882a593Smuzhiyun国際的な側面からも活動領域を均等にするようにします。なぜならば、あなた 530*4882a593Smuzhiyunは人の名前で性別を想像できないからです。ある男性が アンドレアという名 531*4882a593Smuzhiyun前で、女性の名前は パット かもしれません (訳注 Andrea は米国では女性、 532*4882a593Smuzhiyunそれ以外(欧州など)では男性名として使われることが多い。同様に、Pat は 533*4882a593SmuzhiyunPatricia (主に女性名)や Patrick (主に男性名)の略称)。 534*4882a593SmuzhiyunLinux カーネルの活動をして、意見を表明したことがある大部分の女性は、前 535*4882a593Smuzhiyun向きな経験をもっています。 536*4882a593Smuzhiyun 537*4882a593Smuzhiyun言葉の壁は英語が得意でない一部の人には問題になります。メーリングリスト 538*4882a593Smuzhiyunの中で、きちんとアイディアを交換するには、相当うまく英語を操れる必要が 539*4882a593Smuzhiyunあることもあります。そのため、自分のメールを送る前に英語で意味が通じて 540*4882a593Smuzhiyunいるかをチェックすることをお薦めします。 541*4882a593Smuzhiyun 542*4882a593Smuzhiyun変更を分割する 543*4882a593Smuzhiyun-------------- 544*4882a593Smuzhiyun 545*4882a593SmuzhiyunLinux カーネルコミュニティは、一度に大量のコードの塊を喜んで受容するこ 546*4882a593Smuzhiyunとはありません。変更は正確に説明される必要があり、議論され、小さい、個 547*4882a593Smuzhiyun別の部分に分割する必要があります。これはこれまで多くの会社がやり慣れて 548*4882a593Smuzhiyunきたことと全く正反対のことです。あなたのプロポーザルは、開発プロセスのと 549*4882a593Smuzhiyunても早い段階から紹介されるべきです。そうすれば あなたは自分のやってい 550*4882a593Smuzhiyunることにフィードバックを得られます。これは、コミュニティからみれば、あ 551*4882a593Smuzhiyunなたが彼らと一緒にやっているように感じられ、単にあなたの提案する機能の 552*4882a593Smuzhiyunゴミ捨て場として使っているのではない、と感じられるでしょう。 553*4882a593Smuzhiyunしかし、一度に 50 もの email をメーリングリストに送りつけるようなことは 554*4882a593Smuzhiyunやってはいけません、あなたのパッチ群はいつもどんな時でもそれよりは小さ 555*4882a593Smuzhiyunくなければなりません。 556*4882a593Smuzhiyun 557*4882a593Smuzhiyunパッチを分割する理由は以下 - 558*4882a593Smuzhiyun 559*4882a593Smuzhiyun1) 小さいパッチはあなたのパッチが適用される見込みを大きくします、カー 560*4882a593Smuzhiyun ネルの人達はパッチが正しいかどうかを確認する時間や労力をかけないか 561*4882a593Smuzhiyun らです。5行のパッチはメンテナがたった1秒見るだけで適用できます。 562*4882a593Smuzhiyun しかし、500行のパッチは、正しいことをレビューするのに数時間かかるか 563*4882a593Smuzhiyun もしれません(時間はパッチのサイズなどにより指数関数に比例してかかり 564*4882a593Smuzhiyun ます) 565*4882a593Smuzhiyun 566*4882a593Smuzhiyun 小さいパッチは何かあったときにデバッグもとても簡単になります。パッ 567*4882a593Smuzhiyun チを1個1個取り除くのは、とても大きなパッチを当てた後に(かつ、何かお 568*4882a593Smuzhiyun かしくなった後で)解剖するのに比べればとても簡単です。 569*4882a593Smuzhiyun 570*4882a593Smuzhiyun2) 小さいパッチを送るだけでなく、送るまえに、書き直して、シンプルにす 571*4882a593Smuzhiyun る(もしくは、単に順番を変えるだけでも)ことも、とても重要です。 572*4882a593Smuzhiyun 573*4882a593Smuzhiyun以下はカーネル開発者の Al Viro のたとえ話です - 574*4882a593Smuzhiyun 575*4882a593Smuzhiyun *"生徒の数学の宿題を採点する先生のことを考えてみてください、 576*4882a593Smuzhiyun 先生は生徒が解に到達するまでの試行錯誤を見たいとは思わないでし 577*4882a593Smuzhiyun ょう。先生は簡潔な最高の解を見たいのです。良い生徒はこれを知っ 578*4882a593Smuzhiyun ており、そして最終解の前の中間作業を提出することは決してないの 579*4882a593Smuzhiyun です* 580*4882a593Smuzhiyun 581*4882a593Smuzhiyun *カーネル開発でもこれは同じです。メンテナ達とレビューア達は、 582*4882a593Smuzhiyun 問題を解決する解の背後になる思考プロセスを見たいとは思いません。 583*4882a593Smuzhiyun 彼らは単純であざやかな解決方法を見たいのです。"* 584*4882a593Smuzhiyun 585*4882a593Smuzhiyunあざやかな解を説明するのと、コミュニティと共に仕事をし、未解決の仕事を 586*4882a593Smuzhiyun議論することのバランスをキープするのは難しいかもしれません。ですから、 587*4882a593Smuzhiyun開発プロセスの早期段階で改善のためのフィードバックをもらうようにするの 588*4882a593Smuzhiyunも良いですが、変更点を小さい部分に分割して全体ではまだ完成していない仕 589*4882a593Smuzhiyun事を(部分的に)取り込んでもらえるようにすることも良いことです。 590*4882a593Smuzhiyun 591*4882a593Smuzhiyunまた、でき上がっていないものや、"将来直す" ようなパッチを、本流に含め 592*4882a593Smuzhiyunてもらうように送っても、それは受け付けられないことを理解してください。 593*4882a593Smuzhiyun 594*4882a593Smuzhiyunあなたの変更を正当化する 595*4882a593Smuzhiyun------------------------ 596*4882a593Smuzhiyun 597*4882a593Smuzhiyunあなたのパッチを分割するのと同時に、なぜその変更を追加しなければならな 598*4882a593Smuzhiyunいかを Linux コミュニティに知らせることはとても重要です。新機能は必要 599*4882a593Smuzhiyun性と有用性で正当化されなければなりません。 600*4882a593Smuzhiyun 601*4882a593Smuzhiyunあなたの変更を説明する 602*4882a593Smuzhiyun---------------------- 603*4882a593Smuzhiyun 604*4882a593Smuzhiyunあなたのパッチを送付する場合には、メールの中のテキストで何を言うかにつ 605*4882a593Smuzhiyunいて、特別に注意を払ってください。この情報はパッチの ChangeLog に使わ 606*4882a593Smuzhiyunれ、いつも皆がみられるように保管されます。これは次のような項目を含め、 607*4882a593Smuzhiyunパッチを完全に記述するべきです - 608*4882a593Smuzhiyun 609*4882a593Smuzhiyun - なぜ変更が必要か 610*4882a593Smuzhiyun - パッチ全体の設計アプローチ 611*4882a593Smuzhiyun - 実装の詳細 612*4882a593Smuzhiyun - テスト結果 613*4882a593Smuzhiyun 614*4882a593Smuzhiyunこれについて全てがどのようにあるべきかについての詳細は、以下のドキュメ 615*4882a593Smuzhiyunントの ChangeLog セクションを見てください - 616*4882a593Smuzhiyun 617*4882a593Smuzhiyun "The Perfect Patch" 618*4882a593Smuzhiyun http://www.ozlabs.org/~akpm/stuff/tpp.txt 619*4882a593Smuzhiyun 620*4882a593Smuzhiyunこれらはどれも、実行することが時にはとても困難です。これらの例を完璧に 621*4882a593Smuzhiyun実施するには数年かかるかもしれません。これは継続的な改善のプロセスであ 622*4882a593Smuzhiyunり、多くの忍耐と決意を必要とするものです。でも諦めないで、実現は可能で 623*4882a593Smuzhiyunす。多数の人がすでにできていますし、彼らも最初はあなたと同じところから 624*4882a593Smuzhiyunスタートしたのですから。 625*4882a593Smuzhiyun 626*4882a593Smuzhiyun 627*4882a593Smuzhiyun 628*4882a593Smuzhiyun 629*4882a593Smuzhiyun---------- 630*4882a593Smuzhiyun 631*4882a593SmuzhiyunPaolo Ciarrocchi に感謝、彼は彼の書いた "Development Process" 632*4882a593Smuzhiyun(https://lwn.net/Articles/94386/) セクションをこのテキストの原型にする 633*4882a593Smuzhiyunことを許可してくれました。Rundy Dunlap と Gerrit Huizenga はメーリング 634*4882a593Smuzhiyunリストでやるべきこととやってはいけないことのリストを提供してくれました。 635*4882a593Smuzhiyun以下の人々のレビュー、コメント、貢献に感謝。 636*4882a593SmuzhiyunPat Mochel, Hanna Linder, Randy Dunlap, Kay Sievers, 637*4882a593SmuzhiyunVojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook, Andrew Morton, Andi 638*4882a593SmuzhiyunKleen, Vadim Lobanov, Jesper Juhl, Adrian Bunk, Keri Harris, Frans Pop, 639*4882a593SmuzhiyunDavid A. Wheeler, Junio Hamano, Michael Kerrisk, と Alex Shepard 640*4882a593Smuzhiyun彼らの支援なしでは、このドキュメントはできなかったでしょう。 641*4882a593Smuzhiyun 642*4882a593Smuzhiyun 643*4882a593Smuzhiyun 644*4882a593SmuzhiyunMaintainer: Greg Kroah-Hartman <greg@kroah.com> 645