web-dev-qa-db-ja.com

Linuxで、CMOSバッテリーが機能しているかどうかを確認するにはどうすればよいですか?

プログラムでCMOSバッテリーが機能しているかどうかを判断したい。Linux上のC++プログラムで、インターネットに接続し、CMOSバッテリーの場合はシステム時刻を更新したい。存在しないか、機能していません。

1
Necktwi

チェックサムエラーが発生した場合、BIOSはCMOS RAMのどこかにビットを設定すると思います。しかし、これはマザーボードの各メーカーに固有です。

うまくいくかもしれない1つのこと...

  • シャットダウン時にCMOS RAM)をダンプします-dd if=/dev/nvram of=cmos_ram.binおそらくそれをします。
  • 電源投入時に取得します。
  • 最後のシャットダウンから保存されたファイルと比較します。不一致がある場合は、CMOSが変更されたか、破損しています。システム時刻の更新も行ってください。

正直なところ、多くのCMOSクロックの乾燥と不正確さのために、とにかく起動するたびにシステム時刻を更新する必要があります。

3
LawrenceC

接吻!

NTPを使用して、常に時刻を修正します(ntpdate、次にntpd)。

このようにあなたは常に正しい時間を持っています。これは、CMOSまたは内部クロックのないコンピューターが行うことです。

他のプログラムをビルドする必要はありません(それらはすでに存在します)。また、CMOSをチェックする必要もありません(持っているのは良いですが、必須ではありません)

1
higuita

これは可能かもしれませんが、クロスプラットフォームではない可能性があります(ハードウェアが大きく異なるPCとBeagleBoneの両方で使用したいため)。

Ntpを実行すると、バッテリーの状態に関係なく、常に正確な時刻が維持されます。

0
Renan