4.5 KiB
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