~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/translations/zh_TW/process/howto.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/translations/zh_TW/process/howto.rst (Version linux-6.12-rc7) and /Documentation/translations/zh_TW/process/howto.rst (Version linux-4.18.20)


  1 .. SPDX-License-Identifier: GPL-2.0               
  2                                                   
  3 .. _tw_process_howto:                             
  4                                                   
  5 .. include:: ../disclaimer-zh_TW.rst              
  6                                                   
  7 :Original: :ref:`Documentation/process/howto.r    
  8                                                   
  9 譯者::                                          
 10                                                   
 11     英文版維護者: Greg Kroah-Hartman <g    
 12     中文版維護者: 李陽  Li Yang <leoy    
 13     中文版翻譯者: 李陽  Li Yang <leoy    
 14                    時奎亮 Alex Shi <alex.shi    
 15     中文版校譯者:                           
 16                    鍾宇  TripleX Chung <xxx.p    
 17                    陳琦  Maggie Chen <chenqi@    
 18                    王聰  Wang Cong <xiyou.wan    
 19                    胡皓文 Hu Haowen <2023002    
 20                                                   
 21 如何參與Linux內核開發                     
 22 =====================                             
 23                                                   
 24 這是一篇將如何參與Linux內核開發    
 25 成爲一名Linux內核開發者,並且學    
 26 包括任何關於內核編程的技術細節    
 27                                                   
 28 如果這篇文章中的任何內容不再適    
 29                                                   
 30                                                   
 31 入門                                            
 32 ----                                              
 33                                                   
 34 你想了解如何成爲一名Linux內核開    
 35 驅動程序」?這篇文章的目的就是    
 36 要經過的流程以及給出如何同內核    
 37 爲何這樣運作。                             
 38                                                   
 39 Linux內核大部分是由C語言寫成的,    
 40 參與內核開發,你必須精通C語言。    
 41 不需要了解(任何體系結構的)彙    
 42 語言教育和多年的開發經驗,但如    
 43                                                   
 44  - "The C Programming Language" by Kernighan a    
 45    《C程序設計語言(第2版·新版)    
 46  - "Practical C Programming" by Steve Oualline    
 47    《實用C語言編程(第三版)》(    
 48  - "C:  A Reference Manual" by Harbison and St    
 49    《C語言參考手冊(原書第5版)    
 50                                                   
 51 Linux內核使用GNU C和GNU工具鏈開發。    
 52 標準中沒有定義的擴展。內核是自    
 53 並不支持C標準中的部分定義。比如    
 54 使用。有時候確實很難弄清楚內核    
 55 前還沒有明確的參考資料可以解釋    
 56 顯示)獲得一些這方面信息。           
 57                                                   
 58 請記住你是在學習怎麼和已經存在    
 59 他們對代碼、風格和過程有著很高    
 60 適應於地理上分散的大型開發團隊    
 61 之前儘可能多的學習這些標準,而    
 62                                                   
 63                                                   
 64 法律問題                                      
 65 --------                                          
 66                                                   
 67 Linux內核原始碼都是在GPL(通用公    
 68 的細節請查看原始碼主目錄下的COPY    
 69 `SPDX <https://spdx.org/>` 標誌符說明在    
 70 :ref:`Documentation/translations/zh_TW/process    
 71 如果你對它還有更深入問題請聯繫    
 72 郵件組裡的人並不是律師,不要期    
 73                                                   
 74 對於GPL的常見問題和解答,請訪問    
 75         https://www.gnu.org/licenses/gpl-faq.h    
 76                                                   
 77                                                   
 78 文檔                                            
 79 ----                                              
 80                                                   
 81 Linux內核代碼中包含有大量的文檔    
 82 不可估量的價值。當一個新的功能    
 83 檔也放進內核。當內核的改動導致    
 84 息或手冊頁(manpages)的補丁發到mtk.ma    
 85 的維護者解釋這些變化。                 
 86                                                   
 87 以下是內核代碼中需要閱讀的文檔    
 88   :ref:`Documentation/admin-guide/README.rst <    
 89     文件簡要介紹了Linux內核的背景    
 90     新用戶應該從這裡開始。             
 91                                                   
 92                                                   
 93   :ref:`Documentation/process/changes.rst <cha    
 94     文件給出了用來編譯和使用內核    
 95                                                   
 96   :ref:`Documentation/translations/zh_TW/proce    
 97     描述Linux內核的代碼風格和理由    
 98     范。大多數維護者只會接收符合    
 99     的代碼。                                  
