Aktualności:

Nasz kanał IRC - Porozmawiaj z nami.

Menu główne

unity + BOINC

Zaczęty przez lolek, 30 Kwiecień 2012, 13:03

lolek

Jako że znów mnie coś naleciało (chyba mózg się przegrzał od upału)  postawiłem sobie linuksa. A konkretnie Ubuntu 12.04 LTS z Unity i jak zawsze coś musi nie działać  :wth: Tym razem dla odmiany mam spory problem z menedżerem BOINC...zarówno po zainstalowaniu go z centrum oprogramowania, z konsoli (apt-get) jak i ze strony berkley jest ten sam problem. Nie można przejść do widoku zaawansowanego...w widoku "podstawowym" brakuje opcji "widok zaawansowany" i "preferencje".

Dodatkowo nie ma możliwości zamknięcia menedżera, po naciśnięciu krzyżyka, lub ppm na ikonie i "zamkni" menedżer na chwilę się minimalizuje i ponownie włącza.

Ps. jakim cudem BOINC w centrum oprogramowania waży 70MB, a po rozpakowaniu zajmuje >200MB ?  |-?

Edit: próba wylogowania użytkownika przy włączonym BOINCu 7/10 razy kończy się zawieszeniem systemu...pokazuje się pulpit, kursor myszki chodzi, ale ikony są nieaktywne.

Martin Fox

takie uroki unity - na gnome dziala normalnie, jest widok zaawansowany i w ogóle jest ok. Zawsze twierdziłem, że unity to największa porażka ubuntu.

lolek

