GNU/Linux >> Linux Esercitazione >  >> Debian

Linux – Debian non rileva la scheda PCI seriale dopo il riavvio?

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_TABLE macro 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_NNN dove 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_table per i dispositivi PCI, __mod_usb_device_table per dispositivi USB, ecc.
  • Il depmod il programma crea una mappatura di una tabella alias __mod_alias_NNN valori al nome del modulo. Questa tabella è memorizzata nel file modules.alias alla radice della directory dei moduli del kernel, ad es. /lib/modules/2.6.32-5-amd64/modules.alias .
    Crea anche file come modules.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.modprobe sysctl, che è /sbin/modprobe per impostazione predefinita. Il kernel passa un argomento a modprobe che indica quale driver è richiesto. Per un dispositivo PCI, questo è un nome come pci:v00009710d00009865sv*sd*bc*sc*i* .
  • modprobe cerca 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/*.conf e /lib/modules/$(uname -r)/modules.alias ), carica quel modulo.
    modprobe non caricherà un modulo che è stato inserito nella lista nera da una blacklist direttiva nei suoi file di configurazione.
Correlati:bash:errore di sintassi vicino al token imprevisto `}'?

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 .


Debian
  1. Linux Setuid non funziona?

  2. Linux – Il dispositivo Eth0 non sembra essere presente, ritardando l'inizializzazione?

  3. Il BIOS non rileva Ssd dopo il riavvio da Ubuntu 16.04 (dell Xps 15)?

  4. Il telefono Android non viene visualizzato in Lsusb dopo essere entrati in modalità "download"!?

  5. Il dispositivo Linux non mostra lo spazio su disco corretto dopo un ridimensionamento

Installazione di Firefox Debian

Comando non trovato – Percorso di /sbin mancante su Debian GNU/Linux

Scarica Debian Linux

Come riavviare Debian 10

Come rilevare e gestire i dispositivi su Linux

Apache non funziona su AWS Linux dopo il riavvio - Codice di risposta 301