4 grudnia 2008

Linux framebuffer server - jak uruchomić aplikacje graficzną na serwerze bez trybu graficznego

Często zdarza mi się używać niesamowitych rozwiązań technologicznych :-) Opisane poniżej rozwiązanie nie tyle stwarza warunki do rozwoju, ale również do testowania rozwijanych projektów. Mowa tutaj o trybie framebuffer możliwego do użycia w graficznym systemie X11 windows system. Poniżej przedstawie jak najprościej uruchomić i podglądać nasz wirtualny system graficzny.



Na początek uzupełniamy system o pakiet serwera ramki Xvfb:

sudo apt-get install xvfb


Następnie startujemy wirtualny serwer graficzny w tle poleceniem:

sudo startx -- `which Xvfb` :2 -screen 0 1024x768x24 2>&1 >/dev/null &


W następnej kolejności uruchamiamy naszą aplikacje graficzną na serwerze np: gimp poleceniem:

sudo DISPLAY=:2 gimp


W tym czasie możemy zrobić zrzut ekranu naszego wirtualnego serwera graficznego poleceniem:

xwd -display :2 -root | convert xwd:- /tmp/framebuffer_server_autput.png

lub możemy po zainstalowaniu aplikacji byzanz nagrać obraz z serwera graficznego do animowanego plku GIF:

sudo apt-get install byzanz
sudo DISPLAY=:2 byzanz-record -l --display=:2 /tmp/rec.gif


Uzyskany ze zrzutu ekranu obrazek możmy wyświetlić np: w ten sposób:

sudo DISPLAY=:0 gthumb /tmp/framebuffer_server_autput.png

a wówczas naszym oczom może ukazać sie następujący widok:



Zadajecie sobie pewnie pytanie "po cóż mi taki bezużyteczny framebuffer, skoro nie mam dostępu do pulpitu" i odpowiedzią jest poniższe rozwiązanie używające serwera X11vnc do przechwytycenia widoku framebuffera.

Na początek instalujemy pakiet X11vnc:

sudo apt-get install x11vnc


Po starcie w następujący sposób:

x11vnc -display :2

zauważymy komunikaty typu:

04/12/2008 20:50:11 Autoprobing TCP port
04/12/2008 20:50:11 Autoprobing selected port 5900
04/12/2008 20:50:11 fb read rate: 480 MB/sec
04/12/2008 20:50:11 screen setup finished.
04/12/2008 20:50:11
04/12/2008 20:50:11 WARNING: You are running x11vnc WITHOUT a password. See
04/12/2008 20:50:11 WARNING: the warning message printed above for more info.
04/12/2008 20:50:11

The VNC desktop is: localhost:0
PORT=5900

Informacje wymagane do połączenia z framebuffer serwerem to localhost:0. Połączenia możemy dokonać używając klienta w ten sposób:

vncviewer localhost:0

Powinien pojawić się nam w nowym oknie przechwycony pulpit naszego wirtualnego serwera graficznego.

Dopiero po wykonaniu powyższych przykładów widać wyraźniej, jakie otwierają się przed nami możliwości. Możemy dla przykładu używać wirtualnego pulpitu do uruchamiania procesów automatycznego testowania stron internetowych przy pomocy takich narzędzi jak Selenium oraz Hudson, których moc postaram się przybliżyć w kolejnej wypowiedzi.

Linki:
http://en.wikipedia.org/wiki/Xvfb
http://www.hackinglinuxexposed.com/articles/20040608.html
http://www.xfree86.org/4.2.0/Xnest.1.html
http://wiki.x.org/X11R6.8.2/doc/Xvfb.1.html
http://wiki.seleniumhq.org/display/SRC/Selenium-RC+and+Continuous+Integration

1 komentarz:

Anonimowy pisze...

W Ubuntu 10.10 doświadczyłem nowości w uruchamianiu środowiska wirtualnego pod Hudsona - oto moje doświadczenia:

== Uruchomienie środowiska dla wirtualnego pulpitu

/usr/bin/Xvfb :5 -ac -screen 0 1024x768x8

x11vnc -display :5

xtightvncviewer localhost:0

== Odpalanie aplikacji na wirtualnym pulpicie

DISPLAY=:5.0 xterm

DISPLAY=:5.0 /opt/google/chrome/google-chrome

== Uruchomienie sewera i klienta podglądu

DISPLAY=:5.0 x11vnc -display :5 -listen 127.0.0.1

xtightvncviewer 127.0.0.1:0