Po ostatnim odchudzeniu systemu i przerzuceniu się na Fluxbox’a, postanowiłem poradzić coś także na manager logowania, ponieważ GDM nie grzeszy lekkością. Na pierwszy ogień poszedł XDM, jednak nie zadowalał mnie brakiem możliwości restartu, wyłączenia komputera, czy zmiany sesji. Znalazłem jednak dużo ciekawsze i co najważniejsze konsolowe rozwiązanie oparte o framebuffer z możliwością wymiany skórek o nazwie Qingy.
Na początek instalujemy potrzebne pakiety (zapewne nie wszystkie są potrzebne/jakichś może brakować z uwagi na to że mój Ubuntu już trochę przeszedł):
$ sudo apt-get install libcurses-perl libcurses-ruby libncurses5-dev x11proto-scrnsaver-dev xscreensaver-data-extra xscreensaver-gl-extra xscreensaver-data xscreensaver-data-extra xscreensaver-gl-extra xscreensaver-data libxext-dev libxxf86misc1 libxext6 libxss-dev directfb libdirectfb-dev libdirectfb-bin libdirectfb-0.9-25 libdirectfb-bin libdirectfb-0.9-25 libxss1
Teraz pora na ściągnięcie źródeł Qingy i skompilowanie ich:
$ wget http://heanet.dl.sourceforge.net/sourceforge/qingy/qingy-0.9.6.tar.bz2
$ tar -xjf ./qingy-0.9.6.tar.bz2
$ cd qingy-0.9.6.tar.bz2
$ ./configure –prefix=/usr
$ make
$ sudo make install
Jeśli podczas wykonywania polecenia configure wyskoczyły jakieś błędy związane z brakiem jakiegoś pliku w systemie, czy biblioteki, oznaczać to może brak odpowiedniej paczki. Na stronie Debiana jest możliwość przeszukania zawartości pakietów w poszukiwaniu odpowiedniego pliku (nie bardzo kojarzę, żeby było coś takiego konkretnie dla Ubuntu. Kiedy już mamy nazwę pakietu można go spróbować zainstalować apt’em.
Kolejnym krokiem będzie zainstalowanie skórek, które upiększą nieco nasz manager logowania:
$ wget http://puzzle.dl.sourceforge.net/sourceforge/qingy/qingy_0.3_themepack_1.0.tar.bz2
$ tar -xjf ./qingy_0.3_themepack_1.0.tar.bz2
$ cd qingy_0.3_themepack_1.0
$ sudo cp -R ./* /usr/share/qingy/themes/
Teraz ustawiamy plik /usr/etc/qingy/settings (jako root) aby nie było żadnych problemów z logowaniem do trybu graficznego. Poniżej ustawienia które należy zmienić (pozostałe mogą zostać domyślnie):
x_sessions = „/etc/X11/Sessions/”
text_sessions = „/usr/etc/qingy/sessions/”
temp_files_dir = „/tmp”
x_server = „/usr/bin/X11/X”
xinit = „/usr/bin/xinit”
x_args = „-dpi 100 vt7 -nolisten tcp”
log_level = error
log_facilities = console, syslog
x_server_offset = 0
x_server_tty = unused_tty
theme = „casablanca” # nazwa motywu (random = losowo)
Teraz musimy sprawić aby przy startowaniu systemu, konsola była w trybie framebuffer. Edytujemy w tym celu jako root plik /boot/grub/menu.lst i przy pierwszym kernelu dopisujemy parametr vga określający rozdzielczość konsoli (w tym wypadku vga=790 to 1024x768x16M). [Nie kopiować całości kodu poniżej, ponieważ kernel może się różnić!]:
title Ubuntu, kernel 2.6.20-16-lowlatency
root (hd0,0)
kernel /boot/vmlinuz-2.6.20-16-lowlatency
root=UUID=233d19ef-17a5-4ee7-8afe-47cdb4f87b7b ro quiet splash locale=pl_PL vga=790
initrd /boot/initrd.img-2.6.20-16-lowlatency
quiet
savedefault
Aby zachować ustawienia GRUB’a po automagicznej instalacji kernela przy aktualizacji (zapobiega to wyłączeniu framebuffera po aktualizacji jądra), dopisz odpowiednie paramtery do pliku /boot/grub/menu.lst (linia musi pozostać zakomentowana!):
## DO NOT UNCOMMENT THEM, Just edit them to your needs
## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
## kopt_2_6_8=root=/dev/hdc1 ro
## kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=233d19ef-17a5-4ee7-8afe-47cdb4f87b7b ro vga=790
Teraz aktualizujemy GRUB’a i tworzymy katalog w którym Qingy będzie zapisywał sesje X’ów:
$ sudo grub-install /dev/hda
$ sudo mkdir /etc/X11/Sessions
Edytujemy plik /etc/X11/Xwrapper.config aby zezwolić Quingy na uruchamianie X’ów poprzez ustawienie zmiennej allow_users:
allowed_users=anybody
Ostatnim krokiem będzie podpięcie Qingy zamiast getty pod konsolę tty1 (analogicznie można to zrobić dla pozostałych). Edytujemy w tym celu jako root plik /etc/event.d/tty1 według poniższego wzoru:
# tty1 – getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.
start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6
respawn
#exec /sbin/getty 38400 tty1
exec /usr/sbin/qingy tty1
Polecam pozostawić sobie przynajmniej jedną konsolę ze standardowym getty tak na wszelki wypadek. Jeśli wszystko przebiegło bez problemów, po zrestartowaniu systemu na konsoli tty1 powinniśmy zobaczyć logowanie Qingy.
W moim przypadku w X’ach pojawił się problem braku polskiej klawiatury, ale można to rozwiązać edytując plik ~/.xsession (tylda przed nazwą prowadzi do katalogu domowego aktualnego użytkownika). Powinien on mieć zawartość:
LANG=pl_PL.UTF-8
export LANG
LC_CTYPE=”pl_PL.UTF-8″
LC_NUMERIC=”pl_PL.UTF-8″
LC_TIME=”pl_PL.UTF-8″
LC_COLLATE=”pl_PL.UTF-8″
LC_MONETARY=”pl_PL.UTF-8″
LC_MESSAGES=”pl_PL.UTF-8″
LC_PAPER=”pl_PL.UTF-8″
LC_NAME=”pl_PL.UTF-8″
LC_ADDRESS=”pl_PL.UTF-8″
LC_TELEPHONE=”pl_PL.UTF-8″
LC_MEASUREMENT=”pl_PL.UTF-8″
LC_IDENTIFICATION=”pl_PL.UTF-8″
LC_ALL=
# poniżej dla Fluxboxa: startfluxbox , dla GNOME: gnome-session zależnie od naszego domyślnego managera
exec /usr/bin/startfluxbox
Teraz po wybraniu w Qingy startowania poprzez ~/.xsession z klawiaturą nie powinno być już problemu o ile taki zaistniał wcześniej.
Od każdego wymagana jest także rzetelność, kultura słowa oraz szacunek do pozostałych dyskutantów. Nie akceptowane są próby manipulacji, uciekanie się do emocji, wulgarne wypowiedzi oraz argumentacja pozamerytoryczna. Jeśli nie jesteś w stanie zastosować się do powyższych zasad, Twój komentarz prawdopodobnie zostanie usunięty.
Opracowano na podstawie: "Etyka międzyludzkiej komunikacji", red. J. Puzynina, wyd. Semper, Warszawa 1993
Kanał RSS z komentarzami do tego wpisu. TrackBack URL
poszło do delicji
nice art.
qrdupel — 31 maja 2007 @ 10:02
dzięki
jeżeli ktoś szuka jeszcze lżejszego rozwiązania to polecam slim’a
marines — 31 maja 2007 @ 15:31
To qingy nawet fajne, ale mało stabilne. Już zdarzyło mu się „zwiesić” — na zalogowanych tty zaśmiecał ostatnią linijkę, na niezalogowanych nie szło się zalogować (jakby nakładały się dwa ekrany logowania). Do tego powoli reaguje, nie da się ukryć.
Michał Górny — 1 czerwca 2007 @ 06:22
Hmm czy ja wiem, u mnie działa bez problemu tzn. nie zwiesił się jeszcze ani razu, nie ma jakichś problemów czy to po zalogowaniu do tekstowego czy graficznego. W tym drugim tylko czasami w lewym górnym rogu widać mrugający podkreślnik jak X’y wystartują ale nie zawsze i wystarczy przełączyć się na inną konsolę, wrócić i już jest ok. Co do czasu reakcji to nie zauważyłem żeby chodziło jakoś wolno – może to kwestia też systemu i skryptów startowych odpowiedzialnych za wyświetlanie logowania na konsolach. W każdym razie na Ubuntu działa
dunDer — 1 czerwca 2007 @ 08:10
Oboje kompilujemy przecież ze źródeł, prawdopodobnie tych samych. Co do czasu reakcji — miałem na myśli, ze bezpośrednio po wejściu na dane tty, następuje chociaż minimalny odstęp, celem przeskoku w DirectFB. Jeśli masz LCD, to możesz tego nie zauważać, ale na CRT męczące jest takie przełączanie rozdzielczości. Tym bardziej, jeśli przeskakuję z jednego qingy’ego na drugiego. A skrypty startowe raczej nie mogą tu mieć wiele do rzeczy.
Z drugiej strony, takie rozwiązanie również mnie cieszy — dzięki temu bowiem qingy zużywa względnie mało pamięci (bo dopiero po wskoczeniu na dane tty ładuje się interfejs).
Michał Górny — 1 czerwca 2007 @ 16:51
U mnie mało zauważalne jest to zwolnienie, ale na pewno jakieś jest w porównaniu z konsolą bez framebuffera. Skrypty startowe wręcz przeciwnie – mają wiele do rzeczy, bo Ubuntu używa upstartu a Ty możesz mieć init
W każdym razie wiadomo że coś kosztem czegoś – jeśli chciałbyś przyspieszenia to zawsze możesz korzystać z tekstowego Quingy, bo i tak plusem jest to, że nie trzeba posiadać żadnego X’owego managera logowania przez co i tak jest to szybsze rozwiązanie niż XDM na przykład a lepiej zrobione (bo ma wybór sesji, reboot i shutdown). W każdym razie polecam dla kogoś kto X’ów używa i chce odchudzić nieco system.
dunDer — 1 czerwca 2007 @ 17:02
Nie miałem na myśli spowolnienie względem konsoli bez framebuffera (bo takie coś jest nieużytkowalne), ale spowolnienie związane z koniecznością przejścia ze zwykłego fb na DirectFB (tj. zmiany trybu karty).
A sesję iksną i tak odpalam „ręcznie”, przez start-stop-daemona (tj. prostym skrypcikiem).
Michał Górny — 1 czerwca 2007 @ 17:22