導航:首頁 > 編程系統 > linux內核測試

linux內核測試

發布時間:2023-07-16 01:58:11

① 如何檢測linux當前運行的內核版本

1.1 命令lsb_release -a

lsb_release提供特定的LSB (Linux Standard Base)和發布版本相關信息。

ubuntu中運行lsb_release -a的結果如下:


內核版本為3.0.0-32-generic

② Linux 內核驅動介面詳解

寫作本文檔的目的,是為了解釋為什麼Linux既沒有二進制內核介面,也沒有穩定 的內核介面。這里所說的內核介面,是指內核里的介面,而不是內核和用戶空間 的介面。內核到用戶空間的介面,是提供給應用程序使用的系統調用,系統調用 在 歷史 上幾乎沒有過變化,將來也不會有變化。我有一些老應用程序是在0.9版本 或者更早版本的內核上編譯的,在使用2.6版本內核的Linux發布上依然用得很好 。用戶和應用程序作者可以將這個介面看成是穩定的。

你也許以為自己想要穩定的內核介面,但是你不清楚你要的實際上不是它。你需 要的其實是穩定的驅動程序,而你只有將驅動程序放到公版內核的源代碼樹里, 才有可能達到這個目的。而且這樣做還有很多其它好處,正是因為這些好處使得 Linux能成為強壯,穩定,成熟的操作系統,這也是你最開始選擇Linux的原因。

只有那些寫驅動程序的「怪人」才會擔心內核介面的改變,對廣大用戶來說,既 看不到內核介面,也不需要去關心它。

既然只談技術問題,我們就有了下面兩個主題:二進制內核介面和穩定的內核源 代碼介面。這兩個問題是互相關聯的,讓我們先解決掉二進制介面的問題。

假如我們有一個穩定的內核源代碼介面,那麼自然而然的,我們就擁有了穩定的 二進制介面,是這樣的嗎?錯。讓我們看看關於Linux內核的幾點事實:

對於一個特定的內核,滿足這些條件並不難,使用同一個C編譯器和同樣的內核配 置選項來編譯驅動程序模塊就可以了。這對於給一個特定Linux發布的特定版本提 供驅動程序,是完全可以滿足需求的。但是如果你要給不同發布的不同版本都發 布一個驅動程序,就需要在每個發布上用不同的內核設置參數都編譯一次內核, 這簡直跟噩夢一樣。而且還要注意到,每個Linux發布還提供不同的Linux內核, 這些內核都針對不同的硬體類型進行了優化(有很多種不同的處理器,還有不同 的內核設置選項)。所以每發布一次驅動程序,都需要提供很多不同版本的內核 模塊。

相信我,如果你真的要採取這種發布方式,一定會慢慢瘋掉,我很久以前就有過 深刻的教訓…

如果有人不將他的內核驅動程序,放入公版內核的源代碼樹,而又想讓驅動程序 一直保持在最新的內核中可用,那麼這個話題將會變得沒完沒了。 內核開發是持續而且快節奏的,從來都不會慢下來。內核開發人員在當前介面中 找到bug,或者找到更好的實現方式。一旦發現這些,他們就很快會去修改當前的 介面。修改介面意味著,函數名可能會改變,結構體可能被擴充或者刪減,函數 的參數也可能發生改變。一旦介面被修改,內核中使用這些介面的地方需要同時 修正,這樣才能保證所有的東西繼續工作。

舉一個例子,內核的USB驅動程序介面在USB子系統的整個生命周期中,至少經歷 了三次重寫。這些重寫解決以下問題:

這和一些封閉源代碼的操作系統形成鮮明的對比,在那些操作系統上,不得不額 外的維護舊的USB介面。這導致了一個可能性,新的開發者依然會不小心使用舊的 介面,以不恰當的方式編寫代碼,進而影響到操作系統的穩定性。 在上面的例子中,所有的開發者都同意這些重要的改動,在這樣的情況下修改代 價很低。如果Linux保持一個穩定的內核源代碼介面,那麼就得創建一個新的介面 ;舊的,有問題的介面必須一直維護,給Linux USB開發者帶來額外的工作。既然 所有的Linux USB驅動的作者都是利用自己的時間工作,那麼要求他們去做毫無意 義的免費額外工作,是不可能的。 安全問題對Linux來說十分重要。一個安全問題被發現,就會在短時間內得到修 正。在很多情況下,這將導致Linux內核中的一些介面被重寫,以從根本上避免安 全問題。一旦介面被重寫,所有使用這些介面的驅動程序,必須同時得到修正, 以確定安全問題已經得到修復並且不可能在未來還有同樣的安全問題。如果內核 內部介面不允許改變,那麼就不可能修復這樣的安全問題,也不可能確認這樣的 安全問題以後不會發生。 開發者一直在清理內核介面。如果一個介面沒有人在使用了,它就會被刪除。這 樣可以確保內核盡可能的小,而且所有潛在的介面都會得到盡可能完整的測試 (沒有人使用的介面是不可能得到良好的測試的)。

