Zastąpienie ekranu logowania - autostart X i autologowanie
Kategoria: Artykuły, etykiety: startx, autostartx, autologowanie, startx, logowanie
Dodany: 2012-12-28 18:14
(zmodyfikowany: 2012-12-28 18:15)
Przez: mati75
Wyświetleń: 12545
Witajcie! Jak wiadomo wszystkie systemu biurkowe również te napędzane przez jądro Linux korzystają z ekranu logowania. Co często się zdarza w systemach ciągłych lub testowych po kolejnej aktualizacji systemu nie wstanie ekran logowania, również nie da się go naprawić.
Dzisiaj przyszedł do mnie kolega Piotrek, który jest dość zaawansowanym użytkownikiem systemu Arch Linux, że się już poddaje z próbą naprawienia ekranu logowania. Przy okazji rzucając parę razy najpopularniejszym i ultrauniwersalnym wyrazem w języku polskim.
Przejdźmy więc do modyfikacji...
Pierwszym krokiem było usunięcie ekranu logowania:
pacman -R lxdm
np. w Debianie wyglądałoby to tak:
apt-get purge lightdm
Drugim krokiem jest stworzenie pliku ~/.xinitrc. W moim przypadku wygląda to tak:
#!/bin/sh
export BROWSER=firefox
export DE=xfce
exec dbus-launch --sh-syntax --exit-with-session xfce4-session
Dla innych środowisk lub menadżerów okien plik będzie wyglądał inaczej. Musicie to sprawdzić w manualu.
Trzecim i najważniejszym krokiem jest stworzenie pliku odpowiedzialnego za uruchomienie Xservera. Potrzebujemy do tego programu xinit. Instalacja w Arch Linux:
pacman -S xorg-xinit
w Debianie:
apt-get install xinit
Tworzymy plik:
Dla powłoki bash jest to plik .bash_profile o następującej zawartości zawartości
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
exec startx &> /dev/null
fi
- Dla użytkowników powłoki zsh, czyli na przykład mnie. Musi zostać utworzony plik .zprofile o takiej samej zawartości jak dla powłoki bash.
Uruchomienie środowiska odbywanie się na powłoce tty1, ponieważ jest to domyślna powłoka do której uruchamia się większość dystrybucji, można dowolnie zmienić sobie, jeśli ktoś chce mieć uruchamianie logowanie z innej.
Dodatkowo można wspomnieć, że plik .xinitrc może uruchamiać kilka środowisk, wtedy jego zawartość wygląda tak:
#!/bin/sh
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
unset f
fi
if [[ $1 == "fluxbox" ]]
then
exec startfluxbox
elif [[ $1 == "spectrwm" ]]
then
exec spectrwm
else
echo "Choose a window manager"
fi
Powyższy sposób jest używany przeze mnie do uruchamiania środowiska na netbooku lub serwerze, jeśli sobie klient zażyczy obsługi za pomocą powłoki graficznej. Jest to szybki i lekki sposób na uruchamianie, a za razem również co ważne w środowisku serwerowym bezpieczny. Przede wszystkim odporny na wszelkiej maści wadliwe aktualizacje.
Opcja: Autologowanie
Dodatkową opcją jest możliwość autologowania i automatycznego uruchamiania środowiska.
Konfiguracja dla systemd jest przestawiona na wiki Arch Linux.
Dla systemów opartych o sysv np. Debian wygląda następująco:
Edytujemy plik /etc/inittab wyszukując w nim linii:
1:2345:respawn:/sbin/getty 38400 tty1
Wyłączamy ją:
#1:2345:respawn:/sbin/getty 38400 tty1
i dopisujemy po niej:
1:2345:respawn:/bin/login -f nasz_login tty1 </dev/tty1 >/dev/tty1 2>&1
wstawiając w miejsce nasz_login naszą nazwę użytkownika używaną do logowania, w moim przypadku wygląda to tak:
1:2345:respawn:/bin/login -f mati75 tty1 </dev/tty1 >/dev/tty1 2>&1
Zapisujemy i od teraz przy uruchomieniu systemu będzie nas automatycznie logować na powłokę tty1.
Podsumowanie
Niniejsza porada jest skierowana dla bardziej zaawansowanych użytkowników niż zaczynających swoją przygodę z systemem Linux. Ewentualne błędy proszę zgłaszać przez forum.
Pozdrawiam!