Ho installato una scheda PCI con due porte seriali e una parallela. il chipset è MCS9865 . Ho scaricato l'ultimo driver (V1.0.12) da qui. Ho eseguito make e make install . ora le due porte seriali sono /dev/ttyD0 e /dev/ttyD1 . Li ho testati con picocom e funziona perfettamente. il problema è che quando riavvio il sistema non c'è /dev/ttyD0 e /dev/ttyD1 . Devo fare un altro make install . C'è qualche soluzione?
output di lspci -v mostra questo:
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 mostra questo:
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
Sto eseguendo debian 6.0.5 con la maggior parte dei pacchetti aggiornati.
Risposta accettata:
Il modo in cui funziona normalmente è:
- Il codice sorgente del modulo contiene chiamate al
MODULE_DEVICE_TABLEmacro per dichiarare una tabella di identificatori di dispositivo supportati da questo modulo. - Nel modulo compilato, gli alias sono memorizzati come valori di simboli chiamati
__mod_alias_NNNdove gli NNN sono numeri interi. Il valore codifica l'identificazione bus per il dispositivo, ad es.pci:v00009710d00009865sv*sd*bc*sc*i*per il dispositivo PCI identificato come fornitore 0x9710, dispositivo 0x9865.
Sono inoltre memorizzati con il nome__mod_pci_device_tableper i dispositivi PCI,__mod_usb_device_tableper dispositivi USB, ecc. - Il
depmodil programma crea una mappatura di una tabella alias__mod_alias_NNNvalori al nome del modulo. Questa tabella è memorizzata nel filemodules.aliasalla radice della directory dei moduli del kernel, ad es./lib/modules/2.6.32-5-amd64/modules.alias.
Crea anche file comemodules.pcimap,modules.usbmap, …, che vengono utilizzati dall'infrastruttura hotplug obsoleta che è stata reintegrata in modprobe. - Quando il kernel rileva un dispositivo per il quale non è presente alcun driver, prova a caricare un modulo chiamando il programma indicato da
kernel.modprobesysctl, che è/sbin/modprobeper impostazione predefinita. Il kernel passa un argomento amodprobeche indica quale driver è richiesto. Per un dispositivo PCI, questo è un nome comepci:v00009710d00009865sv*sd*bc*sc*i*. modprobecerca un modulo con il nome dato. Se trova un modulo con il nome richiesto (dopo aver seguito l'alias definito nei suoi file di configurazione, che includono/etc/modprobe.d/*.confe/lib/modules/$(uname -r)/modules.alias), carica quel modulo.modprobenon caricherà un modulo che è stato inserito nella lista nera da unablacklistdirettiva nei suoi file di configurazione.
Esegui lspci -n per vedere gli ID PCI del tuo dispositivo e controlla la catena sopra per vedere dove qualcosa è andato storto.
A volte un driver funziona per un dispositivo molto simile al dispositivo a cui è destinato, ma ha un ID PCI diverso. In tal caso, è possibile che il driver funzioni, ma non venga caricato automaticamente perché non dichiara l'ID PCI per il tuo dispositivo. Puoi aggiungere l'alias manualmente in /etc/modprobe/my_aliases.conf .
Puoi forzare il caricamento automatico di un modulo all'avvio aggiungendo il suo nome a /etc/modules .