linux核心測試 Linux核心測試的生命週期

2021-10-08 05:27:57 字數 1905 閱讀 2452

linux核心測試

在針對linux核心的持續整合測試中

,我寫了關於「 持續核心整合」 (cki)專案及其更改核心開發人員和維護人員工作方式的使命。 本文深入**了該項目的更多技術方面以及所有部分如何組合在一起。

核心中每一項令人興奮的功能,改進和錯誤都始於開發人員提出的更改。 這些更改將出現在不同核心儲存庫的大量郵件列表中。 一些儲存庫關注核心中的某些子系統,例如儲存或網路,而其他儲存庫關注核心的廣泛方面。 當開發人員向核心提出更改或補丁集或維護人員對儲存庫本身進行更改時,cki專案便會付諸行動。

cki專案維護用於監視這些補丁集並採取措施的觸發器。 諸如patchwork之類的軟體專案通過將多個補丁貢獻集成為單個補丁系列,使此過程變得更加容易。 該系列作為乙個整體通過cki系統旅行,並允許發布有關該系列的單個報告。

其他觸發器監視儲存庫中的更改。 當核心維護人員合併補丁集,還原補丁或建立新標籤時,就會發生這種情況。 測試這些關鍵的更改可確保開發人員始終具有堅實的基準,可以用作編寫新補丁的基礎。

所有這些更改都進入了gitlab管道,並經過了多個階段和多個系統。

一切始於使源**準備好進行編譯。 這需要轉殖儲存庫,應用開發人員建議的補丁集,並生成核心配置檔案。 這些配置檔案具有成千上萬個用於開啟或關閉功能的選項,並且配置檔案在不同的系統體系結構之間差異非常大。 例如,乙個相當標準的x86_64系統的配置檔案中可能有很多選項,但是s390x系統(ibm zseries大型機)的選項可能要少得多。 在該大型機上,某些選項可能有意義,但在消費類膝上型電腦上沒有用處。

核心向前移動並轉換為源工件。 該工件包含整個儲存庫(已應用補丁)以及編譯所需的所有核心配置檔案。 上游核心繼續作為壓縮包執行,而red hat核心成為下一步的源rpm。

編譯核心會將源**轉換為計算機可以啟動和使用的內容。 配置檔案描述了要構建的內容,核心中的指令碼描述了如何構建它,系統上的工具(例如gcc和glibc)完成了構建。 此過程需要一段時間才能完成,但是cki專案需要針對四種體系結構swift完成:aarch64(64位arm),ppc64le(power),s390x(ibm zseries)和x86_64。 重要的是,我們必須快速編譯核心,以便使積壓工作易於管理,並且開發人員可以及時收到反饋。

新增更多的cpu可以大大提高速度,但是每個系統都有其侷限性。 cki專案在openshift部署中編譯容器內的核心; 儘管openshift可以實現大量的可伸縮性,但部署中仍然有有限數量的可用cpu。 cki團隊分配了20個虛擬cpu來編譯每個核心。 涉及到四個體系結構,這可以擴充套件到80個cpu!

另乙個提高速度的方法來自名為ccache的工具。 核心開發進展swift,但是即使在多個發行版之間,大量核心仍保持不變。 ccache工具在磁碟上進行編譯時會快取已構建的物件(整個核心的一小部分)。 稍後再進行另乙個核心編譯時,ccache會查詢以前看到的核心的未更改部分。 ccache從磁碟中提取快取的物件並重新使用它。 這樣可以加快編譯速度並降低總體cpu使用率。 現在,耗時20分鐘的核心在不到幾分鐘的時間內就衝向了終點線。

大型測試框架(例如linux測試專案 (ltp))包含大量測試,這些測試在核心中尋找麻煩的回歸。 其中一些回歸可能會回滾關鍵的安全修復程式,並且進行了測試以確保這些改進仍保留在核心中。

測試完成後,關鍵的一步仍然是:報告。 核心開發人員和維護人員需要乙份簡明的報告,以準確告知他們哪些有效,哪些無效以及如何獲取更多資訊。 每個cki報告都包含有關所使用的源**,編譯引數和測試輸出的詳細資訊。 該資訊可幫助開發人員知道從**開始尋找解決問題的方法。 此外,它還可以幫助維護人員在漏洞進入核心儲存庫之前知道何時需要保留補丁集以進行其他檢視。

cki專案團隊通過向核心開發人員和維護人員提供及時,自動的反饋,努力防止錯誤進入linux核心。 這項工作通過發現容易導致核心錯誤,安全性問題和效能問題的低落果實,使他們的工作更加輕鬆。

翻譯自:

linux核心測試

讀核日記 《Linux核心完全注釋》

linux核心完全注釋 v1.9.5版說明 linux 核心 6.程序間通訊機制 linux 核心 4.記憶體管理 linux 核心 5.linux程序 linux 核心 3.軟體基礎 linux 核心 2.硬體基礎 linux 核心 1.前言 讀核日記 八 linux的記憶體管理機制 2 讀核日記...

Linux核心編譯測試

核心編譯 make menuconfigmake mrpropermake cleanmake bzimage 編譯核心 make modules 編譯各核心模組,如驅動等。make modules install 將編譯好的模組安裝至 lib modules x.xx.x 資料夾下。cd linu...

Linux驅動 核心延時測試

linux驅動 核心延時測試 環境 主機 fedora12 目標板 mini6410 目標板linux核心版本 2.6.38 實現功能 延遲2s 方法1 利用系統全域性變數jiffies jiffies記錄系統節拍,每一次節拍,核心時鐘中斷函式會將jiffies加1.hz在arm中為100,表示1s...