Linux

如何列出核心支持的所有硬體

  • September 19, 2016

我想查看正在使用的核心支持的所有硬體。例如,如果我有 3.8.xx 版本的 Linux 核心,我怎麼知道那裡支持哪些硬體。lspci、和之類的工具僅檢查目前使用的硬體,並嘗試使用載入的模組來查找它lshw也不是很方便。lscpu``dmidecode``lsmod

我想要的是檢查核心實際支持的所有硬體,而不考慮我是否使用該硬體。

暫時我想到了類似的東西:

  • 讀取/lib/modules/3.8.0-5-generic/kernel/drivers並解析每個文件。
  • 下載核心的 git 源並對其進行 grepping 以獲取有關此資訊的資訊。
  • 任何其他瘋狂且很長的方法。

有沒有其他更小的方法來實現這一點。

我想要的是檢查核心實際支持的所有硬體,而不考慮我是否使用該硬體。

如果您有.config建構核心的文件,您可以下載原始碼並執行make menuconfig,這將讓您了解 A)可以為哪些硬體配置核心(但請參閱注意),以及 B)您的硬體是什麼核心實際上是為。

製作菜單配置

所以要做到這一點:

  1. 下載原始碼。你的發行版可能有一個包,或者你可以從kernel.org獲取它們;找到你的版本uname -r
  2. 找到.config用於您的核心的。如果您通過您的發行版獲得了原始碼,那麼它有望被包含在內;你也可以在 /boot 的某個地方找到它。更好的是:現在發行版核心通常是使用該/proc/config.gz功能建構的。如果存在,請將其複制出來,解壓縮,重命名文件.config並將其複製到核心原始碼樹的頂層。
  3. make menuconfig從原始碼樹的頂層內部執行。您將需要安裝(或)ncurses開發包,並且您需要是 root。ncurses-dev``ncurses-devel

除了更改文件的內容之外,您在使用 menuconfig 時不會做任何壞事.config,這無關緊要(以後不要混淆)。

注意:您實際上無法同時查看所有可能的硬體配置,因為根據在其他地方選擇的內容,不同的選項可能會出現在一個地方。核心配置有點像迷宮。但是,您肯定會看到實際選擇的所有內容(M意味著它是一個模組,*意味著它是內置的)。

您可以呼叫modinfo所有可用的模組。這將列印模組的別名。該模組的一個別名e1000e是這個(還有更多):

pci:v00008086d00001559sv*sd*bc*sc*i*

這意味著應該為供應商 ID 為8086和設備 ID為1559的 PCI 設備載入它。USB 設備的模式看起來很相似。

引用自:https://unix.stackexchange.com/questions/64320