GNU/Linux >> Linux の 問題 >  >> Debian

Linux – Debianは再起動後にシリアルPciカードを検出しませんか?

2つのシリアルポートと1つのパラレルポートを備えたPCIカードをインストールしました。チップセットはMCS9865 。ここから最新のドライバー(V1.0.12)をダウンロードしました。 makeを実行しました およびmake install 。これで、2つのシリアルポートは/dev/ttyD0になります。 および/dev/ttyD1picocomでテストしました そしてそれは完全に機能しています。問題は、システムを再起動したときに/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

ほとんどのアップデートパッケージでdebian6.0.5を実行しています。

承認された回答:

これが通常機能する方法は次のとおりです。

  • モジュールのソースコードには、MODULE_DEVICE_TABLEへの呼び出しが含まれています このモジュールがサポートするデバイス識別子のテーブルを宣言するマクロ。
  • コンパイルされたモジュールでは、エイリアスは__mod_alias_NNNと呼ばれるシンボルの値として保存されます。 ここで、NNNは整数です。値は、デバイスのバスIDをエンコードします。 pci:v00009710d00009865sv*sd*bc*sc*i* ベンダー0x9710、デバイス0x9865として識別されるPCIデバイスの場合。
    これらは__mod_pci_device_tableという名前でも保存されます。 PCIデバイスの場合、__mod_usb_device_table USBデバイスなどの場合
  • depmod プログラムは、エイリアステーブルマッピングを作成します__mod_alias_NNN モジュール名の値。このテーブルは、ファイルmodules.aliasに保存されます。 カーネルモジュールディレクトリのルートにあります。例: /lib/modules/2.6.32-5-amd64/modules.alias
    modules.pcimapのようなファイルも作成します 、modules.usbmap 、…、modprobeに組み込まれた廃止されたホットプラグインフラストラクチャによって使用されます。
  • カーネルは、ドライバーが存在しないデバイスを検出すると、kernel.modprobeで示されるプログラムを呼び出してモジュールを読み込もうとします。 /sbin/modprobeであるsysctl デフォルトでは。カーネルは引数をmodprobeに渡します これは、どのドライバーが要求されているかを示します。 PCIデバイスの場合、これはpci:v00009710d00009865sv*sd*bc*sc*i*のような名前です。 。
  • modprobe 指定された名前のモジュールを検索します。要求された名前のモジュールが見つかった場合(/etc/modprobe.d/*.confを含む構成ファイルで定義されたエイリアスをたどった後) および/lib/modules/$(uname -r)/modules.alias )、そのモジュールをロードします。
    modprobe blacklistによってブラックリストに登録されたモジュールは読み込まれません 構成ファイルのディレクティブ。
関連:bash:予期しないトークン `}’の近くの構文エラー?

lspci -nを実行します デバイスのPCIIDを確認し、上のチェーンをチェックして、どこで問題が発生したかを確認します。

ドライバーは、対象のデバイスと非常によく似ているが、PCIIDが異なるデバイスで動作する場合があります。その場合、ドライバーは機能する可能性がありますが、デバイスのPCI IDが宣言されていないため、自動的に読み込まれません。 /etc/modprobe/my_aliases.confでエイリアスを手動で追加できます 。

モジュールの名前を/etc/modulesに追加することで、起動時にモジュールを強制的に自動的にロードできます。 。


Debian
  1. Linux Setuidが機能しませんか?

  2. Linux –Setuidが機能しないのはなぜですか??

  3. Debian 9:8からアップグレードした後、Mysql(mariadb)は機能しなくなりましたか?

  1. Linux –デバイスEth0が存在しないようで、初期化が遅れていますか?

  2. Linux – UdevはUsbイーサネットデバイスの名前を変更しませんか?

  3. BIOSはUbuntu16.04(dell Xps 15)からの再起動後にSsdを検出しませんか?

  1. 「ダウンロード」モードに入った後、Android携帯がLsusbに表示されない!?

  2. Linuxデバイスは、サイズ変更後に正しいディスク容量を表示しません

  3. 再起動後に Linux RAID が消える