238 lines
4.5 KiB
Markdown
238 lines
4.5 KiB
Markdown
# 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
|
||
```
|