溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux內(nèi)核測(cè)試生命周期是怎么樣的

發(fā)布時(shí)間:2021-10-25 11:01:48 來(lái)源:億速云 閱讀:102 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要為大家展示了“Linux內(nèi)核測(cè)試生命周期是怎么樣的”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Linux內(nèi)核測(cè)試生命周期是怎么樣的”這篇文章吧。

從一次更改開(kāi)始

內(nèi)核中每一項(xiàng)令人興奮的功能、改進(jìn)和錯(cuò)誤都始于開(kāi)發(fā)人員提出的更改。這些更改出現(xiàn)在各個(gè)內(nèi)核存儲(chǔ)庫(kù)的大量郵件列表中。一些存儲(chǔ)庫(kù)關(guān)注內(nèi)核中的某些子系統(tǒng),例如存儲(chǔ)或網(wǎng)絡(luò),而其它存儲(chǔ)庫(kù)關(guān)注內(nèi)核的更多方面。  當(dāng)開(kāi)發(fā)人員向內(nèi)核提出更改或補(bǔ)丁集時(shí),或者維護(hù)者在存儲(chǔ)庫(kù)本身中進(jìn)行更改時(shí),CKI 項(xiàng)目就會(huì)付諸行動(dòng)。

CKI 項(xiàng)目維護(hù)的觸發(fā)器用于監(jiān)視這些補(bǔ)丁集并采取措施。諸如 Patchwork 之類的軟件項(xiàng)目通過(guò)將多個(gè)補(bǔ)丁貢獻(xiàn)整合為單個(gè)補(bǔ)丁系列,使此過(guò)程變得更加容易。補(bǔ)丁系列作為一個(gè)整體歷經(jīng) CKI 系統(tǒng),并可以針對(duì)該系列發(fā)布單個(gè)報(bào)告。

其他觸發(fā)器可以監(jiān)視存儲(chǔ)庫(kù)中的更改。當(dāng)內(nèi)核維護(hù)人員合并補(bǔ)丁集、還原補(bǔ)丁或創(chuàng)建新標(biāo)簽時(shí),就會(huì)觸發(fā)。測(cè)試這些關(guān)鍵的更改可確保開(kāi)發(fā)人員始終具有堅(jiān)實(shí)的基線,可以用作編寫(xiě)新補(bǔ)丁的基礎(chǔ)。

所有這些更改都會(huì)進(jìn)入 GitLab CI 管道,并歷經(jīng)多個(gè)階段和多個(gè)系統(tǒng)。

準(zhǔn)備構(gòu)建

首先要準(zhǔn)備好要編譯的源代碼。這需要克隆存儲(chǔ)庫(kù)、打上開(kāi)發(fā)人員建議的補(bǔ)丁集,并生成內(nèi)核配置文件。這些配置文件具有成千上萬(wàn)個(gè)用于打開(kāi)或關(guān)閉功能的選項(xiàng),并且配置文件在不同的系統(tǒng)體系結(jié)構(gòu)之間差異非常大。  例如,一個(gè)相當(dāng)標(biāo)準(zhǔn)的 x86_64 系統(tǒng)在其配置文件中可能有很多可用選項(xiàng),但是 s390x 系統(tǒng)(IBM zSeries  大型機(jī))的選項(xiàng)可能要少得多。在該大型機(jī)上,某些選項(xiàng)可能有意義,但在消費(fèi)類筆記本電腦上沒(méi)有任何作用。

