![제공된 Beagle Bone Black Debian 이미지가 가젯 드라이버가 로드되지 않는 방식으로 구성되는 것을 방지하려면 어떻게 해야 합니까?](https://linux55.com/image/145615/%EC%A0%9C%EA%B3%B5%EB%90%9C%20Beagle%20Bone%20Black%20Debian%20%EC%9D%B4%EB%AF%B8%EC%A7%80%EA%B0%80%20%EA%B0%80%EC%A0%AF%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%EA%B0%80%20%EB%A1%9C%EB%93%9C%EB%90%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EB%B0%A9%EC%8B%9D%EC%9C%BC%EB%A1%9C%20%EA%B5%AC%EC%84%B1%EB%90%98%EB%8A%94%20%EA%B2%83%EC%9D%84%20%EB%B0%A9%EC%A7%80%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
저는 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하는 방법도움이되었습니다.