_fix
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# fix-sddm.sh — Alpine: SDDM + LabWC без getty-autologin
|
# setup-sddm-labwc.sh
|
||||||
|
# Alpine Linux / OpenRC: SDDM + elogind + LabWC.
|
||||||
#
|
#
|
||||||
# Запуск:
|
# Запуск от root:
|
||||||
# su -
|
# chmod +x setup-sddm-labwc.sh
|
||||||
# chmod +x fix-sddm.sh
|
# ./setup-sddm-labwc.sh ivan
|
||||||
# ./fix-sddm.sh ivan
|
|
||||||
#
|
#
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
@@ -20,53 +20,55 @@ if [ "$(id -u)" -ne 0 ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f /etc/alpine-release ]; then
|
if [ ! -f /etc/alpine-release ]; then
|
||||||
echo "[!] Нужен Alpine Linux."
|
echo "[!] Этот скрипт только для Alpine Linux."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! id "$USER_NAME" >/dev/null 2>&1; then
|
if ! id "$USER_NAME" >/dev/null 2>&1; then
|
||||||
echo "[!] Пользователь не существует: $USER_NAME"
|
echo "[!] Пользователь не найден: $USER_NAME"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "=================================================="
|
echo "=================================================="
|
||||||
echo " Alpine: настройка SDDM + LabWC"
|
echo " Alpine: SDDM + elogind + LabWC"
|
||||||
echo "=================================================="
|
echo "=================================================="
|
||||||
|
echo
|
||||||
echo "[*] Пользователь: $USER_NAME"
|
echo "[*] Пользователь: $USER_NAME"
|
||||||
|
echo "[*] Alpine: $(cat /etc/alpine-release)"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Пакеты
|
# Пакеты
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
echo "[*] Установка SDDM и OpenRC-скриптов..."
|
echo "[*] Обновление индекса APK..."
|
||||||
apk update
|
apk update
|
||||||
apk add sddm sddm-openrc
|
|
||||||
|
echo "[*] Установка зависимостей display manager..."
|
||||||
|
apk add \
|
||||||
|
dbus \
|
||||||
|
seatd \
|
||||||
|
elogind \
|
||||||
|
elogind-openrc \
|
||||||
|
sddm \
|
||||||
|
sddm-openrc \
|
||||||
|
xorg-server \
|
||||||
|
mesa \
|
||||||
|
mesa-dri-gallium \
|
||||||
|
xf86-input-libinput
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Удаление старого getty-autologin
|
# Удаление старых/неверных конфигов SDDM
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
echo "[*] Удаление старого autologin-wrapper..."
|
echo "[*] Очистка старой конфигурации SDDM..."
|
||||||
rm -f /usr/local/sbin/autologin-login
|
|
||||||
|
|
||||||
# ВАЖНО:
|
|
||||||
# /etc/inittab намеренно НЕ меняем.
|
|
||||||
# kill -HUP 1 намеренно НЕ вызываем.
|
|
||||||
# Текущий tty остаётся доступным до перезагрузки.
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# SDDM config
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
|
|
||||||
echo "[*] Настройка SDDM..."
|
|
||||||
|
|
||||||
mkdir -p /etc/sddm.conf.d
|
mkdir -p /etc/sddm.conf.d
|
||||||
|
|
||||||
# Убираем созданные ранее ошибочные конфиги.
|
|
||||||
rm -f /etc/sddm.conf.d/wayland.conf
|
rm -f /etc/sddm.conf.d/wayland.conf
|
||||||
rm -f /etc/sddm.conf.d/labwc.conf
|
rm -f /etc/sddm.conf.d/labwc.conf
|
||||||
|
rm -f /etc/sddm.conf.d/00-general.conf
|
||||||
|
|
||||||
cat > /etc/sddm.conf.d/00-general.conf << 'EOF'
|
cat > /etc/sddm.conf.d/00-general.conf << 'EOF'
|
||||||
[General]
|
[General]
|
||||||
@@ -79,10 +81,20 @@ EOF
|
|||||||
chmod 644 /etc/sddm.conf.d/00-general.conf
|
chmod 644 /etc/sddm.conf.d/00-general.conf
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Группы
|
# Удаление старого getty-autologin wrapper
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
echo "[*] Проверка групп пользователя..."
|
echo "[*] Удаление старого getty-autologin wrapper..."
|
||||||
|
rm -f /usr/local/sbin/autologin-login
|
||||||
|
|
||||||
|
# /etc/inittab намеренно не меняем.
|
||||||
|
# kill -HUP 1 намеренно не вызываем.
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Группы пользователя
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
echo "[*] Настройка групп пользователя..."
|
||||||
|
|
||||||
for GROUP_NAME in wheel seat video input; do
|
for GROUP_NAME in wheel seat video input; do
|
||||||
if ! getent group "$GROUP_NAME" >/dev/null 2>&1; then
|
if ! getent group "$GROUP_NAME" >/dev/null 2>&1; then
|
||||||
@@ -93,16 +105,16 @@ for GROUP_NAME in wheel seat video input; do
|
|||||||
if id -nG "$USER_NAME" | tr ' ' '\n' | grep -qx "$GROUP_NAME"; then
|
if id -nG "$USER_NAME" | tr ' ' '\n' | grep -qx "$GROUP_NAME"; then
|
||||||
echo "[+] $USER_NAME уже в группе $GROUP_NAME."
|
echo "[+] $USER_NAME уже в группе $GROUP_NAME."
|
||||||
else
|
else
|
||||||
echo "[*] Добавление $USER_NAME в $GROUP_NAME..."
|
echo "[*] Добавление $USER_NAME в группу $GROUP_NAME..."
|
||||||
addgroup "$USER_NAME" "$GROUP_NAME"
|
addgroup "$USER_NAME" "$GROUP_NAME"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# LabWC desktop session
|
# Сессия LabWC в меню SDDM
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
echo "[*] Создание пункта сессии LabWC для SDDM..."
|
echo "[*] Создание записи LabWC для SDDM..."
|
||||||
|
|
||||||
mkdir -p /usr/share/wayland-sessions
|
mkdir -p /usr/share/wayland-sessions
|
||||||
|
|
||||||
@@ -119,7 +131,7 @@ EOF
|
|||||||
chmod 644 /usr/share/wayland-sessions/labwc.desktop
|
chmod 644 /usr/share/wayland-sessions/labwc.desktop
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# LabWC environment
|
# Конфигурация LabWC пользователя
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
echo "[*] Настройка LabWC..."
|
echo "[*] Настройка LabWC..."
|
||||||
@@ -170,32 +182,29 @@ chmod 755 "$HOME_DIR/.config/labwc/autostart"
|
|||||||
chown -R "$USER_NAME:$USER_NAME" "$HOME_DIR/.config"
|
chown -R "$USER_NAME:$USER_NAME" "$HOME_DIR/.config"
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Удаление автозапуска LabWC из профиля
|
# Удаление старого запуска LabWC из login shell
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
echo "[*] Отключение старого запуска LabWC из .profile..."
|
echo "[*] Отключение старого запуска LabWC из .profile..."
|
||||||
|
|
||||||
if [ -f "$PROFILE" ] && grep -qF '# LABWC-AUTOSTART' "$PROFILE"; then
|
if [ -f "$PROFILE" ] && grep -qF '# LABWC-AUTOSTART' "$PROFILE"; then
|
||||||
cp "$PROFILE" "$PROFILE.before-sddm-fix.bak"
|
cp "$PROFILE" "$PROFILE.before-sddm.bak"
|
||||||
|
|
||||||
# Удаляет блок, начиная с маркера до конца файла.
|
|
||||||
# В исходном setup.sh этот блок был последним.
|
|
||||||
sed -i '/^# LABWC-AUTOSTART$/,$d' "$PROFILE"
|
sed -i '/^# LABWC-AUTOSTART$/,$d' "$PROFILE"
|
||||||
|
|
||||||
chown "$USER_NAME:$USER_NAME" "$PROFILE"
|
chown "$USER_NAME:$USER_NAME" "$PROFILE"
|
||||||
echo "[+] Старый блок LABWC-AUTOSTART удалён."
|
echo "[+] LABWC-AUTOSTART удалён из .profile."
|
||||||
else
|
else
|
||||||
echo "[+] Старого блока LABWC-AUTOSTART нет."
|
echo "[+] Блока LABWC-AUTOSTART в .profile нет."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# OpenRC autostart
|
# OpenRC
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
echo "[*] Добавление служб в OpenRC..."
|
echo "[*] Включение служб OpenRC..."
|
||||||
|
|
||||||
rc-update add dbus default 2>/dev/null || true
|
rc-update add dbus default 2>/dev/null || true
|
||||||
rc-update add seatd default 2>/dev/null || true
|
rc-update add seatd default 2>/dev/null || true
|
||||||
|
rc-update add elogind default 2>/dev/null || true
|
||||||
rc-update add sddm default 2>/dev/null || true
|
rc-update add sddm default 2>/dev/null || true
|
||||||
|
|
||||||
echo
|
echo
|
||||||
@@ -204,19 +213,20 @@ echo " Проверка"
|
|||||||
echo "=================================================="
|
echo "=================================================="
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "[*] Пакеты:"
|
echo "[*] Установленные пакеты:"
|
||||||
apk info -e sddm sddm-openrc || true
|
apk info -e dbus seatd elogind elogind-openrc sddm sddm-openrc \
|
||||||
|
xorg-server mesa mesa-dri-gallium xf86-input-libinput || true
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "[*] Пользователь:"
|
echo "[*] Группы пользователя:"
|
||||||
id "$USER_NAME"
|
id "$USER_NAME"
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "[*] LabWC session:"
|
echo "[*] Запись LabWC:"
|
||||||
ls -l /usr/share/wayland-sessions/labwc.desktop
|
cat /usr/share/wayland-sessions/labwc.desktop
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "[*] DRM-устройства:"
|
echo "[*] DRM:"
|
||||||
ls -la /dev/dri 2>&1 || true
|
ls -la /dev/dri 2>&1 || true
|
||||||
|
|
||||||
echo
|
echo
|
||||||
@@ -224,13 +234,19 @@ echo "=================================================="
|
|||||||
echo " Готово"
|
echo " Готово"
|
||||||
echo "=================================================="
|
echo "=================================================="
|
||||||
echo
|
echo
|
||||||
echo "[!] SDDM НЕ запускается в этом скрипте специально."
|
echo "[!] В этом скрипте SDDM специально НЕ запускается."
|
||||||
echo "[!] Он будет запущен чисто после перезагрузки."
|
echo "[!] Это нужно, чтобы не повторять проблему stale-процесса."
|
||||||
echo
|
echo
|
||||||
echo "Выполни:"
|
echo "Теперь выполни:"
|
||||||
echo
|
echo
|
||||||
echo " reboot"
|
echo " reboot"
|
||||||
echo
|
echo
|
||||||
echo "После перезагрузки SDDM должен показать окно входа."
|
echo "После перезагрузки порядок будет такой:"
|
||||||
echo "В меню сессий выбери: LabWC"
|
echo " 1. dbus"
|
||||||
|
echo " 2. seatd"
|
||||||
|
echo " 3. elogind"
|
||||||
|
echo " 4. sddm"
|
||||||
echo
|
echo
|
||||||
|
echo "В SDDM войди пользователем $USER_NAME"
|
||||||
|
echo "и в меню сессий выбери LabWC."
|
||||||
|
echo
|
||||||
Reference in New Issue
Block a user