Linux 核心啟動時如何發現硬體並載入對應驅動?本文梳理從 PCI 總線掃描到驅動 probe 的完整路徑。
struct pci_dev 列表。add 事件至 udev。/etc/udev/rules.d/ 規則(如 50-udev.rules),執行 modprobe $env{MODALIAS}。modprobe 讀取 /lib/modules/$(uname -r)/modules.alias,依 MODALIAS 找到對應模組(如 pci:v00008086d0000100E...)。pci_register_driver(),提供 struct pci_driver 包含 pci_device_id 表(支援的裝置 ID 列表)。pci_device_id 比對已掃描裝置列表,匹配成功則呼叫驅動的 probe() 函數。probe() 內通常註冊網路裝置(register_netdev)、區塊裝置等,完成驅動掛載。lspci -vv:查看 PCI 裝置詳細資訊(含驅動名稱)。/sys/bus/pci/devices/:sysfs 暴露的 PCI 裝置樹。modinfo <module> | grep alias:查看模組支援的硬體 ID。udevadm monitor:即時觀察 uevent 事件。理解此流程有助於除錯驅動未載入、裝置未被識別等問題。