Откуда `date` получить дату?

В новой записной книжке я настроил Ubuntu для автоматической синхронизации времени. Часовой пояс установлен на UTC +8. Нет проблем с датой, когда ноутбук подключен к Интернету.

Но когда я запустил ноутбук в режиме с воздушным зазором (в автономном режиме), я заметил, что время, отображаемое Ubuntu, неверно. Я могу подтвердить, что оба date а также date -u вернулась неверная дата. Не установлен TZ в терминале. Дата в меню UEFI по-прежнему правильная. я полагаю, что date не использует дату из часов ноутбука. Как date разрешить дату в этом случае?

Я пытался установить время в меню UEFI, чтобы 07/09/2016 21:04:xx и выполнил следующие команды:

$ date
Ahd Jul 10 05:04:25 MYT 2016
$ date -u
Sab Jul  9 21:04:26 UTC 2016
$ sudo hwclock
Ahad 10 Jul 2016 05:04:35  MYT  .057058 seconds
$ sudo hwclock --localtime
Sabtu 09 Jul 2016 09:04:39  MYT  .813741 seconds

Дата, которую я установил в UEFI, теперь стала результатом date -u в то время как это должно быть результатом для date, Это как-то связано со службой времени EUFI?

2 ответа

Как вы уже упоминали, есть два разных часа:

  1. Программные часы устанавливаются и используются ядром Linux и обеспечивают время для всех программ.
  2. Аппаратные часы (часы реального времени) имеют резервное питание от батареи (т.е. всегда работают) и используются для настройки системных часов при загрузке.

UEFI не имеет доступа к системным часам и поэтому использует RTC. date использует системные часы. Причиной, по которой он работает правильно при наличии подключения к Интернету, может быть ntp сервис который настраивает время при запуске?

Вы можете использовать sudo dpkg-reconfigure tzdata для текстовой опции, чтобы правильно установить системное время. Если Ubuntu по-прежнему будет отображать дату вашего последнего входа в систему (правда?) После перезагрузки, похоже, существует проблема с инициализацией системных часов на основе RTC при запуске.

Источник: man rtc

Похоже, что Ubuntu (начиная с версии 15?) Предполагает, что RTC находится в UTC по умолчанию. Вот результат timedatectl команда:

$ timedatectl
      Local time: Ahd 2016-07-10 16:07:28 MYT
  Universal time: Ahd 2016-07-10 08:07:28 UTC
        RTC time: Ahd 2016-07-10 08:07:28
       Time zone: Asia/Kuala_Lumpur (MYT, +0800)
 Network time on: yes
NTP synchronized: no
 RTC in local TZ: no

Мне нужно убедиться, что остальные операционные системы установлены в системе для обработки RTC в UTC.

Другие вопросы по тегам