內(nèi)核進(jìn)一步轉(zhuǎn)換為源代碼工件。該工件包含整個(gè)存儲(chǔ)庫(kù)(已打上補(bǔ)?。┮约熬幾g所需的所有內(nèi)核配置文件。 上游內(nèi)核會(huì)打包成壓縮包,而 Red Hat 的內(nèi)核會(huì)生成下一步所用的源代碼 RPM 包。

成堆的編譯

編譯內(nèi)核會(huì)將源代碼轉(zhuǎn)換為計(jì)算機(jī)可以啟動(dòng)和使用的代碼。配置文件描述了要構(gòu)建的內(nèi)容,內(nèi)核中的腳本描述了如何構(gòu)建它,系統(tǒng)上的工具(例如 GCC 和  glibc)完成構(gòu)建。此過(guò)程需要一段時(shí)間才能完成,但是 CKI 項(xiàng)目需要針對(duì)四種體系結(jié)構(gòu)快速完成:aarch74(64 位  ARM)、ppc64le(POWER)、s390x(IBM zSeries)和  x86_64。重要的是,我們必須快速編譯內(nèi)核,以便使工作任務(wù)不會(huì)積壓,而開(kāi)發(fā)人員可以及時(shí)收到反饋。

添加更多的 CPU 可以大大提高速度,但是每個(gè)系統(tǒng)都有其局限性。CKI 項(xiàng)目在 OpenShift 的部署環(huán)境中的容器內(nèi)編譯內(nèi)核;盡管  OpenShift 可以實(shí)現(xiàn)高伸縮性,但在部署環(huán)境中的可用 CPU 仍然是數(shù)量有限的。CKI 團(tuán)隊(duì)分配了 20 個(gè)虛擬 CPU  來(lái)編譯每個(gè)內(nèi)核。涉及到四個(gè)體系結(jié)構(gòu),這就漲到了 80 個(gè) CPU!

另一個(gè)速度的提高來(lái)自 ccache  工具。內(nèi)核開(kāi)發(fā)進(jìn)展迅速,但是即使在多個(gè)發(fā)布版本之間,內(nèi)核的大部分仍保持不變。ccache  工具進(jìn)行編譯期間會(huì)在磁盤(pán)上緩存已構(gòu)建的對(duì)象(整個(gè)內(nèi)核的一小部分)。稍后再進(jìn)行另一個(gè)內(nèi)核編譯時(shí),ccache  會(huì)查找以前看到的內(nèi)核的未更改部分。ccache 會(huì)從磁盤(pán)中提取緩存的對(duì)象并重新使用它。這樣可以加快編譯速度并降低總體 CPU 使用率。現(xiàn)在,耗時(shí)  20 分鐘編譯的內(nèi)核在不到幾分鐘的時(shí)間內(nèi)就完成了。

測(cè)試時(shí)間

內(nèi)核進(jìn)入最后一步:在真實(shí)硬件上進(jìn)行測(cè)試。每個(gè)內(nèi)核都使用 Beaker  在其原生體系結(jié)構(gòu)上啟動(dòng),并且開(kāi)始無(wú)數(shù)次的測(cè)試以發(fā)現(xiàn)問(wèn)題。一些測(cè)試會(huì)尋找簡(jiǎn)單的問(wèn)題,例如容器問(wèn)題或啟動(dòng)時(shí)的錯(cuò)誤消息。其他測(cè)試則深入到各種內(nèi)核子系統(tǒng)中,以查找系統(tǒng)調(diào)用、內(nèi)存分配和線程中的回歸問(wèn)題。

大型測(cè)試框架,例如 Linux Test Project(LTP),包含了大量測(cè)試,這些測(cè)試在內(nèi)核中尋找麻煩的回歸問(wèn)題。其中一些回歸問(wèn)題可能會(huì)回滾關(guān)鍵的安全修復(fù)程序,并且進(jìn)行測(cè)試以確保這些改進(jìn)仍保留在內(nèi)核中。

測(cè)試完成后,關(guān)鍵的一步仍然是:報(bào)告。內(nèi)核開(kāi)發(fā)人員和維護(hù)人員需要一份簡(jiǎn)明的報(bào)告,準(zhǔn)確地告訴他們哪些有效、哪些無(wú)效以及如何獲取更多信息。每個(gè)  CKI  報(bào)告都包含所用源代碼、編譯參數(shù)和測(cè)試輸出的詳細(xì)信息。該信息可幫助開(kāi)發(fā)人員知道從哪里開(kāi)始尋找解決問(wèn)題的方法。此外,它還可以幫助維護(hù)人員在漏洞進(jìn)入內(nèi)核存儲(chǔ)庫(kù)之前知道何時(shí)需要保留補(bǔ)丁集以進(jìn)行其他查看。

以上是“Linux內(nèi)核測(cè)試生命周期是怎么樣的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI