linux kernel有設計和開發文檔嗎?

在github上確實有看到kernel-master維護的文檔,可大多數是關於開發的細節,比如如何提交補丁、編譯源碼、溝通合作等,沒有看到一個詳細介紹軟體各個模塊功能及實現的文檔。為什麼kernel沒有維護一個像普通軟體開發那樣的一個開發設計文檔呢?


很多源文件開頭不就有一段注釋說明了用法么?

還有內核下不是有Documentation文件夾么?

還不行就read the fucking code

引用github Linux kernel

DOCUMENTATION:

- There is a lot of documentation available both in electronic form on
the Internet and in books, both Linux-specific and pertaining to
general UNIX questions. I"d recommend looking into the documentation
subdirectories on any Linux FTP site for the LDP (Linux Documentation
Project) books. This README is not meant to be documentation on the
system: there are much better sources available.

- There are various README files in the Documentation/ subdirectory:
these typically contain kernel-specific installation notes for some
drivers for example. See Documentation/00-INDEX for a list of what
is contained in each file. Please read the Changes file, as it
contains information about the problems, which may result by upgrading
your kernel.

- The Documentation/DocBook/ subdirectory contains several guides for
kernel developers and users. These guides can be rendered in a
number of formats: PostScript (.ps), PDF, HTML, man-pages, among others.
After installation, "make psdocs", "make pdfdocs", "make htmldocs",
or "make mandocs" will render the documentation in the requested format.


Linux 內核源碼下的 Documentaion/ 是官方文檔庫,中文翻譯計劃也又重啟了,

Linux 內核文檔(中文版) · GitBook

...

BTW,有興趣也可以參與這個翻譯項目哈。


其實困難在於背景知識上,你掌握了相關的背景知識,再回過頭看就不一樣了。

1. 有一堆的資源讓你熟悉*nix世界:

《O"Reilly:深入理解LINUX內核(第3版)(涵蓋2.6版)》([美]博韋,西斯特)【摘要 書評 試讀】

《O"Reilly:LINUX設備驅動程序(第3版)》([美]科波特(Corbet,J.),等)【摘要 書評 試讀】

《深入Linux內核架構》([德]莫爾勒)【摘要 書評 試讀】

《UNIX環境高級編程(第3版)》([美]W. Richard Stevens,[美]Stephen A. Rago)【摘要 書評 試讀】

《UNIX網路編程(卷1):套接字聯網API(第3版)》([美]史蒂文斯,等)【摘要 書評 試讀】

《傳世經典書叢:UNIX編程藝術》([美]Eric S.Raymond)【摘要 書評 試讀】

2. 上面只是常規的資源,如果想理解某一模塊的源碼,你還需要其他的資源。

比如,POSIX標準:

The Open Group Base Specifications Issue 7, 2013 Edition

比如,TCP/IP協議棧:

《TCP/IP詳解:卷1+卷2+卷3(京東套裝共3冊)》([美]W.Richard Stevens,等)【摘要 書評 試讀】

《深入理解Linux網路技術內幕》([意]本)【摘要 書評 試讀】

比如,intel的開源圖形驅動:

Driver Documentation

比如,x86開發手冊:

英特爾? 64 和 IA-32 架構軟體開發人員手冊


因為涉及到的知識太多了,根本寫不過來。開發者要有操作系統實現細節的知識,同時對於計算機體系結構有深入了解。

建議初學者還是先買書吧,比如Linux內核深度剖析,linux內核完全注釋之類的


可以看郵件列表


我覺得 kernel 並不屬於普通的「軟體」,要入門這款「軟體」,需要的知識太多了。而 kernel 開發社區默認你應該了解這種知識。比如中斷,如果這都不知道,難道指望內核文檔幫你寫清楚么,你讀下去就會發現還和硬體有關係,會發現越看越深。。。況且,開源社區本來就很高冷啊。。。

我認為做這方面開發的最好方法就是真的對內核方面有業務上的需求,比如訪問量太大或者進程太多了發現調度演算法有 bug(舉例說明),那可以看看相關代碼,不小心真的又有過人之處,是大牛,可以考慮提提代碼什麼的。。。反正我不是。。。那我就等著。。

如果感興趣,可以從讀書做起,了解內核對工作也很有幫助的。


關注奔跑吧linux內核

奔跑吧 Linux內核-圖書 - 非同步社區


推薦閱讀:

Linux 系統有哪些自殺命令?
在樹莓派上學習LINUX與在PC 上學習,學完後有什麼差別?
一個用慣了windows的用戶,怎樣上手linux系統?如果用linux系統,能夠勝任日常辦公需求嗎?
為什麼powershell那麼厲害,但是微軟卻好像沒怎麼宣傳過?
OS X 和 Windows 操作系統是如何進行編譯的?

TAG:Linux | 開源 | 開源項目 | Linux開發 | Linux內核 |