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