Linux
Debian 重新啟動後未檢測到串列 PCI 卡
我已經安裝了一個帶有兩個串列和一個並行埠的 PCI 卡。晶片組是
MCS9865
。我從這裡下載了最新的驅動程序(V1.0.12)。我跑make
了make install
。現在兩個串口是/dev/ttyD0
和/dev/ttyD1
。我已經對它們進行了測試,picocom
並且執行良好。問題是當我重新啟動系統時沒有/dev/ttyD0
and/dev/ttyD1
。我需要再做一個make install
。有什麼解決辦法嗎?的輸出
lspci -v
顯示:03:01.0 Serial controller: NetMos Technology PCI 9865 Multi-I/O Controller (prog-if 02 [16550]) Subsystem: Device a000:1000 Flags: bus master, medium devsel, latency 32, IRQ 19 I/O ports at df00 [size=8] Memory at fbeff000 (32-bit, non-prefetchable) [size=4K] Memory at fbefe000 (32-bit, non-prefetchable) [size=4K] Capabilities: [48] Power Management version 2 Kernel driver in use: mcs9865-serial 03:01.1 Serial controller: NetMos Technology PCI 9865 Multi-I/O Controller (prog-if 02 [16550]) Subsystem: Device a000:1000 Flags: bus master, medium devsel, latency 32, IRQ 18 I/O ports at de00 [size=8] Memory at fbefd000 (32-bit, non-prefetchable) [size=4K] Memory at fbefc000 (32-bit, non-prefetchable) [size=4K] Capabilities: [48] Power Management version 2 Kernel driver in use: mcs9865-serial 03:01.2 Parallel controller: NetMos Technology PCI 9865 Multi-I/O Controller (prog-if 03 [IEEE1284]) Subsystem: Device a000:2000 Flags: bus master, medium devsel, latency 32, IRQ 7 I/O ports at dd00 [size=8] I/O ports at dc00 [size=8] Memory at fbefb000 (32-bit, non-prefetchable) [size=4K] Memory at fbefa000 (32-bit, non-prefetchable) [size=4K] Capabilities: [48] Power Management version 2
make install
顯示了這一點:cp mcs9865.ko mcs9865-isa.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/serial/ depmod -A chmod +x mcs9865 cp mcs9865 /etc/init.d/ ln -s /etc/init.d/mcs9865 /etc/rcS.d/S99mcs9865 || true ln: creating symbolic link `/etc/rcS.d/S99mcs9865': File exists modprobe mcs9865 modprobe mcs9865-isa
我正在使用最新的軟體包執行 debian 6.0.5。
這通常的工作方式是:
- 模組原始碼包含對宏的呼叫,
MODULE_DEVICE_TABLE
以聲明該模組支持的設備標識符表。- 在編譯的模組中,別名儲存為稱為符號的值,
__mod_alias_NNN
其中 NNN 是整數。該值對設備的匯流排標識進行編碼,例如pci:v00009710d00009865sv*sd*bc*sc*i*
,對於標識為供應商 0x9710、設備 0x9865 的 PCI 設備。它們還
__mod_pci_device_table
以 PCI 設備、__mod_usb_device_table
USB 設備等的名稱儲存。
- 該
depmod
程序創建一個別名表,將__mod_alias_NNN
值映射到模組名稱。該表儲存在modules.alias
核心模組目錄根目錄的文件中,例如/lib/modules/2.6.32-5-amd64/modules.alias
.它還會創建像
modules.pcimap
,modules.usbmap
, … 這樣的文件,這些文件供已被歸入 modprobe 的過時熱插拔基礎設施使用。
- 當核心檢測到沒有驅動程序存在的設備時,它會嘗試通過呼叫
kernel.modprobe
sysctl指示的程序來載入模組,這是/sbin/modprobe
預設情況下的。核心傳遞一個參數來modprobe
指示請求的驅動程序。對於 PCI 設備,這是一個類似pci:v00009710d00009865sv*sd*bc*sc*i*
.modprobe
搜尋具有給定名稱的模組。如果它找到具有請求名稱的模組(在其配置文件中定義的別名之後,其中包括/etc/modprobe.d/*.conf
和/lib/modules/$(uname -r)/modules.alias
),它會載入該模組。
modprobe
不會載入已被blacklist
配置文件中的指令列入黑名單的模組。執行
lspci -n
以查看設備的 PCI id,並檢查上面的鏈以查看哪裡出了問題。有時,驅動程序適用於與其預期的設備非常相似但具有不同 PCI id 的設備。在這種情況下,驅動程序可能會工作,但不會自動載入,因為它沒有為您的設備聲明 PCI id。您可以在 中手動添加別名
/etc/modprobe/my_aliases.conf
。您可以通過將模組名稱添加到
/etc/modules
.