Наткнулся тут на странную новую фичу в changelog-е systemd:
* On boot-up, when PID 1 detects that the system clock is behind the release date of the systemd version in use, the clock is now set to the latter. Previously, this was already done in timesyncd, in order to avoid running with clocks set to the various clock epochs such as 1902, 1938 or 1970. With this change the logic is now done in PID 1 in addition to timesyncd during early boot-up, so that it is enforced before the first process is spawned by systemd. Note that the logic in timesyncd remains, as it is more comprehensive and ensures montonic clocks by maintaining a persistant timestamp file in /var. Since /var is generally not available in earliest boot or the initrd, this part of the logic remains in timesyncd, and is not done by PID 1.
То есть systemd теперь при загрузке меняет время системы, если оно было установлено на более раннее, чем время релиза самого systemd. Казалось бы — наглая попытка Поттеринга навязать свои собственные понятия о том как linux должен вести себя? Но давайте подумаем…
В каком же случае требуется переводить часы? Отбрасываем всякие глупости вроде обхода защиты от копирования или тестирования программ. Нет, самый востребованный случай такого перевода стрелок назад — путешествия во времени. Но зачем Поттерингу с редхатом вставлять путешественникам такие дурацкие палки в колеса (тем более что люди, в общем-то, легко это обойдут, немного почертыхавшись)? А затем, что путешественниками могут быть не только люди!
Помните вывод консоли терминатора с «linux 4.xxx»? Сложилась мозаика в голове?.. Да, именно так, это закладка против злобного скайнета. Закладка, которая никак не помешает людям, но превратит терминатора в безобидного робота, при первой же перезагрузке. Его часы переведутся на много лет вперед (на дату релиза его версии systemd) и программа убийства Джона Коннора просто перестанет работать — в это время Джон Коннор уже был взрослым и ребенка, которого надо убить — уже нет!
Вот так работают настоящие спасители человечества, без громких слов, без заслуженной славы!
P.S. Интересно, что timesyncd уже имел подобный алгоритм, и подобное изменение кажется избыточной функциональностью. Но, очевидно, что Поттеринг как-то узнал, что изменение времени в timesyncd не помогло спасти человечество. Видимо, будущий timesyncd просто не стал работать в условиях, когда в прошлом не оказалось серверов для синхронизации часов. Поэтому пришлось добавить подкрутку времени еще и в сам systemd… Это, кстати, наводит на мысль, что Поттеринг, возможно — и сам из будущего.
Автор: vasimv