Обозначение | Описание |
armv6l | ARMv6 little endian |
armv6h | ARMv6 hard float |
Источник: https://archlinuxarm.org/forum/viewtopic.php?f=31&t=5374
Описывается настройка ОС для работы с модулем RTC на основе DS3231, подключенным по шине I2C.
/boot/config.txt
:dtoverlay=i2c-rtc,ds3231
$ dmesg | grep rtc [ 15.751681] rtc-ds1307 1-0068: rtc core: registered ds3231 as rtc0
date -s
.# hwclock -w
Далее необходимо включить считывание времени из RTC при старте системы.
Проверить, собрано ли ядро с опцией CONFIG_RTC_SYSTOHC
:
cat < /sys/class/rtc/rtc0/hctosys
Если ответ 0, то опция выключена. Тогда остается единственный способ считывания часов при старте - через systemd.
Система может взять время либо из сети, либо из аппаратных часов RTC, если они обнаружены.
За синхронизацию по сети отвечает служба systemd-timesyncd
.
Управлять службой можно через утилиту timedatectl
. Проверить текущие настройки и время можно так:
# timedatectl status Local time: Sat 2017-01-28 10:42:32 UTC Universal time: Sat 2017-01-28 10:42:32 UTC RTC time: Sat 2017-01-28 10:42:32 Time zone: UTC (UTC, +0000) Network time on: no NTP synchronized: yes RTC in local TZ: no
В зависимости от ситуации, настроить синхронизацию по сети:
# timedatectl set-ntp 0 (отключить) # timedatectl set-ntp 1 (включить)
Включение синхронизации по сети эквивалентно разрешению и запуску службы, т.е.
# systemctl enable systemd-timesyncd # systemctl start systemd-timesyncd
Для аппаратных часов можно выбрать трактовку их значения как UTC или как местное время:
# timedatectl set-local-rtc 0 (UTC) # timedatectl set-local-rtc 1 (местное время)
Судя по всему, за синхронизацию системного времени с аппаратными часами отвечает только ядро, если оно собрано с опцией CONFIG_RTC_SYSTOHC
. Никакие штатные сервисы systemd не делают это. Поэтому остается только вариант вручную создать unit для данной службы.
Создаем скрипт /usr/local/sbin/rtc
, который собственно и синхронизирует системное время:
#!/bin/bash hwclock -s
Делаем файл исполняемым.
Создаем правило udev для устройства /dev/rtc0, чтобы systemd получил сигнал о его готовности. Создаем файл /etc/udev/rules.d/rtc.rules
.
KERNEL=="rtc0", TAG+="systemd"
Создаем файл описания службы /etc/systemd/system/rtc.service
с содержанием:
[Unit] Description=Sync time with hardware clock BindsTo=dev-rtc0.device After=dev-rtc0.device Before=netctl-auto@wlan0.service [Service] Type=oneshot ExecStart=/usr/local/sbin/rtc [Install] WantedBy=multi-user.target
Запускаем службу:
systemctl start rtc
Проверяем время через timedatectl status
. Если системное время установлено успешно, смотрим статус службы и разрешаем её запуск при старте системы:
systemctl status rtc systemctl enable rtc
Источники:
https://trick77.com/adding-ds3231-real-time-clock-raspberry-pi-3/
https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=161133
https://wiki.archlinux.org/index.php/Time
https://www.freedesktop.org/software/systemd/man/timedatectl.html
http://unix.stackexchange.com/questions/186899/how-to-wait-for-a-dev-video0-before-starting-a-service
Для экономии места на карте памяти и ресурса по числу записей можно отключить запись логов journald.
В файле /etc/systemd/journald.conf
поставить:
[Journal] Storage=none
Саму службу отключать не надо, в крайнем случае замаскрировать (systemctl mask systemd-journald.service
).
Отключение фонового индексирования страниц руководства man:
# systemctl mask man-db.timer
В ArchLinux для плат ODROID по-умолчанию отключен программный курсор в терминале при отсутствии аппаратного курсора.
Создаем файл /usr/local/bin/swcursor
:
#!/bin/bash echo -n -e '\e[?16;0;32c'
Последнее число определяет цвет (зеленый) и должно быть кратно 16.
В файле /etc/profile
добавляем в конец:
swcursor
Если после работы какой-либо терминальной программы курсор отключается, его можно вернуть через команду swcursor
.
Источники:
https://archlinuxarm.org/forum/viewtopic.php?f=63&t=8389
http://linuxgazette.net/137/anonymous.html