もちろん、この質問はRaspberry Piに固有のものではないかもしれません。また、私はLinuxを比較的初めて使用します。
Sysfsを使用してRaspberry PiのGPIOにアクセスするための小さなライブラリー(重要な場合はnode.jsに)を書きたいと思います。ただし、sysfsへのアクセスにはSudoアクセスが必要です。これは明らかな理由で悪いことです。
Quick2Wire には解決策があるようですが、私はそれをより良く理解し、盲目的に使用するだけではありません。彼らはもちろんCを使用しましたが、私が理解しているところによると、コードは複雑ではなく、エレガントではなくても、おそらくbashだけで引き出すことができます。しかし、何よりもなぜなぜ機能するのかわかりません。
どんな助けも素晴らしいでしょう。
編集:コメントをありがとう。質問を言い換える必要があるのは明らかです。ここに行きます:(rootとして)インストールすると、アプリが使用するためにこれ以上root権限を必要としないのはなぜですか?この場合、グループに誰かを追加するとどのように役立ちますか? /sys/devices/virtual/gpio
はgpio sysfsが利用できる場所ではないので、それを行う際の注意点は何ですか?私は本当にn00bなので、これらの質問はn00bっぽいかもしれないので、ご容赦ください。
ラケシュ、私はちょうど同じことを理解しようとしているだけで、私はそれを解決したと思います。
Makefileの多くをまったく理解する必要はありません。重要な行は次のとおりです。これらは_Sudo make install
_を実行するとbashで実行されます
_install: install-files
groupadd -f --system gpio
chgrp gpio $(DESTDIR)/bin/gpio-admin
chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin
_
_groupadd -f --system gpio
_は、gpioというシステムグループを作成します。 chgrp gpio $(DESTDIR)/bin/gpio-admin
は、バイナリ(Cファイルgpio-admin.cがコンパイルされた先)のグループをgpioに変更します。バイナリの所有者は引き続きrootです(makeをrootとして実行しているため)。chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin
は2つの重要なことを行います。まず、gpioグループのメンバーがgpio-adminを実行できるようにします。次に、gpio-adminのsetuidビットを設定します。
自分をgpioグループに追加すると、Sudoを使用せずにgpio-adminを実行できますが、gpio adminはSudoで実行されているように動作します。これにより、/ sys/class/gpio/exportファイルに書き込むことができます。また、作成されるファイル/ sys/class/gpio/gpio [ピン番号] /方向などの所有者を変更することもできます。
/ sys/class/gpio/exportのグループをgpioに変更し、それにアクセスできるように権限を設定しても
_Sudo chgrp gpio /sys/class/gpio/export /sys/class/gpio/unexport
Sudo chmod g+rwx /sys/class/gpio/export /sys/class/gpio/unexport
_
スーパーユーザー権限なしでピンをエクスポートできます
_echo 22 > /sys/class/gpio/export
_
ただし、/ sys/class/gpio/gpio22/directionなどのファイルは、所有者およびグループとしてrootを使用して作成されるため、Sudoを使用して変更する必要があります。また、エクスポートおよびアンエクスポートファイルの所有権は、再起動するたびにルートに戻ります。