[systemd / udev] ppp:システム全体のデーモンの正しい自動起動

usb_modeswitchパッケージには通常、モデムモードを自動的に切り替えるための定義済みのudevルールが付属しています。 ppp 、それとは独立して、それ自体とは別に、悪魔のためのサービスを含んでいます。 これらの構成は互いに独立しています。



それらを同時に使用すると、 競合が発生する可能性がありますusb_modeswitch -Jモデムを切り替える前にpppdが起動します。


RestartSec=5sRestart=on-failureすることができますが、それはスポーツですか?


「ただ救われたくて...」収束


まず、usb_modeswitch.conf- DisableSwitching=yes編集しDisableSwitching=yes 。 このファイルは「デフォルト」ルールで暗黙的に使用されます-干渉はしませんが、有用ではありません。


systemctl disable ppp@….servicemulti-user.targetからユニットをmulti-user.targetする必要はなくなりました。 [Install]もはや有用で[Install]ません。


別の方法で-それを再び動作させるために残っています。


「目を覚まして再び殺人を起こそう。」PsyOpus


新しいudevルールは、以前に提起された問題を解決することを目的としています。最初にusb_modeswitchタスクを伝え、それからsystemdに連絡する必要があります。


USBサブシステムでは、デバイスはidVendoridProduct 2つの属性識別子で定義できます。 それらはlsusb thで見ることができます-それらはそれぞれ「ID」の後にあります。


上記は、新しい構成の最初の行にほぼ正確に対応しています。


 $ su - $ cd /etc/udev/rules.d $ cat > 20-provider-modem.rules <<< … 

 SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="…", ATTR{idProduct}=="…", RUN+="/usr/sbin/usb_modeswitch -v $attr{idVendor} -p $attr{idProduct} -J" 

-番号体系( 0x )を指定する必要はありません。


次に、別のサブシステムの検討にttyUSB0ますttyUSB0私たちにとって重要です。 繰り返しますが、私たちはお気に入りのテキストエディタを使用します。


 $ cat >> 20-provider-modem.rules <<< … 

 SUBSYSTEM=="tty", KERNEL=="ttyUSB0", TAG+="systemd", ENV{SYSTEMD_WANTS}="ppp@provider.service" 

-ここで適切なタイミングでudevがsystemdにppp@を起動する可能性を伝えます。


最後に:


 $ udevadm control --reload 

「苦痛をやめるだけで、それは私の心、あなたがかける圧力に重きを置いている...」TesseracT


systemdとudevの関係に関する intelfxの推論に興味がありました。


udevとsystemdは、互いに補完する非常に強力なフレームワークです。

systemdは依存関係モデルに基づいています。Yが使用可能な場合はXを実行します。
udev-イベントモデル:Yが使用可能になったら、Xを実行します。

ユーザー空間とカーネルの接続は、非常に表現力豊かに強調されており、これは感心せざるを得ません。 実証済みの例-少し前途有望または平凡かもしれません-は、このツールの可能性を完全に明らかにしています。



Source: https://habr.com/ru/post/J311268/


All Articles