GNU/Linux >> Znalost Linux >  >> Debian

Linux – Debian po restartu nerozpozná sériovou kartu PCI?

Nainstaloval jsem PCI kartu se dvěma sériovými a jedním paralelním portem. čipová sada je MCS9865 . Stáhl jsem si nejnovější ovladač (V1.0.12) odtud. Spustil jsem make a make install . nyní jsou dva sériové porty /dev/ttyD0 a /dev/ttyD1 . Testoval jsem je pomocí picocom a funguje to perfektně. problém je v tom, že když restartuji systém, žádné /dev/ttyD0 a /dev/ttyD1 . Potřebuji provést další make install . Existuje nějaké řešení?

výstup lspci -v ukazuje toto:

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 ukazuje toto:

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

Používám debian 6.0.5 s většinou aktualizovaných balíčků.

Přijatá odpověď:

Běžně to funguje takto:

  • Zdrojový kód modulu obsahuje volání MODULE_DEVICE_TABLE makro pro deklaraci tabulky identifikátorů zařízení, které tento modul podporuje.
  • V zkompilovaném modulu jsou aliasy uloženy jako hodnoty symbolů nazvaných __mod_alias_NNN kde NNN jsou celá čísla. Hodnota kóduje identifikaci sběrnice pro zařízení, např. pci:v00009710d00009865sv*sd*bc*sc*i* pro zařízení PCI identifikované jako vendor 0x9710, zařízení 0x9865.
    Jsou také uloženy pod názvem __mod_pci_device_table pro zařízení PCI __mod_usb_device_table pro zařízení USB atd.
  • depmod program vytvoří mapování tabulky aliasů __mod_alias_NNN hodnoty k názvu modulu. Tato tabulka je uložena v souboru modules.alias v kořenovém adresáři modulů jádra, např. /lib/modules/2.6.32-5-amd64/modules.alias .
    Vytváří také soubory jako modules.pcimap , modules.usbmap , …, které používá zastaralá hotplug infrastruktura, která byla zahrnuta zpět do modprobe.
  • Když jádro detekuje zařízení, pro které není přítomen žádný ovladač, pokusí se načíst modul voláním programu označeného kernel.modprobe sysctl, což je /sbin/modprobe ve výchozím stavu. Jádro předá argument do modprobe který označuje, jaký ovladač je požadován. U zařízení PCI je to název jako pci:v00009710d00009865sv*sd*bc*sc*i* .
  • modprobe hledá modul s daným názvem. Pokud nalezne modul s požadovaným názvem (po následování aliasu definovaného v jeho konfiguračních souborech, které zahrnují /etc/modprobe.d/*.conf a /lib/modules/$(uname -r)/modules.alias ), načte tento modul.
    modprobe nenačte modul, který byl na blacklist direktivu ve svých konfiguračních souborech.
Související:bash:chyba syntaxe poblíž neočekávaného tokenu `}'?

Spusťte lspci -n abyste viděli PCI ID vašeho zařízení, a zkontrolujte řetězec výše, abyste viděli, kde se něco pokazilo.

Někdy ovladač funguje pro zařízení, které je velmi podobné zařízení, pro které je určeno, ale má jiné PCI id. V takovém případě je možné, že ovladač bude fungovat, ale nenačte se automaticky, protože nedeklaruje PCI id pro vaše zařízení. Alias ​​můžete přidat ručně v /etc/modprobe/my_aliases.conf .

Můžete vynutit automatické načtení modulu při bootování přidáním jeho názvu do /etc/modules .


Debian
  1. Linux – Proč Setuid nefunguje?

  2. Linux – Device Eth0 se nezdá být přítomen, zpožďuje se inicializace?

  3. Logitech M515 nefunguje po upgradu na 12.04?

  1. Zařízení Linux po změně velikosti nezobrazuje správné místo na disku

  2. Debian - síťové rozhraní po aktualizaci/upgradu již nefunguje

  3. Linuxový raid po restartu zmizí

  1. Linux Setuid nefunguje?

  2. Debian 9:Po upgradu z 8 již Mysql (mariadb) nefunguje?

  3. Linux – Udev nepřejmenuje zařízení USB Ethernet?