Різний час windows та ubuntu. Збивається час в Ubuntu та Windows

Бувають випадки, коли при встановленні другої системи зазвичай це буває linux, починає збиватися час у системах, наприклад ви працювали під своїм linux"омі вирішили перейти в windows, і виявили, що час і дата зовсім не ті, або навпаки, це відбувається через відмінності формату часу, ці операційні системи по-різному з ним працюють, трохи теорії, і так, починаємо з linux, дані операційні системи працюють з UTC
UTC- і апаратний, і програмний годинник іде Гринвічем. Тобто годинник дає універсальний час на нульовому часовому поясі. Наприклад, якщо у вас часовий пояс GMT+3, Москва, то годинник буде відставати на три години. А вже користувачі локально додають на той час поправку на часовий пояс, наприклад, плюс +3. Кожен користувач додає йому потрібну поправку. Так робиться на серверах, щоб кожен користувач міг отримати правильний часовий пояс.
windowsж у свою чергу працює з localtime
localtime- у цьому варіанті програмний годинник теж йде по Грінвічу, але апаратний годинник йде за часом локального часового поясу. Для користувача різниці немає, все одно потрібно додавати поправку на свій часовий пояс. Але при завантаженні та синхронізації часу Windows віднімає з апаратного часу 3 години (або іншу поправку на часовий пояс), щоб програмний час був вірним.
так, начебто з теорією розібралися, тепер переходимо до практики, і так, на початку вантажимося за нашими windows, запускаємо консоль від імені адміністратора та виконуємо команди, для 32ч бітної системи
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
але годинник все одно буде синхронізуватися з часом сервера, для цього виключимо службу синхронізації годинника
sc config w32time start= disabled
тепер перезавантажуємо нашу систему та запускаємо linuxлогінімся в терміналі під root"омта виконуємо команди
timedatectl set-local-rtc 1 --adjust-system-clock
і
sed -i "s/UTC=yes/UTC=no/" /etc/default/rcS
переглянемо стан апаратного годинника
sudo timedatectl
тепер перезавантажуємося ще раз, входимо в bios і налаштовуємо дату та час, перевіряємо…
якщо за якимось причтнам нам треба відключити все це, то виконуємо команди в linux
timedatectl set-local-rtc 0
і
sed -i "s/UTC=no/UTC=yes/" /etc/default/rcS
у windows, консоль від імені адміністратора
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0
і
sc config w32time start=demand
ще одним варіантом може бути наступне, в linux debian і похідних
виконаємо команду для встановлення локального часу
sudo hwclock --localtime --adjust
якщо ж хочемо повернути назад
sudo hwclock --utc --adjust
тепер перевіримо
timedatectl | grep local
якщо відповідь
RTC in local TZ: no
то наш час цокає по грінвічу, якщо ж відповідь
RTC in local TZ: yes
тобто наш час цокає по встановленому системно
на цьому все, думаю вам було корисно

У режимі UEFI (безпечне завантаження). Мій час у BIOS правильний.

Коли я завантажуюсь в Ubuntu, а потім завантажуюсь у Windows 10, він показує неправильний час. Я повинен виправити його вручну або через Інтернет у Windows 10, і коли я перезавантажуюсь у Windows 10, це не проблема. Годинник показує правильний час. І потім, коли я перезавантажуюся в Linux, годинник правильний, але, повертаючись до Windows 10, годинник знову починає працювати.

Операційні системи зберігають і витягують час в апаратному годиннику, розташованому на вашій материнській платі, щоб відстежувати час, навіть коли система не має живлення. Більшість операційних систем (Linux / Unix / Mac) зберігають час на апаратному годиннику як UTC за замовчуванням, хоча деякі системи (зокрема, Microsoft Windows) зберігають час на апаратному годиннику як «локальний» час. Це викликає проблеми в системі подвійного завантаження, якщо обидві системи розглядають апаратний годинник по-різному.

Перевага використання апаратного годинника як UTC полягає в тому, що вам не потрібно змінювати апаратний годинник при переході між часовими поясами або коли починається або закінчується перехід на літній час (DST), оскільки UTC не має зсувів за часом або часом.

Зміна Linux для використання локального часу простіше і надійніше, ніж заміна Windows використання UTC, тому системи з двома завантаженнями Linux / Windows зазвичай використовують локальний час.

Оскільки Intrepid (8.10), UTC = yes – значення за промовчанням.

Зробити Windows використовувати UTC

Примітка. Цей метод спочатку не підтримувався у Windows Vista та Server 2008, але повернувся з Vista SP2, Windows 7, Server 2008 R2 та Windows 8/8.1.

Щоб MS Windows обчислила час з апаратного годинника у форматі UTC.

Створіть файл з ім'ям WindowsTimeFixUTC.reg з наступним вмістом, а потім двічі клацніть його, щоб об'єднати вміст із реєстром:

Windows Registry Editor Version 5.00 "RealTimeIsUniversal" = dword: 00000001

Примітка. Служба часу Windows, як і раніше, буде записувати місцевий час у RTC незалежно від встановленого вище параметра реєстру при вимкненні, тому зручно відключити службу часу Windows за допомогою цієї команди (якщо потрібна синхронізація за часом, у той час як у Windows використовується будь-який інший час синхронізація):

Sc config w32time start= disabled

Скасування зміни

Ви можете створити файл із наступним вмістом, а потім двічі клацнути його, щоб злити вихідні зміни, як зазначено вище:

