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 archivomodules.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 comomodules.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 amodprobe
que indica qué controlador se solicita. Para un dispositivo PCI, este es un nombre comopci: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 unablacklist
directiva en sus archivos de configuración.
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
.