еще один апдейт для void

This commit is contained in:
2026-08-17 20:26:07 +06:00
parent 3d28888e1f
commit b206449ebd
+439 -284
View File
@@ -1,26 +1,52 @@
#!/bin/sh #!/bin/sh
# ============================================================================= # =============================================================================
# Void Linux + Labwc + SDDM installer # Void Linux + SDDM + Labwc
# =============================================================================
#
# Целевая схема:
#
# BIOS/UEFI
# |
# v
# runit
# |
# +---- dbus
# |
# +---- seatd
# |
# +---- elogind
# |
# +---- sddm
# |
# +---- Xorg
# |
# v
# SDDM
# |
# v
# Labwc (Wayland)
#
# Подходит для:
# - чистой установки Void Linux
# - KVM/QEMU + QXL
# - KVM/QEMU + VirtIO GPU
# - Intel
# - AMD
#
# NVIDIA намеренно НЕ настраивается автоматически.
# #
# Запуск: # Запуск:
# sudo sh void-labwc-install.sh
# #
# Цель: # sudo sh void-labwc-install.sh
# - Wayland
# - Labwc
# - SDDM
# - seatd
# - elogind
# - D-Bus
# - PipeWire/WirePlumber в пользовательской сессии
# #
# ВАЖНО:
# Скрипт НЕ устанавливает NVIDIA-драйвер автоматически.
# Драйвер GPU лучше определить отдельно.
# ============================================================================= # =============================================================================
set -eu set -eu
# =============================================================================
# Цвета / вывод
# =============================================================================
RED='\033[0;31m' RED='\033[0;31m'
GREEN='\033[0;32m' GREEN='\033[0;32m'
YELLOW='\033[1;33m' YELLOW='\033[1;33m'
@@ -44,21 +70,18 @@ error() {
exit 1 exit 1
} }
run() {
"$@" || error "Команда завершилась с ошибкой: $*"
}
# ============================================================================= # =============================================================================
# Проверка root # Проверка root
# ============================================================================= # =============================================================================
if [ "$(id -u)" -ne 0 ]; then if [ "$(id -u)" -ne 0 ]; then
error "Запусти скрипт через sudo: error "Скрипт необходимо запускать через sudo:
sudo sh $0" sudo sh $0"
fi fi
# ============================================================================= # =============================================================================
# Определение пользователя # Определение обычного пользователя
# ============================================================================= # =============================================================================
REAL_USER="${SUDO_USER:-}" REAL_USER="${SUDO_USER:-}"
@@ -66,77 +89,122 @@ REAL_USER="${SUDO_USER:-}"
if [ -z "$REAL_USER" ] || [ "$REAL_USER" = "root" ]; then if [ -z "$REAL_USER" ] || [ "$REAL_USER" = "root" ]; then
error "Не удалось определить обычного пользователя. error "Не удалось определить обычного пользователя.
Запусти так: Запусти скрипт так:
sudo sh $0 sudo sh $0
а не через обычный root shell." а не из root shell."
fi fi
if ! id "$REAL_USER" >/dev/null 2>&1; then if ! id "$REAL_USER" >/dev/null 2>&1; then
error "Пользователь $REAL_USER не существует." error "Пользователь '$REAL_USER' не существует."
fi fi
USER_UID="$(id -u "$REAL_USER")"
USER_GID="$(id -g "$REAL_USER")"
USER_GROUP="$(id -gn "$REAL_USER")"
USER_HOME="$(getent passwd "$REAL_USER" | cut -d: -f6)" USER_HOME="$(getent passwd "$REAL_USER" | cut -d: -f6)"
if [ -z "$USER_HOME" ] || [ ! -d "$USER_HOME" ]; then if [ -z "$USER_HOME" ] || [ ! -d "$USER_HOME" ]; then
error "Не удалось определить HOME пользователя $REAL_USER." error "Не удалось определить HOME пользователя '$REAL_USER'."
fi fi
echo "" echo ""
echo "============================================================" echo "============================================================"
echo " Void Linux + Labwc + SDDM installer" echo " Void Linux + SDDM + Labwc installer"
echo "============================================================" echo "============================================================"
echo "" echo ""
echo "Пользователь: $REAL_USER" echo "Пользователь : $REAL_USER"
echo "HOME: $USER_HOME" echo "UID : $USER_UID"
echo "HOME : $USER_HOME"
echo "" echo ""
# ============================================================================= # =============================================================================
# ЭТАП 1. Репозитории # Проверка архитектуры
# ============================================================================= # =============================================================================
log "Этап 1/7: настройка репозиториев..." info "Архитектура системы: $(uname -m)"
# =============================================================================
# ЭТАП 1 — Репозитории
# =============================================================================
echo ""
log "Этап 1/8: настройка репозиториев..."
# Nonfree нужен для части firmware/драйверов и некоторых пакетов.
if xbps-query -Rs '^void-repo-nonfree$' 2>/dev/null | \
grep -q 'void-repo-nonfree'; then
log "void-repo-nonfree доступен."
if ! xbps-query -Rs '^void-repo-nonfree$' 2>/dev/null | grep -q void-repo-nonfree; then
xbps-install -Sy void-repo-nonfree || \
warn "Не удалось установить void-repo-nonfree."
else else
log "void-repo-nonfree уже доступен." info "Устанавливаю void-repo-nonfree..."
xbps-install -Sy void-repo-nonfree
fi fi
# ============================================================================= # =============================================================================
# ЭТАП 2. Обновление системы # ЭТАП 2 — Обновление системы
# ============================================================================= # =============================================================================
log "Этап 2/7: обновление системы..." echo ""
log "Этап 2/8: обновление системы..."
run xbps-install -Syu xbps-install -Syu
# ============================================================================= # =============================================================================
# ЭТАП 3. Основные пакеты # ЭТАП 3 — Базовые пакеты
# ============================================================================= # =============================================================================
log "Этап 3/7: установка графического стека..." echo ""
log "Этап 3/8: установка базовой системы..."
PACKAGES=" BASE_PACKAGES="
labwc base-system
sddm
seatd
elogind
dbus dbus
elogind
seatd
sudo
ca-certificates
curl
wget
tar
unzip
zip
p7zip
unar
fuse
fuse-common
xdg-utils
"
xorg-minimal for pkg in $BASE_PACKAGES; do
info "Установка: $pkg"
xbps-install -y "$pkg" || warn "Не удалось установить $pkg"
done
# =============================================================================
# ЭТАП 4 — Графический стек
# =============================================================================
echo ""
log "Этап 4/8: установка графического стека..."
GRAPHICS_PACKAGES="
xorg
xorg-server-xwayland xorg-server-xwayland
mesa-dri mesa-dri
sddm
labwc
waybar waybar
wofi
mako
swaylock swaylock
swayidle swayidle
swaybg swaybg
mako
wofi
wl-clipboard wl-clipboard
cliphist cliphist
grim grim
@@ -146,10 +214,6 @@ xdg-desktop-portal
xdg-desktop-portal-wlr xdg-desktop-portal-wlr
xdg-desktop-portal-gtk xdg-desktop-portal-gtk
pipewire
wireplumber
alsa-pipewire
polkit polkit
polkit-gnome polkit-gnome
@@ -158,35 +222,9 @@ qt6-wayland
qt5ct qt5ct
qt6ct qt6ct
dolphin pipewire
kate wireplumber
firefox alsa-pipewire
kitty
mpv
ristretto
pavucontrol
easyeffects
gparted
htop
qdirstat
curl
wget
tar
unar
unzip
zip
p7zip
nodejs
npm
ffmpeg
libnotify
xdg-utils
fuse
fuse-common
ca-certificates
fontconfig fontconfig
noto-fonts-ttf noto-fonts-ttf
@@ -200,62 +238,123 @@ adwaita-icon-theme
linux-firmware linux-firmware
" "
# Установка по одному. for pkg in $GRAPHICS_PACKAGES; do
# info "Установка: $pkg"
# Это специально сделано вместо одного xargs: xbps-install -y "$pkg" || warn "Не удалось установить $pkg"
# если один необязательный пакет отсутствует в репозитории,
# это не должно ломать весь графический стек.
for pkg in $PACKAGES; do
if xbps-query -Rs "^${pkg}$" 2>/dev/null | grep -q "$pkg"; then
if xbps-query -p pkgver "$pkg" >/dev/null 2>&1; then
log "Уже установлен: $pkg"
else
info "Устанавливаю: $pkg"
xbps-install -y "$pkg" || warn "Не удалось установить $pkg"
fi
else
warn "Пакет отсутствует в репозиториях: $pkg"
fi
done done
# ============================================================================= # =============================================================================
# ЭТАП 4. Пользователь и группы # QXL / KVM
# ============================================================================= # =============================================================================
log "Этап 4/7: настройка пользователя..." echo ""
info "Проверка виртуальной/физической видеокарты..."
if command -v lspci >/dev/null 2>&1; then
GPU_INFO="$(lspci | grep -Ei 'VGA|3D|Display' || true)"
if [ -n "$GPU_INFO" ]; then
echo ""
echo "$GPU_INFO"
echo ""
case "$GPU_INFO" in
*QXL*|*Red\ Hat*QXL*)
info "Обнаружена QXL GPU — устанавливаю Xorg QXL driver."
xbps-install -y xf86-video-qxl || \
warn "xf86-video-qxl недоступен."
;;
*Virtio*)
info "Обнаружена VirtIO GPU."
;;
*AMD*|*ATI*|*Radeon*)
info "Обнаружена AMD/ATI GPU."
;;
*Intel*)
info "Обнаружена Intel GPU."
;;
*NVIDIA*)
warn "Обнаружена NVIDIA GPU."
warn "NVIDIA driver намеренно НЕ устанавливается автоматически."
;;
*)
info "Неизвестный GPU — используются Mesa/Xorg по умолчанию."
;;
esac
else
warn "Не удалось определить GPU через lspci."
fi
# seatd
if getent group _seatd >/dev/null 2>&1; then
usermod -aG _seatd "$REAL_USER"
log "$REAL_USER добавлен в группу _seatd"
else else
warn "Группа _seatd не найдена." warn "lspci не найден."
fi
# audio
if getent group audio >/dev/null 2>&1; then
usermod -aG audio "$REAL_USER"
log "$REAL_USER добавлен в группу audio"
fi
# video
if getent group video >/dev/null 2>&1; then
usermod -aG video "$REAL_USER"
log "$REAL_USER добавлен в группу video"
fi
# wheel
if getent group wheel >/dev/null 2>&1; then
usermod -aG wheel "$REAL_USER"
log "$REAL_USER добавлен в группу wheel"
fi fi
# ============================================================================= # =============================================================================
# ЭТАП 5. Системные сервисы # Дополнительные пользовательские приложения
# ============================================================================= # =============================================================================
log "Этап 5/7: настройка runit..." echo ""
log "Установка пользовательских приложений..."
OPTIONAL_PACKAGES="
dolphin
kate
firefox
kitty
mpv
ristretto
pavucontrol
easyeffects
gparted
htop
qdirstat
ffmpeg
libnotify
nodejs
npm
"
for pkg in $OPTIONAL_PACKAGES; do
info "Установка: $pkg"
xbps-install -y "$pkg" || warn "Пропущен пакет: $pkg"
done
# =============================================================================
# ЭТАП 5 — Пользовательские группы
# =============================================================================
echo ""
log "Этап 5/8: настройка групп пользователя..."
add_group() {
group="$1"
if getent group "$group" >/dev/null 2>&1; then
usermod -aG "$group" "$REAL_USER"
log "$REAL_USER -> $group"
else
warn "Группа '$group' отсутствует."
fi
}
add_group "_seatd"
add_group "audio"
add_group "video"
add_group "wheel"
# =============================================================================
# ЭТАП 6 — Runit services
# =============================================================================
echo ""
log "Этап 6/8: настройка системных сервисов runit..."
enable_service() { enable_service() {
svc="$1" svc="$1"
@@ -266,45 +365,92 @@ enable_service() {
fi fi
if [ -L "/var/service/$svc" ]; then if [ -L "/var/service/$svc" ]; then
log "Сервис уже включён: $svc" log "Уже включён: $svc"
return 0 return 0
fi fi
ln -s "/etc/sv/$svc" "/var/service/$svc" ln -s "/etc/sv/$svc" "/var/service/$svc"
log "Включён сервис: $svc" log "Включён: $svc"
} }
# Системный D-Bus
enable_service dbus enable_service dbus
# Seat management для wlroots/Labwc
enable_service seatd enable_service seatd
# Session management / XDG_RUNTIME_DIR
enable_service elogind enable_service elogind
# Display manager
enable_service sddm enable_service sddm
# =============================================================================
# ВАЖНО:
#
# НЕ включаем: # НЕ включаем:
# #
# pipewire # pipewire
# wireplumber # wireplumber
# #
# Они должны работать в пользовательской графической сессии, # как system-wide runit services.
# а не как обычные system-wide runit services. #
# Они должны работать в пользовательской сессии.
# =============================================================================
# ЭТАП 6. Wayland session для SDDM
# ============================================================================= # =============================================================================
log "Этап 6/7: настройка Labwc + SDDM..." if [ -L "/var/service/pipewire" ]; then
warn "Обнаружен system-wide pipewire service."
warn "Отключаю его — PipeWire будет работать в user session."
rm -f /var/service/pipewire
fi
if [ -L "/var/service/wireplumber" ]; then
warn "Обнаружен system-wide wireplumber service."
warn "Отключаю его — WirePlumber будет работать в user session."
rm -f /var/service/wireplumber
fi
# =============================================================================
# elogind vs acpid
# =============================================================================
#
# elogind сам занимается session/power management.
# Поэтому не включаем acpid.
# =============================================================================
if [ -L "/var/service/acpid" ]; then
warn "Отключаю acpid, поскольку используется elogind."
rm -f /var/service/acpid
fi
# =============================================================================
# ЭТАП 7 — SDDM
# =============================================================================
echo ""
log "Этап 7/8: настройка SDDM..."
mkdir -p /etc/sddm.conf.d
# -------------------------------------------------------------------------
# ВАЖНО:
#
# НЕ заставляем SDDM работать как Wayland compositor.
#
# SDDM использует Xorg для своего login screen.
#
# После авторизации SDDM запускает Labwc как Wayland session.
# -------------------------------------------------------------------------
rm -f /etc/sddm.conf.d/10-wayland.conf
cat > /etc/sddm.conf.d/10-display.conf << 'EOF'
[General]
DisplayServer=x11
EOF
log "SDDM настроен на X11/Xorg."
# =============================================================================
# Labwc Wayland session
# =============================================================================
mkdir -p /usr/share/wayland-sessions mkdir -p /usr/share/wayland-sessions
SESSION_FILE="/usr/share/wayland-sessions/labwc.desktop" cat > /usr/share/wayland-sessions/labwc.desktop << 'EOF'
cat > "$SESSION_FILE" << 'EOF'
[Desktop Entry] [Desktop Entry]
Name=Labwc Name=Labwc
Comment=Wayland window-stacking compositor Comment=Wayland window-stacking compositor
@@ -313,161 +459,144 @@ Type=Application
DesktopNames=labwc DesktopNames=labwc
EOF EOF
chmod 644 "$SESSION_FILE" chmod 644 /usr/share/wayland-sessions/labwc.desktop
log "Создана SDDM-сессия: $SESSION_FILE" log "Создана Wayland-сессия Labwc."
# ============================================================================= # =============================================================================
# SDDM configuration # SDDM autologin НЕ включаем.
# ============================================================================= # =============================================================================
mkdir -p /etc/sddm.conf.d # Пользователь сам выбирает Labwc на экране SDDM.
cat > /etc/sddm.conf.d/10-wayland.conf << 'EOF'
[General]
DisplayServer=wayland
[Wayland]
SessionDir=/usr/share/wayland-sessions
EOF
log "SDDM настроен на Wayland."
# ============================================================================= # =============================================================================
# PipeWire ALSA # ЭТАП 8 — Labwc config
# ============================================================================= # =============================================================================
if [ -d /usr/share/alsa/alsa.conf.d ]; then echo ""
log "Этап 8/8: создание базовой конфигурации Labwc..."
mkdir -p /etc/alsa/conf.d LABWC_DIR="$USER_HOME/.config/labwc"
if [ -f /usr/share/alsa/alsa.conf.d/50-pipewire.conf ]; then mkdir -p "$LABWC_DIR"
ln -sf \
/usr/share/alsa/alsa.conf.d/50-pipewire.conf \
/etc/alsa/conf.d/50-pipewire.conf
fi
if [ -f /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf ]; then # -------------------------------------------------------------------------
ln -sf \ # autostart
/usr/share/alsa/alsa.conf.d/99-pipewire-default.conf \ # -------------------------------------------------------------------------
/etc/alsa/conf.d/99-pipewire-default.conf
fi
log "ALSA/PipeWire настроен." AUTOSTART="$LABWC_DIR/autostart"
fi
# =============================================================================
# Пользовательский Labwc config
# =============================================================================
USER_CONFIG="$USER_HOME/.config/labwc"
if [ ! -d "$USER_CONFIG" ]; then
mkdir -p "$USER_CONFIG"
chown -R "$REAL_USER":"$(id -gn "$REAL_USER")" \
"$USER_HOME/.config"
log "Создан $USER_CONFIG"
else
log "$USER_CONFIG уже существует."
fi
# =============================================================================
# Минимальный autostart
# =============================================================================
AUTOSTART="$USER_CONFIG/autostart"
if [ ! -f "$AUTOSTART" ]; then if [ ! -f "$AUTOSTART" ]; then
cat > "$AUTOSTART" << 'EOF' cat > "$AUTOSTART" << 'EOF'
#!/bin/sh #!/bin/sh
# ---------------------------------------------------------
# Labwc autostart
# ---------------------------------------------------------
# Waybar # Waybar
waybar & if command -v waybar >/dev/null 2>&1; then
waybar &
fi
# Notification daemon # Notification daemon
mako & if command -v mako >/dev/null 2>&1; then
mako &
fi
# PolicyKit authentication agent # PolicyKit authentication agent
if command -v /usr/libexec/polkit-gnome-authentication-agent-1 >/dev/null 2>&1; then if [ -x /usr/libexec/polkit-gnome-authentication-agent-1 ]; then
/usr/libexec/polkit-gnome-authentication-agent-1 & /usr/libexec/polkit-gnome-authentication-agent-1 &
elif command -v polkit-gnome-authentication-agent-1 >/dev/null 2>&1; then elif command -v polkit-gnome-authentication-agent-1 >/dev/null 2>&1; then
polkit-gnome-authentication-agent-1 & polkit-gnome-authentication-agent-1 &
fi fi
# PipeWire / WirePlumber
# Они обычно активируются через user/session environment.
EOF EOF
chmod +x "$AUTOSTART" chmod +x "$AUTOSTART"
chown "$REAL_USER":"$(id -gn "$REAL_USER")" "$AUTOSTART" log "Создан Labwc autostart."
log "Создан минимальный Labwc autostart."
else else
log "Существующий autostart не изменён." info "Существующий Labwc autostart не изменён."
fi fi
# ============================================================================= # =============================================================================
# Права на конфигурацию # ALSA / PipeWire
# ============================================================================= # =============================================================================
chown -R "$REAL_USER":"$(id -gn "$REAL_USER")" \ info "Настройка ALSA → PipeWire..."
mkdir -p /etc/alsa/conf.d
if [ -f /usr/share/alsa/alsa.conf.d/50-pipewire.conf ]; then
ln -sf \
/usr/share/alsa/alsa.conf.d/50-pipewire.conf \
/etc/alsa/conf.d/50-pipewire.conf
fi
if [ -f /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf ]; then
ln -sf \
/usr/share/alsa/alsa.conf.d/99-pipewire-default.conf \
/etc/alsa/conf.d/99-pipewire-default.conf
fi
log "ALSA/PipeWire настроен."
# =============================================================================
# Права пользователя
# =============================================================================
chown -R "$REAL_USER":"$USER_GROUP" \
"$USER_HOME/.config" "$USER_HOME/.config"
# ============================================================================= # =============================================================================
# НЕ устанавливаем NVIDIA автоматически # Проверка установки
# ============================================================================= # =============================================================================
echo "" echo ""
info "Проверяем GPU..." log "Проверка установленного ПО..."
if command -v lspci >/dev/null 2>&1; then check_command() {
cmd="$1"
GPU="$(lspci | grep -Ei 'VGA|3D|Display' || true)"
if [ -n "$GPU" ]; then
echo "$GPU"
echo ""
case "$GPU" in
*NVIDIA*)
warn "Обнаружена NVIDIA."
warn "NVIDIA-драйвер НЕ устанавливался автоматически."
warn "Сначала определите поколение GPU."
;;
*AMD*)
log "Обнаружена AMD GPU."
;;
*Intel*)
log "Обнаружена Intel GPU."
;;
*)
info "GPU не удалось определить автоматически."
;;
esac
if command -v "$cmd" >/dev/null 2>&1; then
log "$cmd: $(command -v "$cmd")"
else else
warn "GPU через lspci определить не удалось." warn "$cmd: НЕ НАЙДЕН"
fi fi
}
check_command labwc
check_command sddm
check_command Xorg
check_command dbus-run-session
check_command pipewire
check_command wireplumber
# =============================================================================
# Проверка session file
# =============================================================================
if [ -f /usr/share/wayland-sessions/labwc.desktop ]; then
log "Labwc session file: OK"
else else
warn "lspci отсутствует." warn "Labwc session file отсутствует!"
fi fi
# =============================================================================
# Ожидание запуска runit services
# =============================================================================
echo ""
info "Ожидание запуска сервисов..."
sleep 3
# ============================================================================= # =============================================================================
# Проверка сервисов # Проверка сервисов
# ============================================================================= # =============================================================================
log "Этап 7/7: проверка сервисов..."
sleep 2
check_service() { check_service() {
svc="$1" svc="$1"
@@ -476,46 +605,33 @@ check_service() {
return 0 return 0
fi fi
if sv status "$svc" 2>/dev/null | grep -q "run:"; then if sv status "$svc" 2>/dev/null | grep -q '^run:'; then
log "$svc: RUNNING" log "$svc: RUNNING"
else else
warn "$svc: включён, но НЕ RUNNING" warn "$svc: НЕ ЗАПУЩЕН"
sv status "$svc" 2>&1 || true sv status "$svc" 2>&1 || true
fi fi
} }
echo ""
info "Статус системных сервисов:"
check_service dbus check_service dbus
check_service seatd check_service seatd
check_service elogind check_service elogind
check_service sddm check_service sddm
# ============================================================================= # =============================================================================
# Проверка Labwc # Проверка Xorg
# ============================================================================= # =============================================================================
echo "" echo ""
info "Проверка установки Labwc..." info "Проверка Xorg..."
if command -v labwc >/dev/null 2>&1; then if [ -x /usr/bin/X ]; then
log "labwc найден: $(command -v labwc)" log "Xorg найден: /usr/bin/X"
else else
warn "Команда labwc не найдена." warn "Xorg /usr/bin/X не найден!"
fi
if command -v sddm >/dev/null 2>&1; then
log "sddm найден: $(command -v sddm)"
else
warn "Команда sddm не найдена."
fi
# =============================================================================
# Проверка Wayland session
# =============================================================================
if [ -f "$SESSION_FILE" ]; then
log "Wayland session существует: $SESSION_FILE"
else
warn "Wayland session НЕ найдена."
fi fi
# ============================================================================= # =============================================================================
@@ -524,57 +640,96 @@ fi
echo "" echo ""
echo "============================================================" echo "============================================================"
printf "${GREEN}Установка завершена.${NC}\n" printf "${GREEN}✓ УСТАНОВКА ЗАВЕРШЕНА${NC}\n"
echo "============================================================" echo "============================================================"
echo "" echo ""
echo "Архитектура:"
echo " SDDM -> Xorg"
echo " SDDM -> Labwc"
echo " Labwc -> Wayland"
echo ""
echo "Сервисы:" echo "Сервисы:"
echo " dbus: /var/service/dbus" echo " dbus"
echo " seatd: /var/service/seatd" echo " seatd"
echo " elogind: /var/service/elogind" echo " elogind"
echo " sddm: /var/service/sddm" echo " sddm"
echo "" echo ""
echo "Labwc session:" echo "Labwc:"
echo " $SESSION_FILE" echo " $LABWC_DIR"
echo "" echo ""
echo "Конфигурация:" echo "SDDM session:"
echo " $USER_CONFIG" echo " /usr/share/wayland-sessions/labwc.desktop"
echo "" echo ""
echo "============================================================" echo "============================================================"
echo " ВАЖНО" echo " ЧТО ДЕЛАТЬ ДАЛЬШЕ"
echo "============================================================" echo "============================================================"
echo "" echo ""
echo "1. Перезагрузите компьютер:"
echo "1. Перезагрузиться:"
echo "" echo ""
echo " reboot" echo " sudo reboot"
echo "" echo ""
echo "2. После перезагрузки должен появиться SDDM."
echo "2. Дождаться экрана SDDM."
echo "" echo ""
echo "3. В SDDM выберите:"
echo "3. Выбрать сессию:"
echo "" echo ""
echo " Labwc" echo " Labwc"
echo "" echo ""
echo "4. Если SDDM НЕ появился, войдите в TTY:"
echo "4. Войти под пользователем:"
echo "" echo ""
echo " Ctrl+Alt+F2" echo " $REAL_USER"
echo "" echo ""
echo " и выполните:"
echo "============================================================"
echo " ЕСЛИ ЧТО-ТО НЕ ЗАПУСТИЛОСЬ"
echo "============================================================"
echo ""
echo "Перейти в TTY:"
echo ""
echo " Ctrl + Alt + F2"
echo ""
echo "Проверить сервисы:"
echo "" echo ""
echo " sudo sv status dbus" echo " sudo sv status dbus"
echo " sudo sv status seatd" echo " sudo sv status seatd"
echo " sudo sv status elogind" echo " sudo sv status elogind"
echo " sudo sv status sddm" echo " sudo sv status sddm"
echo "" echo ""
echo "5. Логи SDDM:"
echo "Проверить SDDM:"
echo "" echo ""
echo " sudo sv status sddm" echo " ps aux | grep -E 'sddm|Xorg' | grep -v grep"
echo " sudo tail -100 /var/log/sddm/current"
echo "" echo ""
echo "6. Проверка GPU:"
echo "Проверить Xorg:"
echo ""
echo " sudo tail -100 /var/log/Xorg.0.log"
echo ""
echo "Проверить GPU:"
echo "" echo ""
echo " lspci -k -d ::03xx" echo " lspci -k -d ::03xx"
echo "" echo ""
echo "============================================================"
echo "Проверить XDG_RUNTIME_DIR после входа:"
echo ""
echo " echo \"\$XDG_RUNTIME_DIR\""
echo ""
echo "============================================================"
echo ""
warn "После добавления пользователя в группы требуется новая"
warn "login-сессия. Поэтому после установки ОБЯЗАТЕЛЬНО reboot."
echo ""