Debian 再起動後にシリアル PCI カードが検出されない

Debian 再起動後にシリアル PCI カードが検出されない

2つのシリアルポートと1つのパラレルポートを持つPCIカードを取り付けました。チップセットはですMCS9865。最新のドライバ(V1.0.12)をダウンロードしました。ここ。私はmake走ったmake install。 2つのシリアルポートは/dev/ttyD0sumです/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.pcimapmodules.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

関連情報