如果你寫了一個Linux內核驅動,但是它還不在Linux源代碼樹里,作為一個開發 者,你應該怎麼做?為每個發布的每個版本提供一個二進制驅動,那簡直是一個 噩夢,要跟上永遠處於變化之中的內核介面,也是一件辛苦活。 很簡單,讓你的驅動進入內核源代碼樹(要記得我們在談論的是以GPL許可發行 的驅動,如果你的代碼不符合GPL,那麼祝你好運,你只能自己解決這個問題了, 你這個吸血鬼把Andrew和Linus對吸血鬼的定義鏈接到這里>)。當你的代碼加入 公版內核源代碼樹之後,如果一個內核介面改變,你的驅動會直接被修改介面的 那個人修改。保證你的驅動永遠都可以編譯通過,並且一直工作,你幾乎不需要 做什麼事情。

把驅動放到內核源代碼樹里會有很多的好處:

③ Linux 內核模塊開發怎麼進行單元測試

usb_register_notify,你當前的系統中運行的內核缺少這個函數定義,你這個因為你要專安裝的模塊屬,並沒有在這個你運行的這個系統中編譯生成,而是拿別的機器,或者別人的模塊安裝在你當前的機器上,不提倡。
有源碼的話,在你本機上重新編譯一次,模塊是要和你當前運行的kernel版本相匹配的。

④ linux內核測試版本有哪些

Linux的內核版本有兩種:1穩固版2開發版。

Linux內核版本號是由3個數字構成:a.b.c

a:目前發布的內核主版本。
b:偶數表示穩固版本;奇數表示開發中版本。
c:錯誤修補的次數。

其中第一個數字是主版本號,第二個數字是次版本號,第三個數字是修訂版本號。

⑤ linux內核是什麼,有啥作用 ,

Linux是一種開源電腦操作系統內核。它是一個用C語言寫成,符合POSIX標準的類Unix操作系統。

操作系統是一個用來和硬體打交道並為用戶程序提供一個有限服務集的低級支撐軟體。一個計算機系統是一個硬體和軟體的共生體,它們互相依賴,不可分割。

計算機的硬體,含有外圍設備、處理器、內存、硬碟和其他的電子設備組成計算機的發動機。但是沒有軟體來操作和控制它,自身是不能工作的。完成這個控制工作的軟體就稱為操作系統,在Linux的術語中被稱為「內核」,也可以稱為「核心」。

Linux內核的主要模塊(或組件)分以下幾個部分:存儲管理、CPU和進程管理、文件系統、設備管理和驅動、網路通信,以及系統的初始化(引導)、系統調用等。


(5)linux內核測試擴展閱讀:

Linux內核的特性

1、可移植性

Linux是全球被最廣泛移植的操作系統內核。從掌上電腦iPad到巨型電腦IBM S/390,甚至於微軟出品的游戲機XBOX都可以看到Linux內核的蹤跡。Linux也是IBM超級計算機Blue Gene的操作系統。

2、網路支持

作為一個生產操作系統和開源軟體,Linux 是測試新協議及其增強的良好平台。Linux 支持大量網路協議,包括典型的 TCP/IP,以及高速網路的擴展(大於 1 Gigabit Ethernet [GbE] 和 10 GbE)。Linux 也可以支持諸如流控制傳輸協議(SCTP)之類的協議,它提供了很多比 TCP 更高級的特性(是傳輸層協議的接替者)。

3、動態內核

Linux 還是一個動態內核,支持動態添加或刪除軟體組件。被稱為動態可載入內核模塊,它們可以在引導時根據需要(當前特定設備需要這個模塊)或在任何時候由用戶插入。

4、系統管理程序

Linux 最新的一個增強是可以用作其他操作系統的操作系統。該系統對內核進行了修改,稱為基於內核的虛擬機(KVM)。這個修改為用戶空間啟用了一個新的介面,它可以允許其他操作系統在啟用了 KVM 的內核之上運行。除了運行 Linux 的其他實例之外, Microsoft® Windows® 也可以進行虛擬化。惟一的限制是底層處理器必須支持新的虛擬化指令。

