問題タブ [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.

0 投票する
2 に答える
1944 参照

linux - Bashスクリプトは、コマンドが適切に実行されるまで待機しません

私は非常に単純なスクリプトに取り組んでいますが、何らかの理由でその一部が非同期で実行されているようです。

スリープの呼び出しの前に見られるように、スクリプトはその仕事を部分的にしか終えていません。partedが正常に機能するまでスクリプトを待機させるにはどうすればよいですか?

0 投票する
0 に答える
191 参照

c# - Mono アプリケーションが終了しない

Mono で実行され、udev ルールによって呼び出されるアプリケーションを作成しました。

アプリケーションはコンソール上で問題なく機能します。さらに、udevAPP+=スタンザから正常に動作します。しかし、私が組み立てた新しい Gentoo システムでは、PROGRAM=スタンザから呼び出されたときにプログラムが終了することはありません。私も持っているUbuntuシステムでは、PROGRAM=スタンザから呼び出すとうまくいきます。どちらのシステムも同じバージョンの Mono を共有しています。

さらに、他のプログラム (Mono 以外) からの呼び出しPROGRAM=は、両方のシステムで正常に機能します。これは間違いなく Mono と呼び出し環境の問題です。

私は gdb を使用しましたが、プログラムがセマフォの待機中にスタックしているようです。コンソール出力では、これが C# コードの終了後に発生することが確認されています。ガベージ コレクターにあるようです。gdb のスクリーンショットは次のとおりです。

ここに画像の説明を入力

バグを報告しますが、これが環境問題かどうかはまだわかりません。結局、Ubuntu で問題なく動作します。

どんな援助でも大歓迎です。

0 投票する
0 に答える
1839 参照

linux - デバイスノードを作成および削除するときのmdevレーシング

最近、私はmdevを置き換えていましたudev。と比較するとudevdmdev実際に多くのメモリ使用量を節約できます。構成は次のとおりです。

  • /etc/mdev.conf、デバイスがと一致した場合sd[a-z][0-9]、スクリプトusbmount_wrapperは「デバイスの作成後と削除前」の両方で呼び出されます

    sd [az] [0-9] 0:0 660 * / usbmount_wrapper

  • では、 debianusbmount_wrapperの効用と呼びました。usbmount

この構成は、ホットプラグイベントに対して正常に機能します(プラグインされたデバイスで下のノード/devが作成され、パーティションが正しくマウントされ、プラグが抜かれたデバイスでパーティションがアンマウントされ、デバイスノードが削除されます)。

fdiskツールでディスクをフォーマットしようとしたときに問題が発生しました。ホットプラグイベントをダンプすることにより、イベントシーケンスは:すべての古いパーティションを削除->すべての新しく作成されたパーティションを追加します。ls /dev/sd*直後に実行するとfdisk、これらの新しいパーティションの新しいデバイスノードが表示され、数秒後にこれらのパーティションが削除されます。に競合状態があり、デバイスノードが最初に作成されてから削除されると結論付けることができmdevます。これは、ホットプラグイベントのシーケンスとは逆です。私も作成しようとしまし/dev/mdev.seqたが、問題は解決しません。mdevバージョンは1.17busybox からです

誰かがmdev同じ問題を試し、遭遇した場合は、アドバイスをお願いします。事前にあなたの助けと感謝に感謝します。

0 投票する
1 に答える
12703 参照

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 も扱うので...)

0 投票する
2 に答える
782 参照

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の使用法を理解するのに役立つコードの一部です。

この問題は長い間私を悩ませてきました。どんな助けでもいただければ幸いです。

0 投票する
1 に答える
8756 参照

linux - udevでデバイスを識別する方法

libudevを使用して特定のデバイスを監視したいと思います。具体的には、リムーバブルストレージ(USBハードドライブ、USBキー、SDカードなど)を監視したいと思います。libudevAPIを使用すると、デバイスの親の「サブシステム」と「devtype」がわかっている場合にデバイスを見つけることができます。コンピューターでデバイスを試してみて、udevadmを使用して、すべてのストレージタイプに「block」->「scsi」のデバイスサブシステムがあることを確認しましたが、これらのデバイスのdevtypeが何であるかわかりません。どこかで参照として使用できるdevtypeとサブシステムのリスト、またはdevtypeを検索するためのより良い方法はありますか?

0 投票する
2 に答える
2878 参照

c++ - libudev を使用して Linux でマウントされたドライブに関する情報を取得する

libudev を使用してストレージ デバイス (USB キーなど) を監視し、それらが変更されたときにプログラムで通知を受け取るようにしています。Libudev は、デバイスが追加、削除などされたかどうかを通知し、デバイス ノードを提供します。たとえば、システムに SD カードを追加すると、libudev は「/dev/mmcblk0p1」が追加されたことを通知します。こうなったら、デバイスのマウントポイントも取得したい。そのため、/proc/mounts をチェックして、デバイスがマップされているマウント パスを確認します。

これは問題なく動作しているように見えますが、デバイスをマウントする前、デバイスをマウントした後、またはその間のどこかで libudev がデバイスが追加されたというシグナルを送信するかどうかはわかりません (つまり、/proc/信号を受け取った直後にファイルをマウントするのは信頼できない方法です)。

私の質問は、libudev がいつシグナルを送信したか、デバイスのマウント パスを取得するために使用した方法が信頼できるかどうかを知っている人はいますか?

そうでない場合、信頼できるデバイス ノードを指定してマウント パスを取得する別の方法はありますか?

よろしく、

プリス

0 投票する
1 に答える
1550 参照

bash - udevadm を使用して bash で USB シリアル コードを読み取る

udevadm コマンドを使用して、bash で USB の一意の ID を読み取ろうとしています。使用されるコマンドは次のとおりです。

通常のUSBストレージを使用している間は適切に出力されますが、

しかし、mp3プレーヤーを使用すると、出力は次のようになります。

USB ストレージの ID_SERIAL_SHORT 以外に固有のものはありますか?

ありがとう

0 投票する
0 に答える
2510 参照

android - Androidでlibudevを使用する方法

低レベルの監視アプリケーションの一部として、sysfs の変更を監視する必要があるため、inotify の代わりに udev インターフェイスを使用する必要があります。ほとんどの Android デバイスと、このアプリケーションを実際に実行する必要があるすべてのデバイスが、デバイスの列挙とポリシーの適用に udev を使用していることは明らかです。C アプリケーションから udev を操作する標準的な方法は、libudev (libudev.h) を使用することですが、/lib ディレクトリには libudev.so がなく、include ディレクトリもまったくありません。したがって、このライブラリの ARM ポートを取得するか、ここでいくつかの回避策を実行する必要があります。私はクロスコンパイルと libudev 固有の質問が苦手なので、この問題を解決してください。

注: このアプリケーションを実行するすべてのデバイスで root アクセス権を持っています。

0 投票する
2 に答える
673 参照

linux - USB デバイスが接続されているときにユーザーから入力を受け取る

udev ルール (RUN コマンド) を使用して USB デバイスが接続されているときにスクリプトを実行し、notify-send を使用して通知を表示しています。

ユーザーに USB への入力を求めるプロンプトが表示されるようにします。どうすればいいですか?