歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

硬件掃描和驅動加載大致流程

系統啟動-->
掃描PCI總線(PCI總線枚舉)-->
從硬件配置空間中中讀取硬件信息-->
PCI總線描述符會包含一個已檢測到的PCI設備列表(在具體的設備驅動加載之前就已經建立好)-->
內核發udev事件-->
用戶態udev執行相應的udev規則加載相應的設備驅動,比如:/etc/udev/50-udev.rules:
ACTION=="add", SUBSYSTEM=="?*", ENV{MODALIAS}=="?*", RUN+="modprobe $env{UDEV_MODPROBE_DBG} $env{MODALIAS}" -->
加載設備驅動時,讀/lib/modules/`uname -r `modules.alias文件(不是modprobe.conf文件),根據alias加載相應的驅動
modules.alias文件由內核根據每個內核模塊信息(modinfo中包含alias信息,即包括該驅動支持的硬件)中的alias信息統一生成。-->
當設備驅動加載時,在模塊初始化時調用pci_register_driver注冊pci_driver,其中包含pci_device_id,列舉驅動程序能處理的設備ID-->
PCI層使用該pci_device_id表查看已檢測到的PCI設備列表中與哪些設備匹配,於是建立該驅動程序的設備列表,對每個匹配的設備調用pci_driver的probe函數
注冊相關聯的設備(如網絡設備)。

Copyright © Linux教程網 All Rights Reserved