2つのシリアルポートと1つのパラレルポートを持つPCIカードを取り付けました。チップセットはですMCS9865
。最新のドライバ(V1.0.12)をダウンロードしました。ここ。私はmake
走ったmake install
。 2つのシリアルポートは/dev/ttyD0
sumです/dev/ttyD1
。私はそれらをテストし、うまくpicocom
動作します。問題は、システムを再起動するときと/dev/ttyD0
存在しないことです/dev/ttyD1
。やり直す必要がありますmake install
。解決策はありますか?
出力には以下がlspci -v
表示されます。
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
これを見せてください:
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
私は最新のパッケージでDebian 6.0.5を実行しています。
答え1
一般的な動作方法は次のとおりです。
- モジュールのソースコードに
MODULE_DEVICE_TABLE
このモジュールでサポートされているデバイス識別子テーブルを宣言するマクロ。 - コンパイルされたモジュールでは、エイリアスはシンボル値として保存されます。
__mod_alias_NNN
ここで、NNNは整数です。この値はデバイスのバスIDをエンコードします。たとえば、pci:v00009710d00009865sv*sd*bc*sc*i*
PCI デバイスは次のように識別されます。プロバイダ0x9710、デバイス0x9865。また、PCIデバイス、USBデバイスなどの名前
で保存されます。__mod_pci_device_table
__mod_usb_device_table
- これ
depmod
プログラムは、__mod_alias_NNN
値をモジュール名にマップするエイリアステーブルを生成します。このテーブルはmodules.alias
カーネルモジュールのルートにあるファイルに保存されます。たとえば、modprobeに統合された古いホットプラグインフラストラクチャで使用される、、...などのファイルも作成します/lib/modules/2.6.32-5-amd64/modules.alias
。
modules.pcimap
modules.usbmap
- カーネルがドライバーを持たないデバイスを検出した場合は、以下を呼び出してこれを試してください。
kernel.modprobe
システム制御今すぐ/sbin/modprobe
基本的に。カーネルには、modprobe
要求するドライバを表すパラメータが渡されます。 PCIデバイスの場合、名前はpci:v00009710d00009865sv*sd*bc*sc*i*
。 modprobe
特定の名前のモジュールを検索します。要求された名前のモジュールが見つかったら(および/etc/modprobe.d/*.conf
を含む構成ファイルで定義されているエイリアスに従った後/lib/modules/$(uname -r)/modules.alias
)、モジュールをロードします。設定ファイルのディレクティブによってブラックリストに追加されたモジュールは
modprobe
ロードされません。blacklist
実行してlspci -n
デバイスのPCI IDを確認し、上記のチェーンを確認して何が間違っているかを確認してください。
時々、ドライバはターゲットデバイスと非常によく似ていますが、PCI IDが異なるデバイス用のものもあります。この場合、ドライバは機能できますが、デバイスのPCI IDを要求しないため、自動的にロードされません。でエイリアスを手動で追加できます/etc/modprobe/my_aliases.conf
。
にモジュール名を追加するだけです/etc/modules
。
答え2
クイックフィックスは、再起動するたびに実行することです。
modprobe mcs9865
modprobe mcs9865-isa
私にはカーネルモジュールが自動的に挿入されないようです。
初期化スクリプトがあるので、デフォルトのランレベルに追加するだけです。
sudo update-rc.d mcs9865 defaults