g_mass_storage => udc-core를 사용하여 파일을 사용하여 USB 장치 에뮬레이션: 사용 가능한 UDC를 찾을 수 없음 - 보류 중인 드라이버 목록에 [g_mass_storage] 추가

g_mass_storage => udc-core를 사용하여 파일을 사용하여 USB 장치 에뮬레이션: 사용 가능한 UDC를 찾을 수 없음 - 보류 중인 드라이버 목록에 [g_mass_storage] 추가

이미지 파일에서 USB를 에뮬레이션하고 싶습니다.

Centos7을 사용하고 있습니다.커널 4.11.7kernel-ml통과 및 설치kernel-ml-devel 엘 레포 4.11.7-1.el7.elrepo.x86_64(실제로 3.10.* 4.10.* 4.11.1도 시도해봤습니다.)

우리는 2가지 솔루션을 가지고 있습니다:

  1. 그리고모듈 삽입

    sudo insmod /link/to/g_mass_storage.ko 파일=/tmp/filebin.imgstall=0 이동식=y

존재하다정보: udc-core: couldn't find an available UDC - added [g_mass_storage] to list of pending drivers

  1. 그리고모듈 프로브

    $ sudo modprobe g_mass_storage 파일=/tmp/testusb.imgstall=0 이동식=y modprobe: 치명적: 모듈 g_mass_storage를 찾을 수 없습니다. 안에는 아무것도 없어정보.

  2. 나도 시도했다virtual_hcd:

    $ sudo modprobe dummy_hcd modprobe: 치명적: 모듈 dummy_hcd를 찾을 수 없습니다.

이 문제를 어떻게 해결할 수 있나요?

가젯 등을 사용하여 모든 것을 활성화하여 커널 4.11.1을 다시 컴파일하는 등 많은 것을 시도했습니다.

/usr/src/kernels/4.11.7-1.el7.elrepo.x86_64 $ cat .config | grep CONFIG_USB_DUMMY_HCD
# CONFIG_USB_DUMMY_HCD is not set

결과: 커널을 컴파일한 후 바이너리를 사용하여 USB를 에뮬레이션할 수 있었습니다 modprobe dummy_hcd.

답변1

dummy_hcd가상(루프백) 호스트 컨트롤러 장치가 필요합니다 . Gadget USB 드라이버는 일반 PC에는 존재하지 않는 실제 USB 하드웨어용입니다. 루프백 컨트롤러는 가젯 컨트롤러용 프레임워크와 이에 액세스하는 USB 호스트 컨트롤러를 모두 제공합니다. 그래서:

$ sudo modprobe dummy_hcd

새로운 루트 허브를 제공합니다

$ lsusb
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

이제 modprobe 가젯 드라이버를 사용할 수 있습니다

$ sudo modprobe g_mass_storage file=/path/to/backing_file idVendor=0x1d6b idProduct=0x0104 iManufacturer=Myself iProduct=VirtualBlockDevice iSerialNumber=123

새 루트 허브 아래에 표시됩니다.

$ lsusb
Bus 005 Device 002: ID 0525:a4a5 Netchip Technology, Inc. Pocketbook Pro 903
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

파일 내용에만 관심이 있는 경우 USB 대용량 저장 장치를 에뮬레이션할 필요가 없으며 장치를 직접 마운트할 수 있습니다(장치를 루핑하여 자동으로 수행됨).

관련 정보