Saya telah memasang kartu PCI dengan dua serial dan satu port paralel di atasnya. chipsetnya adalah MCS9865
. Saya mengunduh driver terbaru (V1.0.12) dari sini. Saya menjalankan make
dan make install
. sekarang dua port serial adalah /dev/ttyD0
dan /dev/ttyD1
. Saya telah mengujinya dengan picocom
dan itu bekerja dengan sempurna. masalahnya adalah ketika saya me-reboot sistem tidak ada /dev/ttyD0
dan /dev/ttyD1
. Saya perlu melakukan make install
lagi . Apakah ada solusi?
keluaran lspci -v
menunjukkan ini:
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
menunjukkan ini:
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
Saya menjalankan debian 6.0.5 dengan paket terbaru.
Jawaban yang Diterima:
Cara kerjanya biasanya adalah:
- Kode sumber modul berisi panggilan ke
MODULE_DEVICE_TABLE
makro untuk mendeklarasikan tabel pengidentifikasi perangkat yang didukung modul ini. - Dalam modul yang dikompilasi, alias disimpan sebagai nilai simbol yang disebut
__mod_alias_NNN
di mana NNN adalah bilangan bulat. Nilai mengkodekan identifikasi bus untuk perangkat, mis.pci:v00009710d00009865sv*sd*bc*sc*i*
untuk perangkat PCI yang diidentifikasi sebagai vendor 0x9710, perangkat 0x9865.
Mereka juga disimpan dengan nama__mod_pci_device_table
untuk perangkat PCI,__mod_usb_device_table
untuk perangkat USB, dll. depmod
program membuat pemetaan tabel alias__mod_alias_NNN
nilai ke nama modul. Tabel ini disimpan dalam filemodules.alias
di root direktori modul kernel, mis./lib/modules/2.6.32-5-amd64/modules.alias
.
Ini juga membuat file sepertimodules.pcimap
,modules.usbmap
, …, yang digunakan oleh infrastruktur hotplug usang yang telah dimasukkan kembali ke modprobe.- Ketika kernel mendeteksi perangkat yang tidak memiliki driver, kernel mencoba memuat modul dengan memanggil program yang ditunjukkan oleh
kernel.modprobe
sysctl, yaitu/sbin/modprobe
secara default. Kernel meneruskan argumen kemodprobe
yang menunjukkan driver apa yang diminta. Untuk perangkat PCI, ini adalah nama sepertipci:v00009710d00009865sv*sd*bc*sc*i*
. modprobe
mencari modul dengan nama yang diberikan. Jika menemukan modul dengan nama yang diminta (setelah mengikuti alias yang ditentukan dalam file konfigurasinya, yang menyertakan/etc/modprobe.d/*.conf
dan/lib/modules/$(uname -r)/modules.alias
), itu memuat modul itu.modprobe
tidak akan memuat modul yang telah masuk daftar hitam olehblacklist
direktif dalam file konfigurasinya.
Jalankan lspci -n
untuk melihat ID PCI perangkat Anda, dan periksa rantai di atas untuk melihat di mana terjadi kesalahan.
Terkadang driver bekerja untuk perangkat yang sangat mirip dengan perangkat yang dimaksudkan, tetapi memiliki id PCI yang berbeda. Dalam hal ini, kemungkinan driver akan berfungsi, tetapi tidak akan dimuat secara otomatis karena tidak mendeklarasikan id PCI untuk perangkat Anda. Anda dapat menambahkan alias secara manual di /etc/modprobe/my_aliases.conf
.
Anda dapat memaksa modul untuk dimuat secara otomatis saat boot dengan menambahkan namanya ke /etc/modules
.