100                                                   
101   :ref:`Documentation/translations/zh_TW/proce    
102                                                   
103     這兩份文檔明確描述如何創建和    
104        - 郵件內容                             
105        - 郵件格式                             
106        - 選擇收件人                          
107                                                   
108     遵守這些規定並不能保證提交成    
109     審查),但是忽視他們幾乎就意    
110                                                   
111     其他關於如何正確地生成補丁的    
112     "The Perfect Patch"                           
113                                                   
114         https://www.ozlabs.org/~akpm/stuff/tpp    
115                                                   
116     "Linux kernel patch submission format"        
117                                                   
118         https://web.archive.org/web/2018082911    
119                                                   
120   :ref:`Documentation/translations/zh_TW/proce    
121     論證內核爲什麼特意不包括穩定    
122     性:                                        
123                                                   
124        - 子系統中間層(爲了兼容性    
125        - 在不同作業系統間易於移植    
126        - 減緩(甚至阻止)內核代碼    
127                                                   
128     這篇文檔對於理解Linux的開發哲    
129     統轉移到Linux的人來說也很重要    
130                                                   
131   :ref:`Documentation/process/security-bugs.rs    
132     如果你認爲自己發現了Linux內核    
133     提醒其他內核開發者並幫助解決    
134                                                   
135   :ref:`Documentation/translations/zh_TW/proce    
136                                                   
137     描述內核維護者的工作方法及其    
138     它感到好奇)的人來說很重要,    
139     普遍誤解與迷惑。                      
140                                                   
141   :ref:`Documentation/process/stable-kernel-ru    
142     解釋了穩定版內核發布的規則,    
143                                                   
144   :ref:`Documentation/process/kernel-docs.rst     
145     有助於內核開發的外部文檔列表    
146     的內容,可以查看這些文檔。       
147                                                   
148   :ref:`Documentation/process/applying-patches    
149     關於補丁是什麼以及如何將它打    
150                                                   
151 內核還擁有大量從代碼自動生成或    
152 比如這個文檔,它包含內核內部API    
153 這些文檔都可以通過運行以下命令    
154                                                   
155     make pdfdocs                                  
156     make htmldocs                                 
157                                                   
158 ReST格式的文檔會生成在 Documentation/    
159 它們也可以用下列命令生成 LaTeX 和    
160                                                   
161     make latexdocs                                
162     make epubdocs                                 
163                                                   
164 如何成爲內核開發者                       
165 ------------------                                
166 如果你對Linux內核開發一無所知,    
167                                                   
168         https://kernelnewbies.org                 
169                                                   
170 它擁有一個可以問各種最基本的內    
171 查找已往的郵件,確認是否有人已    
172 實時反饋的IRC聊天頻道,以及大量    
173                                                   
174 網站簡要介紹了原始碼組織結構、    
175 中的和單獨維護的)。它還提供了    
176 丁。                                            
177                                                   
178 如果你想加入內核開發社區並協助    
179 「Linux內核房管員」計劃:               
180                                                   
181         https://kernelnewbies.org/KernelJanito    
182                                                   
183 這是極佳的起點。它提供一個相對    
184 整理或者改正的地方。通過和負責    
185 集成進內核的基本原理。如果還沒    
186 向性的指點。                                
187                                                   
188 在真正動手修改內核代碼之前,理    
189 目的,沒什麼辦法比直接讀代碼更    
190 一些特製的工具還可以提供幫助。    
191 特別推薦的幫助工具,它將原始碼    
192 時的內核源碼庫,可以通過以下地    
193                                                   
194         https://elixir.bootlin.com/               
195                                                   
196                                                   
197 開發流程                                      
198 --------                                          
199                                                   
200 目前Linux內核開發流程包括幾個「    
201 些分支包括:                                
202                                                   
203   - Linus 的內核源碼樹                      
204   - 多個主要版本的穩定版內核樹       
205   - 子系統相關的內核樹                   
206   - linux-next 集成測試樹                    
207                                                   
208                                                   
209 主線樹                                         
210 ------                                            
211 主線樹是由Linus Torvalds 維護的。你    
212 庫中下找到它。它的開發遵循以下    
213                                                   
214   - 每當一個新版本的內核被發布,    
215     維護者可以向Linus提交大段的修    
216     星期了。提交大量修改的首選方    
217     ,更多的信息可以在 https://git-sc    
218     可以的。                                  
219   - 兩個星期以後-rc1版本內核發布    
220     新功能的補丁才可能被接受。請    
221     可能在-rc1後被接受是因爲這樣    
222     沒有造成內核退步的風險。在-rc    
223     有的補丁需要同時被發送到相應    
224   - 當Linus認爲當前的git源碼樹已經    
225     時,一個新的-rc版本就會被發布    
226   - 這個過程一直持續下去直到內核    
227     6個星期。                                 
228                                                   
229 關於內核發布,值得一提的是Andrew     
230         「沒有人知道新內核何時會    
231         的,而不是根據一個事先制    
232                                                   
233 子系統特定樹                                
234 ------------                                      
235                                                   
236 各種內核子系統的維護者——以及    
237 當前的開發狀態。這樣,其他人就    
238 很快的領域,可能會要求開發人員    
239 就避免了提交與其他已經進行的工    
240                                                   
241 這些存儲庫中的大多數都是Git樹,    
242 爲Quilt系列。這些子系統存儲庫的    
243 https://git.kernel.org/上瀏覽。               
244                                                   
245 在將一個建議的補丁提交到這樣的    
246 在郵件列表上(請參見下面相應的    
247 過工具補丁跟蹤的。Patchwork提供了    
248 論或修訂,維護人員可以將補丁標    
249https://patchwork.kernel.org/                 
250                                                   
251 Linux-next 集成測試樹                        
252 ---------------------                             
253                                                   
254 在將子系統樹的更新合併到主線樹    
255 特殊的測試存儲庫,其中幾乎每天    
256                                                   
257         https://git.kernel.org/?p=linux/kern    
258                                                   
259 通過這種方式,Linux-next 對下一個    
260 展望。非常歡冒險的測試者運行測    
261                                                   
262 多個主要版本的穩定版內核樹           
263 -----------------------------------               
264 由3個數字組成的內核版本號說明此    
265 至關重要的修補,這些修補針對安    
266                                                   
267 這種版本的內核適用於那些期望獲    
268 者實驗版的用戶。                          
269                                                   
270 穩定版內核樹版本由「穩定版」小<    
271 隔周發布新版本。                          
272                                                   
273 內核源碼中的 :ref:`Documentation/process    
274 文件具體描述了可被穩定版內核接    
275                                                   
276                                                   
277 報告bug                                         
278 -------                                           
279                                                   
280 bugzilla.kernel.org是Linux內核開發者們    
281 戶在這個工具中報告找到的所有bug    
282                                                   
283         http://test.kernel.org/bugzilla/faq.ht    
284                                                   
285 內核源碼主目錄中的:ref:`admin-guide/r    
286 文件里有一個很好的模板。它指導    
287 來幫助內核開發者們找到問題的根    
288                                                   
289                                                   
290 利用bug報告                                   
291 -----------                                       
292                                                   
293 練習內核開發技能的最好辦法就是    
294 得更加穩定,還可以學會如何解決    
295 者感受到你的存在。修改bug是贏得    
296 人都喜歡浪費時間去修改別人報告    
297                                                   
298 要嘗試修改已知的bug,請訪問 http:/    
299                                                   
300                                                   
301 郵件列表                                      
302 --------                                          
303                                                   
304 正如上面的文檔所描述,大多數的    
305 表。如何訂閱和退訂列表的細節可    
306                                                   
307         http://vger.kernel.org/vger-lists.html    
308                                                   
309 網上很多地方都有這個郵件列表的    
310 存檔。比如:                                
311                                                   
312         https://lore.kernel.org/lkml/             
313                                                   
314 在發信之前,我們強烈建議你先在    
315 討論過的問題只在郵件列表的存檔    
316                                                   
317 大多數內核子系統也有自己獨立的    
318 MAINTAINERS文件中可以找到不同話題    
319                                                   
320 很多郵件列表架設在kernel.org伺服器    
321                                                   
322         http://vger.kernel.org/vger-lists.html    
323                                                   
324 在使用這些郵件列表時,請記住保    
325 表(或任何其它郵件列表)交流的    
326                                                   
327         http://www.albion.com/netiquette/         
328                                                   
329 當有很多人回覆你的郵件時,郵件    
330 列表中刪除,除非你有足夠的理由    
331 一封郵件接收兩次(一封來自發送    
332 些奇特的郵件頭來解決這個問題,    
333                                                   
334 記住保留你所回復內容的上下文和    
335 這幾行。將你的評論加在被引用的    
336                                                   
337 如果你在郵件中附帶補丁,請確認    
338 :ref:`Documentation/translations/zh_TW/process    
339 文檔中所述)。內核開發者們不希    
340 保證他們可以直接評論你的每行代    
341 和制表符。一個防範性的測試方法    
342 順利地打上收到的補丁。如果測試    
343 它正確工作爲止。                          
344                                                   
345 總而言之,請尊重其他的郵件列表    
346                                                   
347                                                   
348 同內核社區合作                             
349 ----------------                                  
350                                                   
351 內核社區的目標就是提供盡善盡美    
352 時候,它的技術價值以及其他方面    
353                                                   
354   - 批評                                        
355   - 評論                                        
356   - 要求修改                                  
357   - 要求證明修改的必要性                
358   - 沉默                                        
359                                                   
360 要記住,這些是把補丁放進內核的    
361 從技術層面評估它們,然後要麼重    
362 的。如果你發的郵件沒有得到任何    
363 沒在茫茫信海中。                          
364                                                   
365 你不應該做的事情:                       
366                                                   
367   - 期望自己的補丁不受任何質疑就    
368   - 翻臉                                        
369   - 忽略別人的評論                         
370   - 沒有按照別人的要求做任何修改    
371                                                   
372 在一個努力追尋最好技術方案的社    
373 解。你必須要抱著合作的態度,願    
374 願意去證明你的想法是有價值的。    
375 方案去努力。                                
376                                                   
377 如果你的第一個補丁換來的是一堆    
378 不會被接受,也不意味著有人和你    
379 送你的補丁。                                
380                                                   
381 內核社區和公司文化的差異              
382 ------------------------                          
383                                                   
384 內核社區的工作模式同大多數傳統    
385 子,可以幫助你避免某些可能發生    
386 用這些話介紹你的修改提案會有好    
387                                                   
388     - 它同時解決了多個問題              
389     - 它刪除了2000行代碼                   
390     - 這是補丁,它已經解釋了我想    
391     - 我在5種不同的體系結構上測試    
392     - 這是一系列小補丁用來……        
393     - 這個修改提高了普通機器的性    
394                                                   
395 應該避免如下的說法:                    
396                                                   
397     - 我們在AIX/ptx/Solaris就是這麼做    
398     - 我做這行已經20年了,所以…    
399     - 爲了我們公司賺錢考慮必須這    
400     - 這是我們的企業產品線所需要    
401     - 這裡是描述我觀點的1000頁設計    
402     - 這是一個5000行的補丁用來……    
403     - 我重寫了現在亂七八糟的代碼    
404     - 我被規定了最後期限,所以這    
405                                                   
406 另外一個內核社區與大部分傳統公    
407 流。使用電子郵件和IRC聊天工具做    
408 將會更少。Linux內核的工作環境更    
409 里只是一個郵件地址。國際化也幫    
410 的性別。男人有可能叫李麗,女人    
411 並表達過看法的女性對在linux上工    
412                                                   
413 對於一些不習慣使用英語的人來說    
414 中要正確地表達想法必需良好地掌    
415 下英文寫得是否正確。                    
416                                                   
417                                                   
418 拆分修改                                      
419 --------                                          
420                                                   
421 Linux內核社區並不喜歡一下接收大    
422 拆分成獨立的小段。這幾乎完全和    
423 開始的階段就讓大家知道,這樣你    
424 樣也會讓社區覺得你是在和他們協    
425 無論如何,你不要一次性地向郵件    
426 這麼多。                                      
427                                                   
428 將補丁拆開的原因如下:                 
429                                                   
430 1) 小的補丁更有可能被接受,因爲    
431    一個5行的補丁,可能在維護者看    
432    需要數個小時來審查其正確性(    
433                                                   
434    當出了問題的時候,小的補丁也    
435    將會比仔細剖析一個被打上的大    
436                                                   
437 2)不光發送小的補丁很重要,在提    
438    補丁也是很重要的。                    
439                                                   
440 這裡有內核開發者Al Viro打的一個比    
441         「想像一個老師正在給學生    
442         到正確解法所進行的嘗試和    
443         解答。好學生了解這點,絕    
444                                                   
445         內核開發也是這樣。維護者    
446         考過程。他們只希望看到簡    
447                                                   
448 直接給出一流的解決方案,和社區    
449 很難找到一個平衡點。所以最好儘    
450 保證修改分成很多小塊,這樣在整    
451 分可能會先被接收。                       
452                                                   
453 必須了解這樣做是不可接受的:試    
454 復。                                            
455                                                   
456                                                   
457 證明修改的必要性                          
458 ----------------                                  
459 除了將補丁拆成小塊,很重要的一    
460 你必須證明新功能是有人需要的並    
461                                                   
462                                                   
463 記錄修改                                      
464 --------                                          
465                                                   
466 當你發送補丁的時候,需要特別留    
467 丁的修改記錄(ChangeLog),會被一直    
468 包括:                                         
469                                                   
470   - 爲什麼需要這個修改                   
471   - 補丁的總體設計                         
472   - 實現細節                                  
473   - 測試結果                                  
474                                                   
475 想了解它具體應該看起來像什麼,    
476   「The Perfect Patch」                         
477          https://www.ozlabs.org/~akpm/stuff/tp    
478                                                   
479                                                   
480 這些事情有時候做起來很難。要在    
481 一個持續提高的過程,它需要大量    
482 很多人已經做到了,而他們都曾經    
483                                                   
484                                                   
485 感謝                                            
486 ----                                              
487 感謝Paolo Ciarrocchi允許「開發流程」    
488 (http://www.kerneltravel.net/newbie/2.6-develo    
489 Dunlap和Gerrit Huizenga完善了應該說和    
490 Linder, Randy Dunlap, Kay Sievers, Vojtech Pav    
491 Kees Cook, Andrew Morton, Andi Kleen, Vadim Lo    
492 Bunk, Keri Harris, Frans Pop, David A. Wheeler    
493 Kerrisk和Alex Shepard的評審、建議和貢    
494 能完成的。                                   
495                                                   
496                                                   
497                                                   
498 英文版維護者: Greg Kroah-Hartman <greg@    
499                                                   
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php