GNU/Linux >> Tutoriales Linux >  >> Debian

Linux:¿Debian no detecta la tarjeta PCI serie después de reiniciar?

He instalado una tarjeta PCI con dos puertos serie y uno paralelo. el conjunto de chips es MCS9865 . Descargué el controlador más reciente (V1.0.12) desde aquí. Ejecuté make y make install . ahora los dos puertos seriales son /dev/ttyD0 y /dev/ttyD1 . Los he probado con picocom y está funcionando perfectamente. el problema es que cuando reinicio el sistema no aparece /dev/ttyD0 y /dev/ttyD1 . Necesito hacer otro make install . ¿Hay alguna solución?

salida de lspci -v muestra esto:

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 muestra esto:

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

Estoy ejecutando Debian 6.0.5 con la mayoría de los paquetes actualizados.

Respuesta aceptada:

La forma en que esto normalmente funciona es:

  • El código fuente del módulo contiene llamadas a MODULE_DEVICE_TABLE macro para declarar una tabla de identificadores de dispositivos compatibles con este módulo.
  • En el módulo compilado, los alias se almacenan como valores de símbolos llamados __mod_alias_NNN donde los NNN son números enteros. El valor codifica la identificación de bus para el dispositivo, p. pci:v00009710d00009865sv*sd*bc*sc*i* para el dispositivo PCI identificado como proveedor 0x9710, dispositivo 0x9865.
    También se almacenan con el nombre __mod_pci_device_table para dispositivos PCI, __mod_usb_device_table para dispositivos USB, etc.
  • El depmod el programa crea una asignación de tabla de alias __mod_alias_NNN valores al nombre del módulo. Esta tabla se almacena en el archivo modules.alias en la raíz del directorio de módulos del núcleo, p. /lib/modules/2.6.32-5-amd64/modules.alias .
    También crea archivos como modules.pcimap , modules.usbmap , …, que son utilizados por la infraestructura hotplug obsoleta que se ha incluido nuevamente en modprobe.
  • Cuando el kernel detecta un dispositivo para el que no hay ningún controlador presente, intenta cargar un módulo llamando al programa indicado por kernel.modprobe sysctl, que es /sbin/modprobe por defecto. El kernel pasa un argumento a modprobe que indica qué controlador se solicita. Para un dispositivo PCI, este es un nombre como pci:v00009710d00009865sv*sd*bc*sc*i* .
  • modprobe busca un módulo con el nombre dado. Si encuentra un módulo con el nombre solicitado (después de seguir el alias definido en sus archivos de configuración, que incluyen /etc/modprobe.d/*.conf y /lib/modules/$(uname -r)/modules.alias ), carga ese módulo.
    modprobe no cargará un módulo que haya sido incluido en una lista negra por una blacklist directiva en sus archivos de configuración.
Relacionado:bash:error de sintaxis cerca del token inesperado `}’?

Ejecute lspci -n para ver las identificaciones de PCI de su dispositivo y verifique la cadena anterior para ver dónde salió algo mal.

A veces, un controlador funciona para un dispositivo que es muy similar al dispositivo para el que está diseñado, pero tiene una identificación de PCI diferente. En ese caso, es posible que el controlador funcione, pero no se cargará automáticamente porque no declara la identificación PCI para su dispositivo. Puede agregar el alias manualmente en /etc/modprobe/my_aliases.conf .

Puede forzar que un módulo se cargue automáticamente en el momento del arranque agregando su nombre a /etc/modules .


Debian
  1. ¿Linux Setuid no funciona?

  2. Linux:¿el dispositivo Eth0 no parece estar presente, lo que retrasa la inicialización?

  3. Linux:¿Udev no cambia el nombre del dispositivo USB Ethernet?

  4. ¿Bios no detecta Ssd después de reiniciar desde Ubuntu 16.04 (dell Xps 15)?

  5. ¿Logitech M515 no funciona después de actualizar a 12.04?

Instalación de Firefox Debian

Comando no encontrado:falta la ruta a /sbin en Debian GNU/Linux

Descarga de Debian Linux

Cómo reiniciar Debian 10

Cómo detectar y administrar dispositivos en Linux

Apache no funciona en AWS Linux después de reiniciar:código de respuesta 301