
저는 BeagleBone Black에서 지정된 ArchLinux를 사용하고 있으며 일부 Wi-Fi 어댑터에 드라이버 문제가 있기 때문에 테스트 환경에서 가젯 드라이버(g_printer, g_serial)를 사용하고 있습니다. 이 드라이버는 Linux 4.19와 호환되지 않습니다.
몇 가지 문제를 겪은 후 Raspberry Pi 3+로 옮겼고 이 경우 제공된 데비안 이미지가 더 유용하다는 점이 맘에 들었습니다.
이제 다른 테스트에 이 이미지를 사용하려고 하는데 다음 메시지가 나타납니다.
sudo modprobe g_printer
dmesg | tail
[321.445928] udc-core: 사용 가능한 UDC가 없습니다. 보류 중인 드라이버 목록에 [프린터]를 추가하세요.
또한 모든 모듈을 제거해 보았습니다.
sudo modprobe -rf g_ether
sudo modprobe -rf usb_f_mass_storage
그러나 사용하기 쉬운 인터페이스를 제공하기 위해 데비안 이미지에서 사용되었습니다. 나는 그것들을 모두 제거하는 방법을 찾지 못했습니다.
시작 시 뭔가를 변경해야 합니다. 하지만 로드를 피하기 위해 스크립트를 어디서 어떻게 찾아 변경할 수 있습니까?
답변1
글쎄, 각 파일에서 재귀적으로 검색하여 USB0 인터페이스가 로드된 위치나 각 파일에 사용된 드라이버 검색을 시작할 수 있습니다.
sudo grep -r "usb0" /
입력을 따르고 충분히 느린 경우 /opt/scripts/boot/에 일부 스크립트가 표시됩니다. grep은 결국 충돌할 것입니다.
debian@beaglebone:~$ ls /opt/scripts/boot/
am335x_evm.sh autoconfigure_usb1.sh capemgr.sh generic.sh legacy omap5_uevm.sh
autoconfigure_usb0.sh~ beagle_x15.sh default generic-startup.sh omap3_beagle.sh
debian@beaglebone:~$
보시다시피 "~"를 추가하여 autoconfigure_usb0.sh가 로드되는 것을 방지하고 싶습니다. 그러나 이것은 도움이 되지 않습니다. 인터페이스가 생성되고 드라이버가 로드되었습니다.
그래서 configfs를 사용하여 g_multi 드라이버를 조작하여 드라이버를 병렬로 로드하기 위해 am335x_evm.sh를 편집하기로 했습니다.
다음 줄을 추가했습니다.
USB_NETWORK_DISABLED="yes"
USB_IMAGE_FILE_DISABLED="yes"
그러나 이것은 ifs 내부의 로딩을 피하지 않습니다. 실제로 이유를 이해하지 못하지만 환경 변수가 스크립트 시작 부분에서 해석되거나 다음 ifs를 트리거하기 위해 올바른 값을 설정하지 않은 것 같습니다.
if [ ! "x${USB_NETWORK_DISABLED}" = "xyes" ]; then
그래서 나는 다음을 사용하여 파일을 이동합니다.
mv /opt/scripts/boot/am335x_evm.sh /opt/scripts/boot/am335x_evm.sh~
그리고 시스템을 다시 시작하세요
sudo shutdown -r now
음, 가젯 드라이버 g_printer를 사용할 수 있습니다.
다음 링크가 도움이 되었습니다. 비글뼈 때문에 고민이 너무 많으신 분들은 비글대화방에서 최소한 몇시간은 투자해보세요비글 뼈 주변의 채팅 그룹
다시 말하면 /opt/scripts/boot/ 폴더와 여러 드라이버를 동적으로 로드하는 다양한 방법을 가리킵니다.드라이버가 여러 드라이버 인스턴스를 로드합니다.그리고 제공되는 인터페이스커널 USB 가젯 구성 인터페이스.
재귀적으로 grep하는 방법도움이되었습니다.