Настройка времени linux windows
Нередки конфигурации, когда на компьютере установлены две операционные системы (Windows и Linux) в конфигурации двойной загрузки (или как модно говорить Dual Boot). Действительно, на первое время можно попробовать пользоваться и Linux, и Windows, а затем уже принять решение о полном переходе на Linux, если все ваши потребности удовлетворены.
Однако вы можете столкнуться с проблемой, что после переключения между операционными системами (загрузки в Linux после Windows) сбивается время на несколько часов вперед или назад. Собственно, с данной ситуацией столкнулся и я. Мне это не понравилось. К счастью, описанная проблема решается в пару кликов.
Почему сбивается время
Windows и Linux по разному работают с временем BIOS. Дело тут в наличии двух форматов представления времени UTC и localtime.
Linux и формат UTC
Операционные системы GNU/Linux (в том числе Mac OS X) считают, что время в BIOS указано в формате UTC (по Гринвичу). Соответственно, при загрузке Linux для преобразования UTC к локальному времени добавляет (отнимает) смещение текущего часового пояса, который выбрал пользователь. Проще говоря, чтобы получить локальное время для часового пояса Москвы UTC+3, Linux добавит 3 часа.
Windows и формат LocalTime
Windows же считает, что в время в BIOS хранится в формате localtime. Поэтому если вы указали новый часовой пояс или синхронизировали время с внешним источником, система соответственным образом меняет время в BIOS на локальное время.
Linux (Kubuntu 18.04 в моем случае) считает, что время в BIOS указано в формате UTC и дополнительно добавляет смещение часового пояса. Именно поэтому и сбивается время при переключении между Linux и Windows.
Как исправить смещение времени
Вариант 1
Шаг 1. Добавляем параметр RealTimeIsUniversal
Чтобы исправить такую ситуацию, нужно переключить Windows на использование времени в формате UTC с помощью параметра реестра RealTimeIsUniversal.
Для этого запускаем в Windows командную строку от имени администратора (команда контекстного меню) и с помощью приведенных далее команд добавляем необходимый параметр в реестр. Можете данный параметр добавить вручную, не принципиально, а всего лишь дело вкуса и предпочтений.
Для 32-битных систем:
reg add «HKLMACHINE\System\CurrentControlSet\Control\TimeZoneInformation» /v RealTimeIsUniversal /t REG_DWORD /d 1 /f
Для 64-битных систем (нужно создавать параметр типа QWORD вместо DWORD):
reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1
Шаг 2. Отключаем синхронизацию времени с сетью Интернет
Дополнительно в Windows нужно отключить обновление времени из Интернета, так как служба времени Windows при каждом обновлении времени будет сбрасывать UTC время на локальное. Сделать это проще всего при помощи команды (не забываем запустить командную строку от имени администратора):
sc config w32time start=disabled
После выполнения указанной команды потребуется перезагрузиться в Linux, а затем снова в Windows.
Вариант 2
Также можно переключить Linux на использование локального времени. В Kubuntu 18.04 и выше это можно сделать командой:
timedatectl set-local-rtc 1
Как вернуть настройку времени в Windows и Linux назад
Вернуть настройку времени назад легко. Для этого нужно выполнить обратные команды, которые были описаны выше (иначе говоря, вернуть синхронизацию времени и установить параметр реестра в ноль).
Для 32-битных систем:
reg add «HKLMACHINE\System\CurrentControlSet\Control\TimeZoneInformation» /v RealTimeIsUniversal /t REG_DWORD /d 0 /f
Для 64-битных систем (нужно создавать параметр типа QWORD вместо DWORD):
reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 0
Для включения синхронизации времени в Windows:
sc config w32time start=demand
Для возврата настроек на умолчание в Kubuntu 18.04 или Ubuntu 18.04 достаточно выполнить команду в Терминале:
sudo timedatectl set-local-rtc 0
Какой вариант выбрать, решайте сами. Лично я использую первый вариант. А какой вариант используете вы?
Понравилась статья? Не очень? Тогда возможно, что вы напишите свою гораздо лучше. Просто перейдите по ссылке Размещение статей и ознакомьтесь с правилами публикации статей на сайте MultiBlog67.RU .
+ CategoryInfo : InvalidArgument: (:) [Set-Content], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetContentCommand
+ CategoryInfo : InvalidArgument: (:) [Set-Content], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.C ommands.SetContentCommand
- Вы здесь:
- Главная
- Разное
- Операционная система Ubuntu
- Dual Boot: сбивается время в Linux и Windows
Последние материалы
Индукционная электрическая плитка LEBEN 288-021
Застройщики и новостройки Смоленска
Статистика коронавируса COVID-19 в терминале Linux
Решено: Сбивается время при переходе между Linux и Windows
Многие новички Linux оставляют у себя на компьютере второй запасной операционной системой Windows. Но при переходе то в одну, то во вторую систему наблюдается неприятный момент — время начинает «убегать» на несколько часов то вперед, то назад. Это происходит потому, что Linux и Window хранят время в разных форматах.
В компьютере используется два вида часов. Первые — аппаратные часы, которые идут всегда, даже тогда, когда компьютер выключен (питаются от батарейки на материнской плате компьютера). Вторые часы — программные. Вот именно этими часами пользуется операционная система. При включении компьютера первоначальное время берется из аппаратных часов и записывается в программные часы. И вся проблема как раз в том, что разные операционные системы по-разному работают с программными часами. Есть два варианта работы:
- UTC — аппаратные и программные часы идут по Гринвичу. И эти часы дают универсальное время с нулевым смещением (нулевой часовой пояс). А уже локально к этому времени прибавляется ваш часовой пояс (с плюсом или минусом). Чаще всего так время идет на серверах, с которыми потом синхронизируются рабочие станции пользователей и уже локально у всех пользователей происходит поправка на их часовой пояс.
- Localtime — в данном случае программные часы тоже идут по Гринвичу, а вот аппаратные часы идут по времени локального часового пояса. Пользователь особой разницы не заметит, т.к. все равно нужно добавлять или вычитать поправку на свой часовой пояс. И вот тут появляется проблема. Windows при загрузке и(или) синхронизации времени делает поправку на часовой пояс пользователя для того, чтобы программное время было верным. В Linux не так.
Именно поэтому, при каждой перезагрузке из одной системы в другую будет происходить смещение времени на величину поправки на часовой пояс. И единственный способ это устранить — это заставить обе системы (и Windows, и Linux) работать со временем в одном формате. Сделать это можно двумя путями:
- Заставить Windows работать по UTC, как Linux;
- Заставить Linux работать в формате localtime.
Переключение Windows на работу по UTC
Для решения проблемы сбивающегося времени достаточно добавить всего один ключ в реестр Windows. Это можно сделать с помощью ввода команды в консоли.
Чтобы открыть консоль от имени администратора в Windows 10 нужно поставить курсор мыши в левый нижний угол экрана и нажать правую кнопку мыши. В появившемся контекстном меню нужно выбрать «Командная строка (администратор)».
Для 32-х битной Windows вводим:
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
Для 64-х битных нужно ввести:
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1
Однако, это еще не все. Служба времени Windows все равно продолжит сохранять время в старом формате при его обновлении через Интернет. Поэтому, службу нужно отключить. Либо это сделать руками через «Панель управления» Windows, либо быстрее и проще в той же командной строке, запущенной от имени администратора, выполнить:
sc config w32time start=disabled
Как вернуть настройки времени в Windows обратно?
В командной строке, запущенной от имени администратора, выполняем
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0
и запускаем службу синхронизации времени Windows:
sc config w32time start=demand
Перевод Linux на работу с Localtime
По умолчанию Linux хранит временя в формате UTC, но можно переключить систему так, чтобы она хранила в аппаратном таймере местное время. Рассмотрим на примере Ubuntu-Linux (работает даже в старых версиях, например в 16.04).
Чтобы посмотреть текущее состояние аппаратных и программных часов, нужно выполнить:
Начнем исправлять проблему сбивающихся часов. Для этого выполняем команду:
sudo timedatectl set-local-rtc 1 —adjust-system-clock
Готово! Еще проще, чем в Winsdows!
Однако, в более старых Ubuntu придется отредактировать файл /etc/default/rcS, внутри которого заменить UTC=yes на UTC=no.
Как вернуть настройки времени в Linux обратно?
Вернуть все как было можно с помощью команды:
sudo timedatectl set-local-rtc 0
И в старых дистрибутивах Ubuntu поправить файл /etc/default/rcS, внутри которого заменить UTC=no на UTC=yes.
На этом проблема сбивающегося времени в Windows и Linux (любой дистрибутив, не обязательно Ubuntu) решена.
Установка времени Linux
Время от времени часы на компьютере могут сбиваться по различным причинам, время может быть установлено изначально неправильно или неправильно выбран часовой пояс. Хотя в системе по умолчанию настроена синхронизация времени с интернетом и я уже давно забыл что значит постоянно перенастраивать часы, если они отстают, такая необходимость может появиться.
В этой статье мы рассмотрим как выполняется установка времени Linux различными способами, через терминал, графический интерфейс и так далее. Но сначала нам нужно понять как работает время.
Как работает время на компьютере?
Статья ориентирована на новичков, в первую очередь на них, потому что профессионалы уже и так знают как это сделать. Поэтому сначала рассмотрим как работает время в Linux. Когда компьютер работает часы идут, это ясно, но когда вы его отключаете, а затем включаете снова часы показывают не то время, на котором остановились, а правильное время. Это происходит потому, что часы на материнской плате идут постоянно. Таймер питается от той же батарейки, что и энергозависимая память BIOS.
Операционная система передает значение таймера в память BIOS при выключении и берет его оттуда при включении. Отсюда берутся проблемы со временем при двойной загрузке Windows и Linux, но эта тема раскрыта в другой статье — сбивается время в Ubuntu и Windows. Другая проблема почему может сбиваться время — это неверно установленный часовой пояс. Если вы установили часовой пояс linux неверно, то часы будут постоянно синхронизироваться через интернет и идти неверно.
Когда все проблемы с временем будут устранены, можно перейти установить нужное время и быть уверенным что оно не будет сбиваться. Дальше рассмотрим как это сделать.
Установка времени Linux
Вы можете видеть текущее время прямо на вашем рабочем столе, в KDE часы добавлены на панель, да и в Gnome, они размещены по центру панели по умолчанию:
Если навести курсор на время, вы увидите более подробную информацию, область уведомлений и календарь.
Но настроить время здесь уже не получится. Для этого нужно открывать настройки системы. Мы будем рассматривать настройки для Gnome. Откройте меню Dash и наберите в строке поиска «Параметры»:
Дальше откройте «Дата и время»:
Как видите, здесь уже установлено значение по умолчанию «Автоматическое определение даты и времени», а внизу есть пункт, который отвечает за часовой пояс.
Вы можете просто поменять часовой пояс чтобы время синхронизировалось правильно, если что-то не так. Также можно задать время вручную. Для этого сначала отключите автоматическую синхронизацию, а затем выберите дату и время:
Никаких кнопок нажимать не нужно, закройте окно выбора и новое время будет применено. Вы всегда можете вернуть настройки до значения по умолчанию.
Установка времени через терминал
Кроме графического интерфейса, у вас есть возможность делать все необходимые действия через терминал. Для этого есть утилита date. Сначала смотрим текущее время:
У утилиты есть множество опций отображения и настроек, но мы не будем их рассматривать. Есть еще одна команда, которая позволяет посмотреть системное время linux:
Чтобы установить время можно использовать ту же команду date. Для этого ей нужно передать строку со временем и датой, например:
В качестве строки можно брать ту, которую возвращает команда date без параметров, только она должна быть на английском, поэтому сразу смотрим:
sudo date —set «Wed Sep 6 20:43:36 EEST 2017»
Если у вас включена коррекция даты через интернет, то ее нужно отключить перед этим, потому что вы даже заметить изменений не успеете, как сервер времени linux установит правильное время. Можно сократить эту строку:
sudo date —set «Sep 6 20:43:36 2017»
Это даст тот же результат. Еще один вариант — указать формат данных, которые вы собираетесь передавать с помощью модификаторов, например, изменить время linux:
sudo date +%T -s «20:43:36»
Здесь формат очень прост — часы:минуты:секунды. Можно давать время в 12 часовом формате, для этого добавьте модификатор %p:
Вы изменяете текущее время, но аппаратное системное время linux не изменяется, чтобы сохранить изменения используйте команду:
Еще один новый инструмент от systemd для управления временем — timedatectl. С помощью него можно выполнить те же операции, сначала смотрим доступную информацию о времени:
Текущее системное время отображается в строке Local Time. Чтобы изменить дату, используйте опцию -set-time. Синтаксис передаваемого ей параметра такой: ГГГГ-ММ-ДД ЧЧ:ММ:СС. Думаю тут понятно и без комментариев. Например:
sudo timedatectl —set-time «2017-09-06 20:43:36»
Можно задать только время, тогда нужно использовать синтаксис времени ЧЧ:ММ:СС, например:
sudo timedatectl —set-time «20:43:36»
Еще раз говорю, что если включена синхронизация по сети, то вы не сможете изменить время. Но с помощью timedatectl ее можно отключить:
sudo timedatectl set-ntp no
Или включить обратно:
sudo timedatectl set-ntp yes
C помощью этой же команды можно не только установить время linux, но и настроить часовой пояс, для этого используйте опцию set-timezone:
sudo timedatectl set-timezone ‘Russia/Moscov’
Вы можете посмотреть список доступных часовых поясов командой:
Видео о настройке времени с помощью timedatectl:
Выводы
Вот и все. Теперь вы знаете как выполняется установка времени linux. Как видите, это очень просто, вы можете использовать различные способы, в зависимости от того, что вам будет удобнее. Если у вас остались вопросы, спрашивайте в комментариях!


















