Kiwi, to bude tym, ze ked sa ti spusta boinc-client pri starte systemu, ide to na pozadi a premennu DISPLAY nema nastavenu, preto xhost nezafunguje, boinc-client nevie pristupit na graficky ovladac a preto sa nakoniec tvari, ze GPU nenasiel. A ak potom z terminalu v grafickom prostredi spustis "sudo /etc/init.d/boinc-client restart", tak GPU najde (pretoze v grafickom prostredi mas nastavenu premennu DISPLAY na :0 a zaroven mas pravo pristupovat do X-ov, kedze to graficke prostredie bezi po tvojom prihlaseni).
Riesi sa to priblizne nasledovne:
1. X-serveru musis povedat, ze uzivatel boinc (pod ktorym bezi boinc-client) moze pristupovat na beziaci X-server. Bohuzial riesit to v /etc/init.d/boinc-client (pripadne v /etc/default/boinc-client) nie je najstastnejsie, za istych okolnosti (ktore nastavaju u vacsiny ludi) to skratka nezaberie. Takze najlepsie je pridat to do konfiguraku login managera - teda hned ako sa spusti X-server, prideli sa pravo pristupu nan uzivatelovi boinc. U mna (kdm) je to v /etc/kde4/kdm/Xsetup, pre gdm je to /etc/gdm3/Init/Default, pre ine login managery neviem.
Najlepsie, ked tam pridas nielen uzivatela boinc, ale aj uzivatela root (uz sa mi stalo, ze root nemohol pristupovat na X-server, ak bol prihlaseny iny uzivatel a root nebol v xhosts; root je ten, co startuje boinc-klienta pocas initu a v tom init-skripte je ten polofunkcny prikaz xhost...), takze by tam malo byt:
Kód: Vybrať všetko
/usr/bin/xhost +si:localuser:root >/dev/null
/usr/bin/xhost +si:localuser:boinc >/dev/null
2. Boinc-klientovi musis povedat, aby pouzival standardny X-server. Na koniec suboru /etc/default/boinc-client treba pridat nasledujuci riadok:
3. Najzradnejsia cast: Treba zabezpecit, aby sa boinc-client odstartoval az vtedy, ked X-server bezi.
Ten sleep 5 pri starte boinc-klienta moze pomoct, ale nemusi, lebo zavislostny paralelny boot je pomerne rozbity (skripty sa sice spustia v zavislostnom poradi, ale uz nie je garantovane, ze sa vsetky aj dokoncia - a niektore skripty cakaju na nieco dlhsie). Mozno by sa dala najst vhodna hodnota sleep, ktora by fungovala vo vacsine pripadov, ale spolahnut sa na to neda (na toto narazal shafa).
Ja radsej pouzivam restart klienta pri starte/resete X-servera (do kdm sa to da elegantne dohodit, vid
tu, do gdm to pojde tiez, pretoze pouziva tiez normalny shellovsky skript). Mne to s tym kdm chodi perfektne, pretoze ak sa spusti najprv boinc-client (ktory v tom momente nenajde GPU pretoze X-server este nebezi) a az potom kdm, tak skript pri starte kdm (X-server sa prave odstartoval/resetol) zabezpeci restart boinc-clienta (ktory uz potom najde beziaci X-server a deteguje GPU). A ak sa spusti kdm skor, tak sa len nastavia prava na pracu s X-serverom a potom pri starte boinc-clienta je uz riadne nastaveny X-server rovno k dispozicii a nie je co riesit...
Ale mozno nejake jednoduche login managery nemaju take sofistikovane startovacie skripty. Jedna moznost je prihodit to do /etc/rc.local - ten sa spusta az po vsetkych ostatnych init skriptoch. Ale opat ten nestastny paralelny boot: vieme sice, ze ostatne init skripty boli uz odstartovane, ale nevieme, ci uz skoncili svoju robotu a vsetko bezi... takze len restart boinc-clienta v /etc/rc.local nemusi pomoct (mozno sa login manager este len startuje a X-server este nebezi), nejaky sleep predtym by pomoct mohol, ale opat nic negarantuje.
Ponuka sa aj moznost dat to do init skriptu toho login managera (na koniec start sekvencie, ked uz vieme, ze X-server bezi), ale to je zas v Ubuntu pravdepodobne rozhasene upstartom (ak je ten login manager konvertovany do upstartu, tak nema klasicky init skript, ale upstart konfigurak a do toho sa to dohodit neda - a predpokladam, ze defaultny login manager do upstartu konvertovany je). Pravdepodobne by sa to dalo nejako vyriesit aj v tom upstarte (a mozno aj elegantnejsie nez dopisovanim do init skriptu), ale kedze som od Ubuntu uspesne zutekal, tak sa v tom teraz nebudem hrabat... Podla mna sa to zrealizovat urcite da, len na to treba nejaku extra robotu.
BTW, vies aky je rozdiel medzi vyriesit a poriesit? Poriesit to netreba, uz to poriesene je