時間の設定は再起動しても持続しません


4

私はArchLinuxを使用していますが、何ヶ月もの間システム時間に問題があります。

以前は動作していましたが、PCを更新すると、起動ごとにシステム時間が変更されました(rc.confのtimezoneは正しいのに、timezoneが検出されなかったなど)。

次に、hwclockを追加しましたが、同じで、削除しました。正しく覚えていれば、これで問題は解決したようです。

私の国で夏時間が変更されたとき、スタートアップごとに1時間ずつシフトしていました(システム時間を手動で設定した回数やntpdateで設定した回数に関係なく)。

私は再びこれを修正しようとしましたが、今では以前のように多くの時間シフトがあります(シフト値はUTCと現地時間の差です)。そして今、私のシステム時間は変更できないようです。date -s ...などntpdate pool.ntp.orgで時間を設定しますが、これらの手段は再起動後も持続しないようです。私はhwclockデーモンを実行し、ntpdを実行してみましたが、DAEMONSで実行しているものはありませんでした。私はこれについて本当に混乱しています。

私は窓をあまり使いません。また、Windowsを起動すると、Linuxでシステム時間に関する問題が発生することがあります。しかし、それは私の問題ではありません。WindowsとLinuxをブートするたびに、手動またはntpdateコマンドでシステム時間をリセットできます。したがって、マシンにウィンドウがないと仮定できます。

システム時間の作業をしたいだけで、自動的に(ntpなどを介して)変更されるのではなく、必要に応じて手動(手動またはntpdateコマンド)で設定するだけです。助けてください。

これが私のrc.confです

#
# /etc/rc.conf - Main Configuration for Arch Linux
#

# -----------------------------------------------------------------------
# LOCALIZATION
# -----------------------------------------------------------------------
#
# LOCALE: available languages can be listed with the 'locale -a' command
# DAEMON_LOCALE: If set to 'yes', use $LOCALE as the locale during daemon
# startup and during the boot process. If set to 'no', the C locale is used.
# HARDWARECLOCK: set to "", "UTC" or "localtime", any other value will result
#   in the hardware clock being left untouched (useful for virtualization)
#   Note: Using "localtime" is discouraged, using "" makes hwclock fall back
#   to the value in /var/lib/hwclock/adjfile
# TIMEZONE: timezones are found in /usr/share/zoneinfo
#   Note: if unset, the value in /etc/localtime is used unchanged
# KEYMAP: keymaps are found in /usr/share/kbd/keymaps
# CONSOLEFONT: found in /usr/share/kbd/consolefonts (only needed for non-US)
# CONSOLEMAP: found in /usr/share/kbd/consoletrans
# USECOLOR: use ANSI color sequences in startup messages
#
LOCALE="en_US.UTF-8"
DAEMON_LOCALE="no"
HARDWARECLOCK="UTC"
TIMEZONE="Asia/Tehran"
KEYMAP="us"
CONSOLEFONT=
CONSOLEMAP=
USECOLOR="yes"

# -----------------------------------------------------------------------
# HARDWARE
# -----------------------------------------------------------------------
#
# MODULES: Modules to load at boot-up. Blacklisting is no longer supported.
#   Replace every !module by an entry as on the following line in a file in
#   /etc/modprobe.d:
#     blacklist module
#   See "man modprobe.conf" for details.
#
MODULES=(wl vboxdrv)

# Udev settle timeout (default to 30)
UDEV_TIMEOUT=30

# Scan for FakeRAID (dmraid) Volumes at startup
USEDMRAID="no"

# Scan for BTRFS volumes at startup
USEBTRFS="no"

# Scan for LVM volume groups at startup, required if you use LVM
USELVM="no"

# -----------------------------------------------------------------------
# NETWORKING
# -----------------------------------------------------------------------
#
# HOSTNAME: Hostname of machine. Should also be put in /etc/hosts
#
HOSTNAME="ilius-vostro3300"