To jeszcze jedno pytanie, co zrobić by boinc startował minutę po starcie systemu? Bo obecnie uruchamia się przed sterownikiem karty graficznej, i później nie ma do niej dostępu (przynajmniej tak mi się wydaje). Po restarcie boinc`a karta zaczyna liczyć. Ale wpisywanie za każdym razem hasła to kiepska opcja.

Martin Fox

boinc jest startowany przez skrypt w /etc/init.d ? bo jesli tak, wystarczy dodac w skrypcie
sleep 180 i bedzie startowal po 3 minutach :P

lolek

Tylko jeszcze powiedz gdzie  ;)

#! /bin/sh
### BEGIN INIT INFO
# Provides:          boinc
# Required-Start:    $all
# Required-Stop:     $local_fs $remote_fs
# Should-Start:      x11-common network-manager gdm kdm dbus
# Should-Stop:       x11-common
# Default-Start:     4 5
# Default-Stop:      0 1 2 3 6
# Short-Description: BOINC core client
# Description:       core client for the BOINC distributed computing
#                    infrastructure
### END INIT INFO

# Debian init.d script for the BOINC core client
# Copyright © 2005, 2006, 2007, 2008
# Debian BOINC Maintainers <pkg-boinc-devel@lists.alioth.debian.org>
#
# This file is licensed under the terms of the GNU General Public License,
# Version 2 or any later version published by the Free Software Foundation.

set -e
. /lib/lsb/init-functions

# Default values for the variables that are also set in the defaults file.
ENABLED=0
SCHEDULE=0
BOINC_USER=boinc
BOINC_DIR=/var/lib/boinc-client
BOINC_CLIENT=/usr/bin/boinc
BOINC_OOM_ADJ=15

# Source defaults file. Edit that file to configure this script.
if [ -e /etc/default/boinc-client ]; then
  . /etc/default/boinc-client
fi

# Quit quietly, if $ENABLED is 0.
test "$ENABLED" != "0" || exit 0

if [ "$BOINC_CLIENT" = "/usr/bin/boinc" ]; then
  test -x "$BOINC_CLIENT" || exit 0
elif [ ! -x "$BOINC_CLIENT" ]; then
  log_failure_msg "BOINC client '$BOINC_CLIENT' does not exist or is not" \
    "executable."
  exit 5
fi

if [ ! -d "$BOINC_DIR" ]; then
  log_failure_msg "BOINC data directory '$BOINC_DIR' does not exist."
  exit 6
fi

if [ -z "$BOINC_USER" ]; then
  log_failure_msg "BOINC_USER variable is empty. Set it to a user to run" \
    "the BOINC core client."
  exit 6
fi

if [ ! -z "$BOINC_OPTS" ]; then
(echo $BOINC_OPTS | grep -- '--daemon' 1>/dev/null) &&
log_warning_msg "\`--daemon' option detected \
on /etc/default/boinc-client, this \
can cause problems on boinc. The option \
will be suppressed"
BOINC_OPTS=`echo "$BOINC_OPTS" | sed 's/--daemon//g'`
fi

PIDFILE=/var/run/boinc.pid
DESC="BOINC core client"
NAME=`basename $BOINC_CLIENT`
BOINC_OPTS="--check_all_logins --redirectio --dir $BOINC_DIR $BOINC_OPTS"

is_running()
{
  retval=1
  if [ -r $PIDFILE ]; then
    pid=`cat $PIDFILE`
    if [ -e /proc/$pid ]; then
      procname=`/bin/ps h -p $pid`
      [ -n "$procname" ] && retval=0
    fi
  fi
  return $retval
}

start()
{
  log_begin_msg "Starting $DESC: $NAME"
  if is_running; then
    log_progress_msg "already running"
  else
    if [ -n "$DISPLAY" -a -x /usr/bin/xhost ]; then
       # grant the boinc client to perform GPU computing
       xhost local:boinc || echo -n "xhost error ignored, GPU computing may not be possible"
    fi
    start-stop-daemon --start --quiet --background --pidfile $PIDFILE \
      --make-pidfile --user $BOINC_USER --chuid $BOINC_USER \
      --chdir $BOINC_DIR --exec $BOINC_CLIENT -- $BOINC_OPTS
  fi
  log_end_msg 0

  if [ "$SCHEDULE" = "1" ]; then
    schedule
  fi
}

stop()
{
  log_begin_msg "Stopping $DESC: $NAME"
  if ! is_running; then
    log_progress_msg "not running"
  else
    start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE \
      --user $BOINC_USER --exec $BOINC_CLIENT

# Wait until really stopped - $pid is set from is_running
# (waiting for max 60s (600 cycles at 100ms))
i=0
while kill -0 "$pid" 2> /dev/null;  do
if [ $i = '600' ]; then
break;
else
if [ $i = '0' ]; then
echo -n " ... waiting "
elif [ $(($i%10)) = 0 ]; then
echo -n "."
fi
i=$(($i+1))
sleep .1
fi
done
  fi

  rm -f "$BOINC_DIR/lockfile"
  rm -f $PIDFILE
  log_end_msg 0
}

chrt_many()
{
   POLICY="$1"
   PRIO="$2"
   NICE="$3"
   shift 3
   for i in "$@"; do
     chrt -p $POLICY $PRIO $i || return
     # increasing compatibility with older versions of renice
     # in reaction to bug report #600134
     renice $NICE -p $i > /dev/null || renice -n $NICE -p $i
   done
}

schedule()
{
  log_begin_msg "Setting up scheduling for $DESC and children:"
  if ! is_running; then
    log_progress_msg "$NAME not running"
  else
    if [ ! -x "`which ionice 2>/dev/null`" ]; then
      log_progress_msg "ionice not found,"
    else
      if ionice -c 3 -p $pid 2>/dev/null; then
        log_progress_msg "idle,"
      else
        log_progress_msg "ionice failed,"
      fi
    fi

    children=`ps --ppid $pid -o pid= | tr '\n' ' '`

    if [ ! -x "`which chrt 2>/dev/null`" ]; then
      log_progress_msg "chrt not found"
    else
      (chrt_many --idle 0 19 $pid $children >/dev/null \
        && log_progress_msg "idleprio") || \
      (chrt_many --batch 0 19 $pid $children >/dev/null \
        && log_progress_msg "batch") || \
      (chrt_many --other 0 19 $pid $children >/dev/null \
        && log_progress_msg "normal") || \
      log_progress_msg "chrt failed"
    fi
    for BPID in ${pid} ${children}; do
      if [ -w /proc/${BPID}/oom_adj ]; then
        echo ${BOINC_OOM_AD} > /proc/${BPID}/oom_adj 2>/dev/null || true
      else
        echo "Could not write to /proc/${BPID}/oom_adj"
      fi
    done
  fi
  log_end_msg 0
}

status()
{
  STATUS="Status of $DESC:"
  if is_running; then
    log_success_msg "$STATUS running"
    children=`ps --ppid $pid -o pid= | tr '\n' ' '`
    if [ -x "`which chrt 2>/dev/null`" ]; then
      log_success_msg "Scheduling of $DESC: $pid"
      chrt -p $pid

      if [ -n "$children" ]; then
        log_success_msg "Scheduling of $DESC's children: $children"
        for i in $children; do
          chrt -p $i
        done
      fi
    fi
    log_success_msg "OOM killer status for $DESC:"
    for BPID in ${pid} ${children}; do
      echo -n "PID ${BPID}: "
      if [ ! -d "/proc/${BPID}" ]; then
        echo "/proc/${BPID} not found"
        continue
      fi

      echo -n "adj "
      if [  -r "/proc/${BPID}/oom_adj" ]; then
        cat /proc/${BPID}/oom_adj
      else
        echo "?"
      fi
      echo ", score "

      if [  -r "/proc/${BPID}/oom_adj" ]; then
        cat /proc/${BPID}/oom_score
      else
        echo -n "?"
      fi

      echo
    done

    # Display $BOINC_USER's cpu_share:
    uid=`id -u $BOINC_USER`
    cpu_share_file="/sys/kernel/uids/$uid/cpu_share"
    if [ -f "$cpu_share_file" ]; then
      log_success_msg "cpu_share: `cat "$cpu_share_file"`"
    fi
  else
    log_success_msg "$STATUS stopped"
  fi
}

case "$1" in
  start)
    start
    ;;

  stop)
    stop
    ;;

  restart|force-reload)
    stop
    sleep 1
    start
    ;;

  status)
    status
    ;;

  schedule)
    schedule
    ;;

  *)
    log_success_msg "Usage: $0 {start|stop|restart|force-reload|status|schedule}" >&2
    exit 1
    ;;
esac

exit 0

Martin Fox

możesz dać na samym początku skryptu, przed pierwszą linią :) co prawda nie jest to najpiękniejsze rozwiązanie, ale powinno zadziałać.
A w unity da się dostać do widoku zaawansowanego, działają skróty klawiszowe - CTRL+SHIFT+A :)
CTRL+SHIFT+V to powrót do widoku prostego, a CRTL+Q zamyka klienta na dobre (zamyka, nie minimalizuje).
mam nadzieję, że odrobinę pomogłem

lolek

Komenda faktycznie powoduje opóźnienie startu BOINCa, ale równocześnie uniemożliwia wyłączenie komputera...tak samo jak dodanie do autostartu (init.d) skryptu do automatycznego restartu klienta  :dunno:

Ale i tak wielkie dzięki  :parrrty:

Martin Fox

Cytat: lolek w 30 Kwiecień 2012, 16:05
Komenda faktycznie powoduje opóźnienie startu BOINCa, ale równocześnie uniemożliwia wyłączenie komputera...tak samo jak dodanie do autostartu (init.d) skryptu do automatycznego restartu klienta  :dunno:
Nie powinno uniemożliwiać, co najwyżej opóźniać.
Ewentualnie, gdzie jest sekcja
case "$1" in
  start)
    sleep 180 && start

powinno (chyba) zadziałać lepiej, tylko przy startowaniu, a nie przy restartcie/zamykaniu  - chwilowo nie mam jak sprawdzić ;(

lolek

dużo lepiej, system zamyka się z normalną prędkością  :) nie licząc kilku czerwonych linii podczas wyłączania  :)

Martin Fox


lolek

#10
To mam jeszcze jedno pytanie...jak zalogować się na root`a? Bo z poziomu sudo nie jestem w stanie zmienić grupy dla folderu dev/ati... Wywala mi że nie należę do grupy sudoers. Polecenie sudo su nie działa, sudo -i też nie, samo su prosi o hasło root`a ale żadno standardowe (root, passwd, brak) nie działa, sudo passwd root też nie skutkuje...

Edit
Coś spaprałem z uprawnieniami...moje hasło nie działa (mogę się zalogować na konto, ale sudo nie działa)

lolek

wykasowałem się z grupy root (idiota), a na domiar złego w trybie ratunkowym nie mogę dodać nowego użytkownika, ani zmienić swoich uprawnień...zniknęło na chwilę zasilanie i teraz wyskakuje mi że plik tylko do odczytu. mój nowy rekord, w 24h rozwaliłem system  XD

No nic...reinstalka  :whistle:

Martin Fox

po po instalce systemu powinno sie zrobic sudo passwd root :)

lolek

to wiem, tylko jak się nie było w grupie root to to było niewykonalne  ;D męczyłem się 2h ze zrobieniem tego, a reinstalka wraz z większością konfiguracji trwała 1h  XD

tito

Podłączę się tu.
Jak zainstalować amd sdk pod ubuntu 12.04?
Jestem totalnym zerem jeśli chodzi o linuxa.
W repozytorium tego niestety nie ma, a plik z netu ma rozszerzenie .tz
Do tej pory udało mi się: rozpakować - dać komendę make (po dodaniu kilku rzeczy z repozytorium zadziałało) - tu sie utworzył kolejny katalog z plikiem xxxapp-sdkxxx.a  (coś w tym stylu)  XD
Dalej nic nie mogę zrobić, make install nie działa.
Na chwile obecną sterowniki są w wersji 12.8 ze strony AMD.
Help, bo się karta marnuje.
Dodatkowo ścierwo jest dostępne tylko przez teamviewer - wolno się trochę działa na tym.

sknd

spróbuj tego

http://blog.markloiseau.com/2012/05/install-opencl-sdk-ubuntu/

a jak nie da rady, to poszukaj na ubuntuforums.org

Martin Fox

Ja pamiętam że było do ściągnięcia ze strony AMD w paczce w której był skrypt .sh - dawało się tylko +x i sam wszystko robił :)

tito

Niby coś się zainstalowało, ale BOINC dalej nie widzi usable GPU.
Wbijam w linuxa. Wolę zainwestować 600 zł na win7 i HDD.

Martin Fox

Ja tam nie wiem, u mnie SDK działa bez problemu, instalowało się samo przy pomocy skryptu .sh - skąd to ściągałeś?

tito

Ze strony AMD - ten najnowszy 2.7
Ale temat jest do zamknięcia - zamówienie już poszło. Win7 oraz HDD 500GB W sobotę odbiór w pn w godzinach wieczornych może zacznie liczyć.