每個(gè)Fedora系統(tǒng)都運(yùn)行著一個(gè)內(nèi)核,許多代碼片段組合在一起使之成為我們現(xiàn)在所用linux系統(tǒng),每個(gè)Fedora內(nèi)核都起始于一個(gè)來(lái)自于上游社區(qū)的基線版本——通常稱之為 vanilla內(nèi)核,上游內(nèi)核就是標(biāo)準(zhǔn)。
(Fedora 的)目標(biāo)是包含盡可能多的上游代碼,這樣使得 bug 修復(fù)和 API 更新更加容易,同時(shí)也會(huì)有更多的人審查代碼,在理想情況下,F(xiàn)edora 能夠直接獲取 kernel.org 的內(nèi)核,然后發(fā)送給所有用戶。
現(xiàn)實(shí)情況是,使用 vanilla 內(nèi)核并不能完全滿足 Fedora,然而 Vanilla 內(nèi)核可能并不支持一些 Fedora 用戶希望擁有的功能。用戶接收的 [Fedora 內(nèi)核] 是在 vanilla 內(nèi)核之上打了很多補(bǔ)丁的內(nèi)核。這些補(bǔ)丁被認(rèn)為“不在樹上out of tree”。許多這些位于補(bǔ)丁樹之外的補(bǔ)丁都不會(huì)存在太久。如果某補(bǔ)丁能夠修復(fù)一個(gè)問(wèn)題,那么該補(bǔ)丁可能會(huì)被合并到 Fedora 樹,以便用戶能夠更快地收到修復(fù);當(dāng)內(nèi)核變基到一個(gè)新版本時(shí),在新版本中的補(bǔ)丁都將被清除。
一些補(bǔ)丁會(huì)在 Fedora 內(nèi)核樹上存在很長(zhǎng)時(shí)間。一個(gè)很好的例子是,安全啟動(dòng)補(bǔ)丁就屬于這類補(bǔ)丁,這些補(bǔ)丁提供了 Fedora 希望支持的功能,即使上游社區(qū)還沒(méi)有接受它們。保持這些補(bǔ)丁更新是需要付出很多努力的,所以 Fedora 嘗試減少不被上游內(nèi)核維護(hù)者接受的補(bǔ)丁數(shù)量。
通常來(lái)說(shuō),想要在 Fedora 內(nèi)核中獲得一個(gè)補(bǔ)丁的最佳方法是先給 Linux 內(nèi)核郵件列表(LKML) 發(fā)送補(bǔ)丁,然后請(qǐng)求將該補(bǔ)丁包含到 Fedora 中;如果某個(gè)維護(hù)者接受了補(bǔ)丁,就意味著 Fedora 內(nèi)核樹中將來(lái)很有可能會(huì)包含該補(bǔ)丁,一些來(lái)自于 GitHub 等地方的還沒(méi)有提交給 LKML 的補(bǔ)丁是不可能進(jìn)入內(nèi)核樹的,首先向 LKML 發(fā)送補(bǔ)丁是非常重要的,它能確保 Fedora 內(nèi)核樹中攜帶的補(bǔ)丁是功能正常的。如果沒(méi)有社區(qū)審查,F(xiàn)edora 最終攜帶的補(bǔ)丁將會(huì)充滿 bug 并會(huì)導(dǎo)致問(wèn)題。
Fedora 內(nèi)核中包含的代碼來(lái)自許多地方,一切都需要提供最佳的體驗(yàn)。希望會(huì)給大家?guī)?lái)幫助!