Windows Registry Editor Version 5.00 "RealTimeIsUniversal"=-

Якщо служба часу Windows була вимкнена, увімкніть її знову за допомогою команди:

Sc config w32time start=demand

Зробити Linux «локальним» часом

Щоб повідомити вашу систему Ubuntu, що апаратний годинник встановлений на «локальний» час:

  1. змінити /etc/default/rcS
  2. додати або змінити наступний розділ

    # Set UTC=yes if your hardware clock is set to UTC (GMT) UTC=no

Системи Ubuntu 15.04 та вище (наприклад, Ubuntu 16.04 LTS):

    відкрийте термінал та виконайте наступну команду

    Якщо ви хочете побачити на нашому сайті відповіді на запитання про все, що пов'язано з технікою Apple, операційною системою Mac OS X (і її запуском на PC), пишіть нам через або .

    До нас надійшло таке запитання:

    доброго дня!
    на хакінтоші стоять Snow Leopard, Windows 7 та Ubuntu. постійно збивається час після перезавантаження ((мак ос завжди його на 4-5 годин тому перекладає! підкажіть, як виправити проблему)

    Проблема з синхронізацією часуактуальна не тільки для хакінтошів, але і для справжніх маків, на яких Windows працює через Boot Camp. Її причина дуже проста: Mac OS X завжди вважає, що час, записаний у BIOS (або EFI), записано там у форматі UTC— простіше кажучи, за Грінвічем. До нього вона додає відповідної поправки на часовий пояс.

    А Windows чинить інакше: вона безпосередньо зчитуєчас із BIOS. І якщо ви цей час змінюєте, або він автоматично синхронізується, то в BIOS воно запишеться вже у виправленому форматі: UTC + виправлення.

    Як вирішити це протиріччя? Є два підходи: один – з боку Mac OS, інший – з боку Windows та Linux.

    Рішення засобами Mac OS X

    Відразу скажемо – це не найкращий спосіб. Суть у тому, що для Mac OS X ми задаємо як часовий пояс час за Грінвічем. Наприклад, у налаштуваннях (пульт дата та час, вкладка Часовий пояс) виберіть як свій населений пункт Рейк'явік.

    Крім того, на вкладці "Дата та час"обов'язково відключіть автоматичну синхронізацію часу, інакше вийде ще гірше, ніж було.

    Після цих дій час у Windows завжди буде правильним, і Mac OS X не псуватиме його. Але чому це не найкращий спосіб? Справа в тому, що якщо ви синхронізуєте з Mac OS X якийсь гаджет — наприклад, iPhone, то неправильний часовий пояс спотворюватиме багато важливих даних. Наприклад, час вхідних SMS теж виявиться грінвічським.

    Рішення засобами Windows та Linux

    Інший спосіб - це змусити Windows і Linux зчитувати час із BIOS так само, як це робить Mac OS. На щастя, така можливість справді передбачена, але схована вона дуже глибоко.

    У Windows вам доведеться запустити з вікна "Виконати" програму regeditРедактор реєстру.Потім зайдіть у гілку \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformationта створіть там параметр DWORD з ім'ям RealTimeIsUniversalі значенням, рівним одиниці:

    У Linux (принаймні в Ubuntu), необхідно відредагувати файл /etc/default/rcSу будь-якому текстовому редакторі та замінити вміст параметра "UTC = no"на "UTC = yes".

    Після цього перезавантажтеся в Mac OS X і виставте рідний часовий пояс, заодно можете увімкнути автоматичну синхронізацію часу через Інтернет. Після перезавантаження в Windows і Ubuntu ви побачите такий самий час.

    Використання декількох операційних систем на одному комп'ютері іноді призводить до їх конфліктів між собою, коли вони використовують одне й те саме. Іноді це стосується таких простих речей, як час. Навіть такі популярні ОС для ПК як Windows і Ubuntu можуть не порозумітися і постійно міняти час один одного на некоректний.

    Причини цього явища насправді прості: Windows сприймає системний час (який виводиться в налаштуваннях CMOS) як локальний (з урахуванням часового поясу), а Ubuntu - по UTC (за Грінвічем, без урахування часового поясу). Тому вони підправляють системний час під свою логіку, порушуючи логіку один одного.

    Вирішення проблеми теж просте: або змусити Windows додавати до системного часу зсув по часовому поясу, або заборонити Ubuntu додавати цей зсув.

    Налаштування в Ubuntu

    Починаючи з версії 16.04, параметри відображення часу можна перемикати двома командами.

    Увімкнення відображення локального часу:
    sudo hwclock --localtime --adjust

    Увімкнення відображення за UTC:
    sudo hwclock --utc --adjust

    У старіших версіях Ubuntu потрібно редагувати файл rtC:

    sudo nano /etc/default/rcS

    У ньому потрібно додати (для відображення локального часу) або видалити цей рядок (для відображення часу за UTC):

    Установки у Windows

    У Windows майже всі системні налаштування редагуються в реєстрі, необхідний в даній ситуації TimeZoneInformation не виняток. Знаходиться він у реєстрі за цією адресою:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

    Тут потрібно додати або змінити параметр RealTimeIsUniversal. Його тип DWORD. Щоб системний час зчитувалося по UTC потрібно виставити значення 1, для розпізнавання його як локального потрібно виставити значення 0 або видалити цей параметр.

    Редактор реєстру можна запустити regedit.