GNU/Linux >> Tutoriels Linux >  >> Debian

Linux – Debian ne détecte pas la carte PCI série après le redémarrage ?

J'ai installé une carte PCI avec deux ports série et un port parallèle. le chipset est MCS9865 . J'ai téléchargé le dernier pilote (V1.0.12) à partir d'ici. J'ai lancé make et make install . maintenant les deux ports série sont /dev/ttyD0 et /dev/ttyD1 . Je les ai testés avec picocom et cela fonctionne parfaitement. le problème est que lorsque je redémarre le système, il n'y a pas de /dev/ttyD0 et /dev/ttyD1 . Je dois faire un autre make install . Existe-t-il une solution ?

sortie de lspci -v affiche ceci :

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 affiche ceci :

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

J'utilise Debian 6.0.5 avec la plupart des packages mis à jour.

Réponse acceptée :

Voici comment cela fonctionne normalement :

  • Le code source du module contient des appels au MODULE_DEVICE_TABLE macro pour déclarer une table d'identificateurs d'appareils pris en charge par ce module.
  • Dans le module compilé, les alias sont stockés sous forme de valeurs de symboles appelés __mod_alias_NNN où les NNN sont des entiers. La valeur code l'identification de bus pour l'appareil, par ex. pci:v00009710d00009865sv*sd*bc*sc*i* pour le périphérique PCI identifié comme fournisseur 0x9710, périphérique 0x9865.
    Ils sont également stockés sous le nom __mod_pci_device_table pour les périphériques PCI, __mod_usb_device_table pour les périphériques USB, etc.
  • Le depmod le programme crée un mappage de table d'alias __mod_alias_NNN valeurs au nom du module. Cette table est stockée dans le fichier modules.alias à la racine du répertoire des modules du noyau, par ex. /lib/modules/2.6.32-5-amd64/modules.alias .
    Il crée également des fichiers comme modules.pcimap , modules.usbmap , …, qui sont utilisés par l'infrastructure hotplug obsolète qui a été réintégrée dans modprobe.
  • Lorsque le noyau détecte un périphérique pour lequel aucun pilote n'est présent, il essaie de charger un module en appelant le programme indiqué par le kernel.modprobe sysctl, qui est /sbin/modprobe par défaut. Le noyau passe un argument à modprobe qui indique quel pilote est demandé. Pour un périphérique PCI, il s'agit d'un nom tel que pci:v00009710d00009865sv*sd*bc*sc*i* .
  • modprobe recherche un module avec le nom donné. S'il trouve un module avec le nom demandé (après avoir suivi l'alias défini dans ses fichiers de configuration, qui incluent /etc/modprobe.d/*.conf et /lib/modules/$(uname -r)/modules.alias ), il charge ce module.
    modprobe ne chargera pas un module qui a été blacklisté par une blacklist directive dans ses fichiers de configuration.
En relation :bash :erreur de syntaxe près du jeton inattendu `} ?

Exécutez lspci -n pour voir les identifiants PCI de votre appareil et vérifiez la chaîne ci-dessus pour voir où quelque chose s'est mal passé.

Parfois, un pilote fonctionne pour un périphérique très similaire au périphérique auquel il est destiné, mais avec un identifiant PCI différent. Dans ce cas, il est possible que le pilote fonctionne, mais ne soit pas chargé automatiquement car il ne déclare pas l'identifiant PCI de votre appareil. Vous pouvez ajouter l'alias manuellement dans /etc/modprobe/my_aliases.conf .

Vous pouvez forcer le chargement automatique d'un module au démarrage en ajoutant son nom à /etc/modules .


Debian
  1. Debian 9 :Après la mise à jour depuis la 8, Mysql (mariadb) ne fonctionne plus ?

  2. Le Bios ne détecte pas le SSD après le redémarrage à partir d'Ubuntu 16.04 (Dell Xps 15) ?

  3. Logitech M515 ne fonctionne pas après la mise à niveau vers 12.04 ?

  4. Debian - l'interface réseau ne fonctionne plus après la mise à jour/mise à niveau

  5. PHP-FPM ne démarre pas automatiquement après le redémarrage

Installation Firefox Debian

Commande introuvable - Chemin manquant vers /sbin sur Debian GNU/Linux

Téléchargement Debian Linux

Comment redémarrer Debian 10

Comment détecter et gérer les appareils sous Linux

Apache ne fonctionne pas sur AWS Linux après le redémarrage - Code de réponse 301