Инструменты пользователя

Инструменты сайта


archlinuxarm

Arch Linux ARM

Обозначение типа архитектуры

ОбозначениеОписание
armv6lARMv6 little endian
armv6hARMv6 hard float

Источник: https://archlinuxarm.org/forum/viewtopic.php?f=31&t=5374

Часы реального времени на основе DS3231

Описывается настройка ОС для работы с модулем 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.
  • Записать системное время в RTC:
# 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

Адаптация ОС для работы с flash-накопителем

Отключение записи системного журнала

Для экономии места на карте памяти и ресурса по числу записей можно отключить запись логов 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

archlinuxarm.txt · Последние изменения: 2017/01/31 15:46 — reug