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_TABLEmakro 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_NNNkde 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_tablepro zařízení PCI__mod_usb_device_tablepro zařízení USB atd. depmodprogram vytvoří mapování tabulky aliasů__mod_alias_NNNhodnoty k názvu modulu. Tato tabulka je uložena v souborumodules.aliasv kořenovém adresáři modulů jádra, např./lib/modules/2.6.32-5-amd64/modules.alias.
Vytváří také soubory jakomodules.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.modprobesysctl, což je/sbin/modprobeve výchozím stavu. Jádro předá argument domodprobekterý označuje, jaký ovladač je požadován. U zařízení PCI je to název jakopci:v00009710d00009865sv*sd*bc*sc*i*. modprobehledá 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/*.confa/lib/modules/$(uname -r)/modules.alias), načte tento modul.modprobenenačte modul, který byl nablacklistdirektivu ve svých konfiguračních souborech.
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 .