⑥ linux內核加密目錄下的回歸測試文件tcrypt.c如何使用

INTRODUCTION
The Scatterlist Crypto API takes page vectors (scatterlists) as arguments, and works directly on pages. In some cases (e.g. ECB mode ciphers), this will allow for pages to be encrypted in-place with no ing.
Scatterlist Crypto API使用頁向量(scatterlists)作為參數,並且直接按頁面工作。在某些情況下(例如ECB模式密碼),這將允許頁面不需復制而按原地加密。

One of the initial goals of this design was to readily support IPsec, so that processing can be applied to paged skb's without the need for linearization.
這個設計的初始目標之一是快捷地支持IPsec,因此處理過程能夠應用於頁面式緩沖區(paged skb)而無需線性化。

DETAILS
At the lowest level are algorithms, which register dynamically with the API.
處於最底層的是演算法,需動態地注冊到API中。

'Transforms' are user-instantiated objects, which maintain state, handle all of the implementation logic (e.g. manipulating page vectors) and provide an abstraction to the underlying algorithms. However, at the user level they are very simple.
「轉換」是由用戶實例化的對象,它維護狀態、處理所有執行邏輯(例如操縱頁面向量)並且對底層演算法提供一個抽象介面。然而,在用戶層它們是非常簡單的。

Conceptually, the API layering looks like this:
[transform api] (user interface)
[transform ops] (per-type logic glue e.g. cipher.c, compress.c)
[algorithm api] (for registering algorithms)
從概念上講,API分層看似這樣:
[「轉換」API](用戶界面)
[「轉換」OPS](每種類型的介面邏輯模塊,例如cipher.c, compress.c)
[「演算法」API](用於注冊演算法)

The idea is to make the user interface and algorithm registration API very simple, while hiding the core logic from both. Many good ideas from existing APIs such as Cryptoapi and Nettle have been adapted for this.
這樣做是為了使得「用戶界面」和「演算法注冊」API更加簡單,而隱藏了兩者之間的核心邏輯。諸如Cryptoapi和Nettle等許多現存API的良好設計都做了這方面改編。

The API currently supports five main types of transforms: AEAD (Authenticated Encryption with Associated Data), Block Ciphers, Ciphers, Compressors and Hashes.
API目前支持五種主要類型「轉換」:AEAD(帶關聯數據的加密認證)、分組加密、加密、壓縮和哈希演算法。

Please note that Block Ciphers is somewhat of a misnomer. It is in fact meant to support all ciphers including stream ciphers. The difference between Block Ciphers and Ciphers is that the latter operates on exactly one block while the former can operate on an arbitrary amount of data, subject to block size requirements (i.e., non-stream ciphers can only process multiples of blocks).
請注意,分組加密多少有些用詞不準。它實際上意味著支持所有加密,包含流加密。分組加密和加密之間不同之處是後者作用於一個精確的數據塊而前者可以作用於任意數量的數據,但要求以數據塊大小為單位(例如非流密碼只能處理數據塊整數倍的數據)

Support for hardware crypto devices via an asynchronous interface is under development.
通過一個非同步介面支持硬體加密設備的工作正在開發中。

閱讀全文

與linux內核測試相關的資料

熱點內容
win10更新後進不了劍靈 瀏覽:243
iphone471激活出錯 瀏覽:648
怎麼把文件拷到u盤 瀏覽:620
中伊簽署文件視頻 瀏覽:661
電信光寬頻網路不穩定 瀏覽:504
網路崗軟路由 瀏覽:995
黑莓z10在哪裡下載app 瀏覽:310
net批量下載文件 瀏覽:696
怎麼把蘋果一體機文件拷貝 瀏覽:117
sql文件怎麼寫 瀏覽:9
帝豪ec718導航升級 瀏覽:257
如何運用編程進行統計 瀏覽:570
excel如何拉考勤數據 瀏覽:879
大智慧612手機版本 瀏覽:796
編程試什麼 瀏覽:252
plc編程要遵循什麼規則 瀏覽:16
蘋果平板電腦a1476 瀏覽:221
創建mysql資料庫的步驟 瀏覽:406
本地磁碟文件夾找不到了 瀏覽:590
怎麼編輯win10的hosts文件 瀏覽:823

友情鏈接