# Use 'ip addr' or 'ls /sys/class/net/' to see all available interfaces.
#
# Wired network setup
#   - interface: name of device (required)
#   - address: IP address (leave blank for DHCP)
#   - netmask: subnet mask (ignored for DHCP) (optional, defaults to 255.255.255.0)
#   - broadcast: broadcast address (ignored for DHCP) (optional)
#   - gateway: default route (ignored for DHCP)
# 
# Static IP example
# interface=eth0
# address=192.168.0.2
# netmask=255.255.255.0
# broadcast=192.168.0.255
# gateway=192.168.0.1
#
# DHCP example
# interface=eth0
# address=
# netmask=
# gateway=

interface=
address=
netmask=
broadcast=
gateway=

# Setting this to "yes" will skip network shutdown.
# This is required if your root device is on NFS.
NETWORK_PERSIST="no"

# Enable these netcfg profiles at boot-up. These are useful if you happen to
# need more advanced network features than the simple network service
# supports, such as multiple network configurations (ie, laptop users)
#   - set to 'menu' to present a menu during boot-up (dialog package required)
#   - prefix an entry with a ! to disable it
#
# Network profiles are found in /etc/network.d
#
# This requires the netcfg package
#
#NETWORKS=(main)

# -----------------------------------------------------------------------
# DAEMONS
# -----------------------------------------------------------------------
#
# Daemons to start at boot-up (in this order)
#   - prefix a daemon with a ! to disable it
#   - prefix a daemon with a @ to start it up in the background
#
# If something other takes care of your hardware clock (ntpd, dual-boot...)
# you should disable 'hwclock' here.
#
DAEMONS=(syslog-ng dbus wicd)

## REMOVED: netfs network crond hwclock 
## ADDED: dbus networkmanager sshd nfs-common bluetooth samba httpd postgresql IBSng starcal2d wicd

回答:


4

イリウス、私は以前にこの問題に遭遇したことがあると思います。

  1. 最初にシステム時刻を正しく設定してください。(ntp / whatever)
  2. 次に、実行します hwclock --systohc

これにより、hwclockがシステム時刻にリセットされ、再起動後も持続するはずです。

うまくいくかどうか教えてください。


しかし、デーモンにhwclockがある場合とない場合の両方で機能します。hwclockが正確に何をするのか説明してもらえますか?
saeedgnu

1
hwclockはデーモンではありません。これは、プロセッサ/マザーボードのハードウェアクロックレジスタ(と思う)に書き込むユーティリティです。このレジスターは、コンピューターの電源をオフにしたときにボタン電池によって刻々と変化し続けます。試してみてくださいman hwclock詳細を確認します。
ブライス

2

時代遅れ

次のソリューションは、古い、システム化されたArch Linuxのインストールに適していました。歴史的な参考のためにここに残しておきます。

時代遅れ

rc.confでHARDWARECLOCKがUTCに設定されています。それが犯人だと思います。Windowsでデュアルブートの状況にある場合は、「localtime」に設定する必要があります(archインストールドキュメントIIRCを参照)。

起動/シャットダウン中にarchが「--hctosys」と「--systohc」を実行する必要があるため、問題のもう1つの原因は、起動スクリプトの混乱です。

Linuxでは、システムクロック(SCと呼びます)とハードウェアクロック(HC)を区別する必要があります。これらは分離されていますが、相互接続されています。SCの時間(リアルタイム)は、HCの設定方法(現地時間またはUTC)とシステムのタイムゾーンを把握して計算されます。Windowsでは計算は行われません。HC値はSC値です。したがって、UTCが現地時間と異なる場合、LinuxはHCをUTCに設定するように設定され、Linux SCは適切な時間を表示し、ウィンドウはゴミを表示します。逆に、Windowsの時間が正しく設定されていて、LinuxがHCをUTCに設定されたものとして処理する場合、LinuxのSCは時間を「シフト」して表示します。解決策は、LinuxがHCを現地時間(HARDWARECLOCK = "localtime")に設定されたものとして扱うようにすることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.