데비안 재부팅 후 직렬 PCI 카드가 감지되지 않습니다

데비안 재부팅 후 직렬 PCI 카드가 감지되지 않습니다

직렬 포트 2개와 병렬 포트 1개가 있는 PCI 카드를 설치했습니다. 칩셋은 입니다 MCS9865. 최신 드라이버(V1.0.12)를 다운로드했습니다.여기. 나는 make달렸다 make install. 이제 두 개의 직렬 포트는 /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

저는 최신 패키지로 데비안 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

관련 정보