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ń: 8089

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!

OSnews Wykop Blip Flaker Kciuk Śledzik Facebook Identi.ca Twitter del.icio.us Google Bookmarks