12

Linux は、システム時刻を設定するための stime(2) 呼び出しを提供します。ただし、これによりシステムの時刻は更新されますが、BIOS ハードウェア クロックが新しいシステム時刻と一致するようには設定されません。

Linux システムは通常、シャットダウン時および定期的にハードウェア クロックをシステム時刻と同期させます。ただし、これらの自動同期のいずれかの前にマシンの電源を入れ直すと、マシンの再起動時に時刻が正しくなくなります。

システム時刻を設定するときに、ハードウェア クロックが確実に更新されるようにするにはどうすればよいですか?

4

5 に答える 5

16

詳細については、rtc の man ページを確認してください。ただし、root としてログインしている場合は、次のようになります。

#include <linux/rtc.h>
#include <sys/ioctl.h>


    struct       rtc_time {
        int         tm_sec;      
        int         tm_min;      
        int         tm_hour;     
        int         tm_mday;     
        int         tm_mon;      
        int         tm_year;     
        int         tm_wday; /* unused */
        int         tm_yday; /* unused */
        int         tm_isdst;/* unused */
    };

int fd;
struct rtc_time rt;
/* set your values here */
fd = open("/dev/rtc", O_RDONLY);
ioctl(fd, RTC_SET_TIME, &rt);
close(fd);
于 2008-10-14T17:59:43.810 に答える
8

stime() を呼び出した後、次のようにします。

system("/sbin/hwclock --systohc");

詳細については、hwclock(8) のマニュアル ページを参照してください。

于 2008-10-14T17:43:14.170 に答える
2

また、ハードウェア クロックの精度はある程度しかないことも指摘しておきます (1 日に数秒ずつ遅れたり増えたりするシステムを見てきました)。

ネットワーク タイム デーモンをセットアップして、クロックをタイム サーバーと同期させることを検討しましたか?

確かに、この同期はデーモンが起動するまで行われないため、ハードウェア クロックを同期しておくことは、電源投入時とタイム デーモンがタイム サーバーと同期する時点との間でも役立ちます。

于 2008-10-14T17:48:49.447 に答える
2

hwclock のソース コードを読むことから始めます。

于 2008-10-14T17:52:19.190 に答える
-2

テキスト エディタが kubuntu と異なる場合 (kate がエディタのデフォルト)、sudoターミナルのコマンドで独自のものを使用します。

  1. ターミナルを実行
  2. このコマンドをコピーして貼り付け sudo kate /etc/default/rcSますEnter
  3. ユーザーパスワード(ログインパスワード)を入力してくださいEnter
  4. デスクトップにテキストエディタが開きます
  5. UTC=yes行をに変更しますUTC=no
  6. [保存] をクリックします (テキスト エディターのタブ バーの上部)。
  7. リブート
于 2010-10-30T08:03:42.570 に答える