× К оглавлению На главную Об авторе

Дата и время публикации:    

 


Выставка заведомо неправильного системного времени по CMOS RTC.

1. Характер неисправности

Характер неисправности заключается в установки неверного времени в далеком и прекрасном будущем, а именно в 2196 году, как показано на рисунке 1.

Рисунок 1

Причина выставления неправильного времени заключается в том, что проверка подключаемых файлов в скрипте /etc/init.d/hwclock.sh из пакета util-linux версии 2.33.1-01 закончилась преждевременным завершением. Перечень которых показан в листинге 1.1

Листинг 1.1

...
 42    [ ! -x /sbin/hwclock ] && return 0
 43    [ ! -r /etc/default/rcS ] || . /etc/default/rcS
 44    [ ! -r /etc/default/hwclock ] || . /etc/default/hwclock
 45
 46  . /lib/lsb/init-functions
 47   verbose_log_action_msg() { [ "$VERBOSE" = no ] || log_action_msg "$@"; }
...

Крах выполнения скрипта происходит во время выполнения подключения файла /lib/lsb/init-functions с функциями из пакета lsb-base версии 10.2019051400 в строке 46 указанного листинга. В результате наблюдается сбой в работе вычислительной сети (клиента WiFi) и запуска проверки монтируемых носителей информации во время старта системы.

2. Решение

Для временного и быстрого решения комментируем строку 46, начиная со строки 47 файла /etc/init.d/hwclock.sh добавляем необходимые функции-обертки log_success_msg () и log_action_msg(),предоставляемые пакетом как показано в листинге 2.1 .

Листинг 2.1

...
 46  #. /lib/lsb/init-functions
 47  log_success_msg () { echo "$@."; }
 48  log_action_msg () {  echo "$@." || true; }
 49  verbose_log_action_msg() { [ "$VERBOSE" = no ] || log_action_msg "$@"; } 
...

На всякий случай проверяем наличие файлов устройств CMOC RTC, как показано в дампе 2.2

Дамп 2.2

user@home:~$ ls -la /dev/rtc*
lrwxrwxrwx 1 root root      4 янв 27 10:02 /dev/rtc -> rtc0
crw------- 1 root root 252, 0 янв 27 10:02 /dev/rtc0

Соответственно, выяснив их наличие, проверяем отсутствие ошибок инициализации CMOC RTC, как показано в дампе 2.3

Дамп 2.3

user@home:~$ sudo dmesg | grep "rtc\|rtc0"
[    4.851133] rtc_cmos 00:00: RTC can wake from S4
[    4.851329] rtc_cmos 00:00: registered as rtc0
[    4.851360] rtc_cmos 00:00: no alarms, y3k, 242 bytes nvram
[    4.967972] rtc_cmos 00:00: setting system clock to 2020-01-27 07:02:06 UTC (1580108526)

Затем, остается попробовать выполнить сам скрипт /etc/init.d/hwclock.sh, как показано в дампе 2.4

Дамп 2.4

user@home:~$ /etc/init.d/hwclock.sh show
2020-01-27 12:51:18.719599+03:00

Приведенное решение в данной статье носит временный характер...

("Продолжение следует")

Сайт разработан в соответствии с рекомендациями консорциума W3C для языка разметки HTML5.

Об авторе можно прочитать здесь.

Copyright © 2015-2019 Андрей Ржавсков