При запуске/рестарте сервера автоматически запускается Kodi приложение от пользователя tv (авто юзер без пароля и без sudo прав)
Установка графической базы
sudo apt update
sudo apt install --no-install-recommends \
xorg xserver-xorg-legacy \
openbox \
dbus-x11 \
xinit
xorg (X / X11) - графический сервер для работы с видеодрайвером — нужен для HDMI/GUI openbox — простой windows manager для стабильности (фокус / стабильный ввод) xinit — чтобы запускать X без display manager’а (мы запускаем автоматически через systemd)
Установка Kodi
sudo apt install kodi
Пользователь tv без sudo и без пароля
sudo adduser --disabled-password --gecos "" tv
sudo usermod -aG audio,video,input,render tv
- Группы нужны для HDMI, звука, пульта
Автостарт X + Kodi для пользователя tv
sudo nano /home/tv/.xinitrc
Содержимое
#!/bin/sh
# отключает DPMS (Display Power Management Signaling)
# X не будет:
# - гасить экран
# - уводить монитор в sleep/standby/off
# HDMI-сигнал остаётся активным
xset -dpms
# отключает X screensaver (таймер бездействия)
xset s off
# запрещает «чёрный экран» вместо screensaver
xset s noblank
exec kodi-standalone
sudo chown tv:tv /home/tv/.xinitrc
sudo chmod +x /home/tv/.xinitrc
Разрешаем запуск X без root
sudo nano /etc/X11/Xwrapper.config
allowed_users=anybody
needs_root_rights=no
Автологин без display manager (через systemd)
Создаём сервис
sudo nano /etc/systemd/system/kodi.service
[Unit]
Description=Kodi Media Center
After=systemd-user-sessions.service
Conflicts=getty@tty1.service
[Service]
Type=simple
User=tv
PAMName=login
TTYPath=/dev/tty1
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
StandardInput=tty
# StandardInput=tty заставляет systemd реально “подцепить” сервис к tty1
StandardOutput=journal
StandardError=journal
# Явно забираем VT1 и оставляем tty за X
ExecStart=/usr/bin/startx -- :0 vt1
# убираем -keeptty (он часто конфликтует с тем, как systemd управляет VT)
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
Активируем
sudo systemctl enable kodi.service
Если меняем и перезапускаем:
sudo systemctl daemon-reload
sudo systemctl restart kodi.service --no-block
--no-block нужен чтобы не блокировать текущую ssh сессию админа
Хранилище
/srv/photo и /srv/media
монтируем в домашние директории юзерам
ln -s /srv/photo /home/vk/photo --force
sudo -u tv ln -s /srv/photo/ /home/tv/photo --force