car_ui/docs/auto-start.md
2026-09-15 16:14:49 +03:00

4.5 KiB
Raw Permalink Blame History

Automatic startup

Настройка автоматического запуска Car UI без Desktop Environment.

В production-режиме система загружается в multi-user.target, после чего Car UI запускается через Qt EGLFS/DRM на tty1.

Схема запуска:

Debian
  ↓
systemd
  ↓
multi-user.target
  ↓
tty1
  ↓
car-ui.service
  ↓
Qt EGLFS
  ↓
DRM/KMS
  ↓
Car UI

Car mode

1. Установить systemd units

Скопировать systemd-сервисы:

sudo cp system_configs/car-ui.service /etc/systemd/system/car-ui.service
sudo cp system_configs/bt-unblock.service /etc/systemd/system/bt-unblock.service

Перечитать конфигурацию systemd:

sudo systemctl daemon-reload

2. Освободить tty1 для Car UI

Car UI использует tty1 для прямого доступа Qt EGLFS к DRM/KMS.

Отключить стандартный login prompt на tty1:

sudo systemctl disable --now getty@tty1.service
sudo systemctl mask getty@tty1.service

3. Включить необходимые сервисы

Включить автоматическое снятие RFKill-блокировки Bluetooth:

sudo systemctl enable bt-unblock.service

Включить автоматический запуск Car UI:

sudo systemctl enable car-ui.service

4. Отключить Desktop Environment при загрузке

Установить multi-user.target как target по умолчанию:

sudo systemctl set-default multi-user.target

5. Проверить конфигурацию

Проверить target по умолчанию:

systemctl get-default

Ожидаемый результат:

multi-user.target

Проверить сервисы:

systemctl is-enabled bt-unblock.service
systemctl is-enabled car-ui.service

Ожидаемый результат для обоих:

enabled

Проверить состояние getty@tty1:

systemctl is-enabled getty@tty1.service

Ожидаемый результат:

masked

6. Перезагрузить систему

sudo reboot

После загрузки Car UI должен автоматически запуститься без Desktop Environment.


Development mode

Для разработки можно вернуть обычный Desktop Environment.

1. Отключить автоматический запуск Car UI

sudo systemctl disable car-ui.service

2. Вернуть login prompt на tty1

sudo systemctl unmask getty@tty1.service
sudo systemctl enable getty@tty1.service

3. Включить графический режим загрузки

sudo systemctl set-default graphical.target

4. Перезагрузить систему

sudo reboot

После загрузки должен запуститься обычный Desktop Environment.

Car UI в development mode можно запускать напрямую из исходного кода:

./scripts/run.sh

Return to Car mode

Для возврата из Development mode в production Car mode:

1. Освободить tty1

sudo systemctl disable --now getty@tty1.service
sudo systemctl mask getty@tty1.service

2. Включить сервисы

sudo systemctl enable bt-unblock.service
sudo systemctl enable car-ui.service

3. Вернуть консольный режим загрузки

sudo systemctl set-default multi-user.target

4. Перезагрузить систему

sudo reboot

Диагностика

Проверить состояние Car UI:

systemctl status car-ui.service --no-pager -l

Посмотреть журнал текущей загрузки:

journalctl -u car-ui.service -b

Показать последние 100 записей:

journalctl -u car-ui.service -b --no-pager -n 100

Проверить Bluetooth:

systemctl status bluetooth.service
systemctl status bt-unblock.service
rfkill list

Проверить DRM-устройства:

ls -l /dev/dri/

Проверить активную виртуальную консоль:

fgconsole
cat /sys/class/tty/tty0/active