# Automatic startup Настройка автоматического запуска Car UI без Desktop Environment. В production-режиме система загружается в `multi-user.target`, после чего Car UI запускается через Qt EGLFS/DRM на `tty1`. Схема запуска: ```text Debian ↓ systemd ↓ multi-user.target ↓ tty1 ↓ car-ui.service ↓ Qt EGLFS ↓ DRM/KMS ↓ Car UI ``` ## Car mode ### 1. Установить systemd units Скопировать systemd-сервисы: ```bash 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: ```bash sudo systemctl daemon-reload ``` ### 2. Освободить tty1 для Car UI Car UI использует `tty1` для прямого доступа Qt EGLFS к DRM/KMS. Отключить стандартный login prompt на `tty1`: ```bash sudo systemctl disable --now getty@tty1.service sudo systemctl mask getty@tty1.service ``` ### 3. Включить необходимые сервисы Включить автоматическое снятие RFKill-блокировки Bluetooth: ```bash sudo systemctl enable bt-unblock.service ``` Включить автоматический запуск Car UI: ```bash sudo systemctl enable car-ui.service ``` ### 4. Отключить Desktop Environment при загрузке Установить `multi-user.target` как target по умолчанию: ```bash sudo systemctl set-default multi-user.target ``` ### 5. Проверить конфигурацию Проверить target по умолчанию: ```bash systemctl get-default ``` Ожидаемый результат: ```text multi-user.target ``` Проверить сервисы: ```bash systemctl is-enabled bt-unblock.service systemctl is-enabled car-ui.service ``` Ожидаемый результат для обоих: ```text enabled ``` Проверить состояние `getty@tty1`: ```bash systemctl is-enabled getty@tty1.service ``` Ожидаемый результат: ```text masked ``` ### 6. Перезагрузить систему ```bash sudo reboot ``` После загрузки Car UI должен автоматически запуститься без Desktop Environment. --- ## Development mode Для разработки можно вернуть обычный Desktop Environment. ### 1. Отключить автоматический запуск Car UI ```bash sudo systemctl disable car-ui.service ``` ### 2. Вернуть login prompt на tty1 ```bash sudo systemctl unmask getty@tty1.service sudo systemctl enable getty@tty1.service ``` ### 3. Включить графический режим загрузки ```bash sudo systemctl set-default graphical.target ``` ### 4. Перезагрузить систему ```bash sudo reboot ``` После загрузки должен запуститься обычный Desktop Environment. Car UI в development mode можно запускать напрямую из исходного кода: ```bash ./scripts/run.sh ``` --- ## Return to Car mode Для возврата из Development mode в production Car mode: ### 1. Освободить tty1 ```bash sudo systemctl disable --now getty@tty1.service sudo systemctl mask getty@tty1.service ``` ### 2. Включить сервисы ```bash sudo systemctl enable bt-unblock.service sudo systemctl enable car-ui.service ``` ### 3. Вернуть консольный режим загрузки ```bash sudo systemctl set-default multi-user.target ``` ### 4. Перезагрузить систему ```bash sudo reboot ``` --- ## Диагностика Проверить состояние Car UI: ```bash systemctl status car-ui.service --no-pager -l ``` Посмотреть журнал текущей загрузки: ```bash journalctl -u car-ui.service -b ``` Показать последние 100 записей: ```bash journalctl -u car-ui.service -b --no-pager -n 100 ``` Проверить Bluetooth: ```bash systemctl status bluetooth.service systemctl status bt-unblock.service rfkill list ``` Проверить DRM-устройства: ```bash ls -l /dev/dri/ ``` Проверить активную виртуальную консоль: ```bash fgconsole cat /sys/class/tty/tty0/active ```