私はBeagleBone Blackで指定されたArchLinuxを使用しており、一部のWi-Fiアダプタにドライバの問題があるため、テスト環境でガジェットドライバ(g_printer、g_serial)を使用しています。このドライバはLinux 4.19と互換性がありません。
いくつかの問題が発生した後、Raspberry Pi 3+に移動し、この場合、提供されたDebianイメージがより便利であることが気に入りました。
別のテストでこの画像を使用しようとしていますが、次のメッセージが表示されます。
sudo modprobe g_printer
dmesg | tail
[321.445928] udc-core:利用可能なUDCがありません。保留中のドライバのリストに[プリンタ]を追加します。
また、すべてのモジュールを削除してみました。
sudo modprobe -rf g_ether
sudo modprobe -rf usb_f_mass_storage
しかし、使いやすいインターフェースを提供するために Debian イメージで使用されています。私はそれらをすべて削除する方法を見つけることができませんでした。
起動時に何かを変更する必要があります。しかし、ロードを避けるためにスクリプトをどこで見つけて変更できますか?
答え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する方法役に立ちました。