Konfiguracja czasu nie utrzymuje się przez ponowne uruchomienie

4

Używam ArchLinux i od wielu miesięcy mam problemy z czasem systemowym.

Wcześniej działało, ale kiedy zaktualizowałem komputer, czas systemowy był zmieniany przy każdym uruchomieniu (jakby nie wykrywało strefy czasowej, podczas gdy strefa czasowa w rc.conf była i jest poprawna).

Potem dodałem hwclock i było tak samo, i usunąłem go. Jeśli dobrze pamiętam, wydaje się, że to rozwiązało problem.

Kiedy w moim kraju zmienił się czas letni, czas zmieniał się o 1 godzinę przy każdym uruchomieniu (bez względu na to, ile razy ustawiałem czas systemowy ręcznie lub według ntpdate).

Ponownie próbowałem to naprawić, a teraz ma ona wielogodzinną zmianę, jak poprzednio (wartość przesunięcia jest różnicą czasu UTC i czasu lokalnego). A teraz wydaje się, że mój czas systemowy jest niezmienny. Ustawiam czas na date -s ...i ntpdate pool.ntp.orgna przykład ... ale te środki wydają się nie utrzymywać po ponownym uruchomieniu. Próbowałem z uruchomionym demonem hwclock, uruchomionym ntpd i żaden z nich nie działał w DAEMONS. Jestem tym bardzo zdezorientowany.

Nie używam zbyt wiele okien. Wiem, że uruchamianie systemu Windows może powodować problemy w systemie Linux z czasem systemowym. Ale to nie mój problem. Za każdym razem, gdy uruchamiam Windows i Linux, mogę zresetować czas systemowy ręcznie lub za pomocą polecenia ntpdate. Możesz więc założyć, że nie mam żadnych okien na moim komputerze.

Chcę tylko, aby mój czas systemowy działał i nie był zmieniany automatycznie (przez ntp lub coś takiego), po prostu ustaw go ręcznie (ręcznie lub za pomocą polecenia ntpdate), kiedy chcę. Proszę pomóż.

Oto mój 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
saeedgnu
źródło

Odpowiedzi:

4

Ilius, chyba już wcześniej spotkałem się z tym problemem.

  1. Najpierw spróbuj poprawnie ustawić czas systemowy. (ntp / cokolwiek)
  2. Następnie uruchomić hwclock --systohc

To powinno zresetować hwclock do czasu systemowego i powinno być trwałe podczas ponownego uruchamiania.

czy dałbyś nam znać, jeśli to się uda?

brice
źródło
Ale działa zarówno z posiadaniem hwclock w DAEMONS, jak i bez. Czy możesz mi opisać, co dokładnie robi hwclock?
saeedgnu
1
hwclock nie jest demonem. Jest to narzędzie, które zapisuje do sprzętowego rejestru zegara (tak myślę) na twoim procesorze / płycie głównej. Ten rejestr jest ciągle zaznaczany baterią przycisku po wyłączeniu komputera. Spróbuj man hwclockdowiedzieć się więcej.
brice
2

PRZESTARZAŁY

Poniższe rozwiązanie było wykonalne dla starszych, wcześniejszych instalacji Arch Linux. Zostawiam to tutaj w celach historycznych.

PRZESTARZAŁY

Masz HARDWARECLOCK ustawiony na UTC w twoim rc.conf. Myślę, że to sprawca. Jeśli znajdujesz się w sytuacji podwójnego rozruchu systemu Windows, powinieneś ustawić go na „czas lokalny” (patrz dokumentacja instalacji arch IIRC).

Inną przyczyną problemu mogą być błędne skrypty startowe, ponieważ arch powinien wykonywać „--hctosys” i „--systohc” podczas uruchamiania / zamykania systemu.

W Linuksie musisz rozróżniać zegar systemowy (nazwijmy go SC) i zegar sprzętowy (HC). Są osobne, ale połączone. Czas w SC (w czasie rzeczywistym) jest obliczany z uwzględnieniem ustawień HC (czasu lokalnego lub UTC) i strefy czasowej systemu. W systemie Windows nie ma obliczeń - wartość HC jest wartością SC. Tak więc, jeśli UTC różni się od czasu lokalnego, Linux jest ustawiony tak, aby traktować HC jak ustawiony na UTC, a Linux SC pokazuje właściwy czas, okna pokażą śmieci. Jeśli natomiast czas systemu Windows jest ustawiony poprawnie, a linux traktuje HC jako ustawiony na UTC, wówczas linux „SC pokazuje czas„ przesunięty ”. Rozwiązaniem byłoby sprawienie, aby linux traktował HC jako czas lokalny (HARDWARECLOCK = „czas lokalny”).

thebodzio
źródło