私のBeaglebone Black Iに乗るI2Cリアルタイムクロックの追加正確なタイミングを維持するためにntpdに依存しません。その結果、.txtファイルには2つの特別なデバイスファイルがあります/dev
。彼らは/dev/rtc0
、しかし、というシンボリックリンク/dev/rtc1
もあります。/dev/rtc
/dev/rtc0
/dev/rtc0
ボード上のARM SOCのリアルタイムクロックであり、/dev/rtc1
I2Cデバイスです。現在私はI2C時計に時間を手動で読み書きするスクリプトを使用していますが、シンボリックリンク/dev/rtc
が/dev/rtc1
。
それで、質問はこれがどのように達成できるかということです。私のbeaglebone blackのLinuxディストリビューションは、すべての管理タスクにsystemdを使用するArch Linuxです。
シンボリックリンクを削除して新しいシンボリックリンクを作成すると、次の再/dev/rtc1
起動後にシンボリックリンクがリセットされ、これまで設定ファイルまたはシステムデバイスが見つかりませんでした。
助けてくれてありがとう。
ベストアンサー1
udevルールのヒントが私に正しい方向を教えてくれました。簡単なレビューの後udevルールの作成私は次のことをしました。
udevadm info -a -p /sys/class/rtc/rtc1
出力(省略)は、udevルールを定義するいくつかの便利なプロパティを示しています。
looking at device '/devices/platform/ocp/4802a000.i2c/i2c-1/1-0068/rtc/rtc1':
KERNEL=="rtc1"
SUBSYSTEM=="rtc"
DRIVER==""
ATTR{date}=="2015-12-04"
ATTR{hctosys}=="0"
ATTR{max_user_freq}=="64"
ATTR{name}=="ds1307"
ATTR{since_epoch}=="1449230817"
ATTR{time}=="12:06:57"
...
/etc/udev/rules.d/
したがって、ルールファイルは99-rtc1.rules
。
ファイルの内容は
KERNEL=="rtc1", SUBSYSTEM=="rtc", DRIVER=="", ATTR{name}=="ds1307", SYMLINK="rtc", MODE="0666"
実行できるルールをテストするには
udevadm test /sys/class/rtc/rtc1
出力の重要な行は次のとおりです。
...
creating link '/dev/rtc' to '/dev/rtc1'
atomically replace '/dev/rtc'
...
結果/dev
は望ましい設定です。