問題タブ [udev]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - Bashスクリプトは、コマンドが適切に実行されるまで待機しません
私は非常に単純なスクリプトに取り組んでいますが、何らかの理由でその一部が非同期で実行されているようです。
スリープの呼び出しの前に見られるように、スクリプトはその仕事を部分的にしか終えていません。partedが正常に機能するまでスクリプトを待機させるにはどうすればよいですか?
c# - Mono アプリケーションが終了しない
Mono で実行され、udev ルールによって呼び出されるアプリケーションを作成しました。
アプリケーションはコンソール上で問題なく機能します。さらに、udevAPP+=
スタンザから正常に動作します。しかし、私が組み立てた新しい Gentoo システムでは、PROGRAM=
スタンザから呼び出されたときにプログラムが終了することはありません。私も持っているUbuntuシステムでは、PROGRAM=
スタンザから呼び出すとうまくいきます。どちらのシステムも同じバージョンの Mono を共有しています。
さらに、他のプログラム (Mono 以外) からの呼び出しPROGRAM=
は、両方のシステムで正常に機能します。これは間違いなく Mono と呼び出し環境の問題です。
私は gdb を使用しましたが、プログラムがセマフォの待機中にスタックしているようです。コンソール出力では、これが C# コードの終了後に発生することが確認されています。ガベージ コレクターにあるようです。gdb のスクリーンショットは次のとおりです。
バグを報告しますが、これが環境問題かどうかはまだわかりません。結局、Ubuntu で問題なく動作します。
どんな援助でも大歓迎です。
linux - デバイスノードを作成および削除するときのmdevレーシング
最近、私はmdev
を置き換えていましたudev
。と比較するとudevd
、mdev
実際に多くのメモリ使用量を節約できます。構成は次のとおりです。
で
/etc/mdev.conf
、デバイスがと一致した場合sd[a-z][0-9]
、スクリプトusbmount_wrapper
は「デバイスの作成後と削除前」の両方で呼び出されますsd [az] [0-9] 0:0 660 * / usbmount_wrapper
では、 debian
usbmount_wrapper
の効用と呼びました。usbmount
この構成は、ホットプラグイベントに対して正常に機能します(プラグインされたデバイスで下のノード/dev
が作成され、パーティションが正しくマウントされ、プラグが抜かれたデバイスでパーティションがアンマウントされ、デバイスノードが削除されます)。
fdisk
ツールでディスクをフォーマットしようとしたときに問題が発生しました。ホットプラグイベントをダンプすることにより、イベントシーケンスは:すべての古いパーティションを削除->すべての新しく作成されたパーティションを追加します。ls /dev/sd*
直後に実行するとfdisk
、これらの新しいパーティションの新しいデバイスノードが表示され、数秒後にこれらのパーティションが削除されます。に競合状態があり、デバイスノードが最初に作成されてから削除されると結論付けることができmdev
ます。これは、ホットプラグイベントのシーケンスとは逆です。私も作成しようとしまし/dev/mdev.seq
たが、問題は解決しません。mdev
バージョンは1.17busybox
からです
誰かがmdev
同じ問題を試し、遭遇した場合は、アドバイスをお願いします。事前にあなたの助けと感謝に感謝します。
linux - Linux: USB ドライバーをデバイスに割り当てる方法
この質問には 2 つの要素があります。
1- USB デバイスからドライバーを手動で切り離し、別のドライバーを接続するにはどうすればよいですか? たとえば、接続時に自動的に usb-storage ドライバーを使用するデバイスがあります。
// usbview 出力
usb-storage ドライバーを使用したくないので、libusb ライブラリーを使用して usb-storage ドライバーをデタッチし、インターフェースを要求するホスト上でアプリケーションを実行しています。その後、USB デバイスとホスト Linux システムで実行されているアプリケーションとの間でデータを送受信できます。
アプリケーションの外部でドライバーを手動で切り離すにはどうすればよいですか?
2- デバイス プラグインに接続するドライバーを自動的に割り当てるにはどうすればよいですか。現在、デバイスのアクセス許可を自動的に設定する udev ルールをセットアップしています。
udev ルールを使用して、USB デバイスの特定のインターフェイスにドライバーを割り当てることはできますか? たとえば、usbnet モジュールを usb-storage の代わりにインターフェイス 0 で自動的に使用したい場合、udev でそれは可能ですか?
ありがとう、
(StackExchange が異なるサイトでどのように機能するか、またはそれらがすべて同じであるかについて少し混乱しています。これは Linux の質問なので、Unix と Linux にも投稿されました。ここにも投稿すべきではない場合は、ご容赦ください。しかし、StackOverflow は Linux も扱うので...)
c++ - libudevの奇妙な動作v1.7.2以降
libudevで特定の問題に直面しています。USB経由で接続されたデバイスを常にリッスンし続けるリスナースレッドを作成しました。継続的なwhileループの開始時にlibudevAPIudev_monitor_receive_deviceを使用しました。これは、ブロッキング呼び出しであるためです。ソースはlibudevv1.6.3で正常に動作しますが、v1.7.2にアップグレードすると、udev_monitor_receive_deviceの呼び出しがブロックされなくなり、whileループが継続的に実行され、APIがNULLを返し続けます。以下は、私のコードでのlibudevの使用法を理解するのに役立つコードの一部です。
この問題は長い間私を悩ませてきました。どんな助けでもいただければ幸いです。
linux - udevでデバイスを識別する方法
libudevを使用して特定のデバイスを監視したいと思います。具体的には、リムーバブルストレージ(USBハードドライブ、USBキー、SDカードなど)を監視したいと思います。libudevAPIを使用すると、デバイスの親の「サブシステム」と「devtype」がわかっている場合にデバイスを見つけることができます。コンピューターでデバイスを試してみて、udevadmを使用して、すべてのストレージタイプに「block」->「scsi」のデバイスサブシステムがあることを確認しましたが、これらのデバイスのdevtypeが何であるかわかりません。どこかで参照として使用できるdevtypeとサブシステムのリスト、またはdevtypeを検索するためのより良い方法はありますか?
c++ - libudev を使用して Linux でマウントされたドライブに関する情報を取得する
libudev を使用してストレージ デバイス (USB キーなど) を監視し、それらが変更されたときにプログラムで通知を受け取るようにしています。Libudev は、デバイスが追加、削除などされたかどうかを通知し、デバイス ノードを提供します。たとえば、システムに SD カードを追加すると、libudev は「/dev/mmcblk0p1」が追加されたことを通知します。こうなったら、デバイスのマウントポイントも取得したい。そのため、/proc/mounts をチェックして、デバイスがマップされているマウント パスを確認します。
これは問題なく動作しているように見えますが、デバイスをマウントする前、デバイスをマウントした後、またはその間のどこかで libudev がデバイスが追加されたというシグナルを送信するかどうかはわかりません (つまり、/proc/信号を受け取った直後にファイルをマウントするのは信頼できない方法です)。
私の質問は、libudev がいつシグナルを送信したか、デバイスのマウント パスを取得するために使用した方法が信頼できるかどうかを知っている人はいますか?
そうでない場合、信頼できるデバイス ノードを指定してマウント パスを取得する別の方法はありますか?
よろしく、
プリス
bash - udevadm を使用して bash で USB シリアル コードを読み取る
udevadm コマンドを使用して、bash で USB の一意の ID を読み取ろうとしています。使用されるコマンドは次のとおりです。
通常のUSBストレージを使用している間は適切に出力されますが、
しかし、mp3プレーヤーを使用すると、出力は次のようになります。
USB ストレージの ID_SERIAL_SHORT 以外に固有のものはありますか?
ありがとう
android - Androidでlibudevを使用する方法
低レベルの監視アプリケーションの一部として、sysfs の変更を監視する必要があるため、inotify の代わりに udev インターフェイスを使用する必要があります。ほとんどの Android デバイスと、このアプリケーションを実際に実行する必要があるすべてのデバイスが、デバイスの列挙とポリシーの適用に udev を使用していることは明らかです。C アプリケーションから udev を操作する標準的な方法は、libudev (libudev.h) を使用することですが、/lib ディレクトリには libudev.so がなく、include ディレクトリもまったくありません。したがって、このライブラリの ARM ポートを取得するか、ここでいくつかの回避策を実行する必要があります。私はクロスコンパイルと libudev 固有の質問が苦手なので、この問題を解決してください。
注: このアプリケーションを実行するすべてのデバイスで root アクセス権を持っています。
linux - USB デバイスが接続されているときにユーザーから入力を受け取る
udev ルール (RUN コマンド) を使用して USB デバイスが接続されているときにスクリプトを実行し、notify-send を使用して通知を表示しています。
ユーザーに USB への入力を求めるプロンプトが表示されるようにします。どうすればいいですか?