이미지 파일에서 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가지 솔루션을 가지고 있습니다:
그리고모듈 삽입
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
그리고모듈 프로브
$ sudo modprobe g_mass_storage 파일=/tmp/testusb.imgstall=0 이동식=y modprobe: 치명적: 모듈 g_mass_storage를 찾을 수 없습니다. 안에는 아무것도 없어정보.
나도 시도했다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 대용량 저장 장치를 에뮬레이션할 필요가 없으며 장치를 직접 마운트할 수 있습니다(장치를 루핑하여 자동으로 수행됨).