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

238 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```