Z racji tego, że ze swoimi Raspberry Pi – podobnie jak z serwerami – najczęściej łącze się zdalnie (bez korzystania z klawiatury podpiętej bezpośrednio do Pi), to w tym przypadku oprócz SSH do pracy „w konsoli” czasem potrzebuje skorzystać z interfejsu graficznego – w tym celu przyda się serwer VNC.
Na potrzeby tego poradnika wybrałem TightVNC, który oprócz tego, że jest darmowy jest też relatywnie prosty w konfiguracji i instalacji, o czym mam nadzieję zaraz się przekonacie…
Spis treści w artykule
TightVNC
Zaczynamy od zalogowania się do konsoli Pi, i wprowadzenia komendy:
sudo apt-get install tightvncserver -y
Sama instalacja jest wręcz banalna, dzięki temu, że program znajduje się w standardowych repozytoriach (zasobach) Debiana.
Uruchomienie serwera VNC
Po instalacji serwer VNC (TightVNC) uruchamiamy poleceniem:
/usr/bin/tightvncserver
Przy pierwszym uruchomieniu (dla każdego użytkownika) musimy zdefiniować hasło. Można też zdefiniować dodatkowe hasło „tylko do odczytu”, przydatne np. dla szkoleń.
Warto zwrócić uwagę na linijkę:
New 'X' desktop is raspberrypi:1
Jest to informacja, że serwer VNC „czeka na nas” na hoście „raspberrypi” (może być też adres IP) w (małe uproszczenie) „pierwszej instancji”.
Jest to o tyle istotna informacja, że łącząc się po VNC z Pi oprócz nazwy hosta/adresu IP musimy podać też do której instancji się chcemy podłączyć – ma to znaczeni zwłaszcza, gdy z systemu (po VNC) korzysta „na raz” więcej niż jedna osoba, wtedy każdy użytkownik ma swoją instancje, swoje hasło.
Można też ręcznie „wymusić” z jakim numerem (jeśli będzie wolny) chcemy mieć swoją instancję, robimy to poprzez małą modyfikację polecenia uruchamiającego:
/usr/bin/tightvncserver :x
Gdzie za x wstawiamy odpowiednią cyfrę:
Łączymy się ze zdalnym pulpitem
Gdy serwer VNC na Raspberry Pi mamy zainstalowany, skonfigurowany i uruchomiony możemy się połączyć zdalnie za pomocą klienta którego instalujemy na komputerze (odpowiedniego dla Waszego systemu klienta TightVNC możecie pobrać na tej stronie).
Uruchamiamy klienta i wpisujemy odpowiedni „adres”:
Nazwa_hosta:1
lub:
Adres_IP:1
Gdzie:
- Nazwa_hosta – to nazwa komputera Raspberry Pi, domyślnie „raspberrypi”
- Adres_IP – to lokalny adres IP pod którym Raspberry Pi znajduje się w sieci, np.: 192.168.1.1
I wpisujemy zdefiniowane wcześniej hasło:
Jeśli wszystko przebiegło bez problemów powinniśmy zobaczyć „wirtualny pulpit”:
Automatyczny start serwera VNC
Jeśli zamierzacie korzystać regularnie z serwera VNC (np. na Raspberry Pi) warto skonfigurować całość tak, by serwer startował automatycznie po każdym uruchomieniu Pi.
Metod/poradników w Internecie wprawdzie jest wiele, ale podam choć jedną metodę „krok po kroku” – będzie to metoda wielokrotnie przeze mnie sprawdzona.
Zaczynamy od utworzenia odpowiedniego „skryptu startowego” korzystając z edytora Nano:
sudo nano /etc/init.d/tightvncserver
I wklejamy (korzystając z SSH/PuTTy możemy użyć kopiuj/wklej) lub wpisujemy tam kod:
#!/bin/sh
### BEGIN INIT INFO
# Provides: tightvncserver
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop tightvncserver
### END INIT INFO
# More details see:
# http://www.penguintutor.com/linux/tightvnc
### Customize this entry
# Set the USER variable to the name of the user to start tightvncserver under
export USER='patryk'
### End customization required
eval cd ~$USER
case "$1" in
start)
su $USER -c '/usr/bin/tightvncserver :1'
echo "Starting TightVNC server for $USER "
;;
stop)
pkill Xtightvnc
echo "Tightvncserver stopped"
;;
*)
echo "Usage: /etc/init.d/tightvncserver {start|stop}"
exit 1
;;
esac
exit 0
- Skrypt pochodzi ze strony http://www.penguintutor.com/linux/tightvnc
- Tu możesz pobrać plik ze skryptem z naszego serwera
Zwracam uwagę na fragmenty:
export USER='patryk'
Zamiast „patryk” wpiszcie tam własną nazwę użytkownika.
su $USER -c '/usr/bin/tightvncserver :1'
Zamiast „:1” możemy podać inny numer „ekranu”.
Pobieranie skryptu
Skrypt możecie pobrać bezpośrednio ze strony autora:
wget http://www.penguintutor.com/otherfiles/tightvncserver-init.txt
sudo mv tightvncserver-init.txt /etc/init.d/tightvncserver
Lub z naszego serwera:
wget https://webinsider.pl/add/download/?link=raspberrypi_vnc_tightvncserver_initd -O tightvncserver
sudo nano tightvncserver /etc/init.d/tightvncserver
Gdy już zmienicie nazwę „na własną” wychodzimy z Nano (CTRL+X i następnie Y).
Kolejny krok to nadanie odpowiednich uprawnień/atrybutów właśnie utworzonemu plikowi:
sudo chmod 755 /etc/init.d/tightvncserver
I na koniec:
sudo update-rc.d tightvncserver defaults
Po tej operacji serwer VNC powinien startować automatycznie – wystarczy uruchomić Pi ponownie by się o tym przekonać… ;-)
Można tez przetestować ręcznie działanie komendy „start” i „stop” korzystając z poleceń:
sudo /etc/init.d/tightvncserver start
sudo /etc/init.d/tightvncserver stop
Automatyczny start dla więcej niż jednego użytkownika
Czasem może pojawić się potrzeba, by uruchamiać serwer VNC automatycznie dla więcej niż jednego użytkownika naraz – pewnie można to zrobić poprzez modyfikacje (rozbudowę) skryptu – zwłaszcza przy większej ilości użytkowników, przydatna może okazać się jakaś pętla.
Ale na razie sposób prostszy, a zarazem daje możliwość relatywnie łatwego zarządzania użytkownikami, bo każdy (dodatkowy) użytkownik będzie miał swój plik – swoją własną usługę.
Zaczynamy od skopiowania skryptu uruchamiającego – w tym przykładzie nowy użytkownik to „Patryk”:
sudo cp /etc/init.d/tightvncserver /etc/init.d/tightvncserver_patryk
Następnie musimy dokonać w nim kilku zmian poprzez modyfikacje linijek 3, 8, 23, 31 i oczywiście 16:
sudo nano /etc/init.d/tightvncserver_patryk
I dokonujemy kilku modyfikacji:
# Provides: tightvncserver_patryk
# Short-Description: Start/stop tightvncserver_patryk
export USER='patryk'
# Każdy użytkownik musi mieć unikatowy numer "ekranu"
# W tym wypadku 2gi użytkownik a więc :2
su $USER -c '/usr/bin/tightvncserver :2'
echo "Usage: /etc/init.d/tightvncserver_patryk {start|stop}"
Po zapisaniu zmian dodajemy skrypt do „autostartu” za pomocą polecenia:
sudo update-rc.d tightvncserver_patryk defaults
Teraz wystarczy uruchomić nową usługę by sprawdzić czy wszystko działa:
sudo /etc/init.d/tightvncserver_patryk start
Oczywiście w kliencie jako adres serwera podajemy :2 dla tego użytkownika, a więc np.:
- raspberrypi:2
- adres_IP:2
Jeśli zajdzie potrzeba wyłączenia automatycznego startu serwera VNC dla jakiegoś użytkownika wystarczy skorzystać z polecenia:
sudo update-rc.d -f tightvncserver_patryk remove
Zmiana hasła do serwera VNC
By zmienić hasło do serwera VNC wystarczy zalogować się do systemu np. po SSH na wybranego użytkownika i skorzystać z polecenia:
vncpasswd
Tak jak za pierwszym razem – podajemy nowe hasło, powtarzamy je, a w razie potrzeby tworzymy też hasło tylko do odczytu.
Można też „mniej subtelnie” – kasując plik:
rm ~/.vnc/passwd
Gdzie „~” oznacza katalog domowy użytkownika.
Połączenie z aktywnym pulpitem (X11VNC)
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01
wyszstko działa poza skrytptem do autouruchamiania. Co zrobić z tym?:
root@raspberrypi:/home/pi# sudo update-rc.d tightvncserver defaults
update-rc.d: using dependency based boot sequencing
insserv: Script tightvncserver is broken: incomplete LSB comment.
insserv: missing `Provides:’ entry: please add.
insserv: missing `Required-Start:’ entry: please add even if empty.
insserv: missing `Required-Stop:’ entry: please add even if empty.
insserv: missing `Default-Start:’ entry: please add even if empty.
insserv: missing `Default-Stop:’ entry: please add even if empty.
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `tightvncserver’
insserv: Default-Stop undefined, assuming empty stop runlevel(s) for script `tightvncserver’
root@raspberrypi:/home/pi# sudo /etc/init.d/tightvncserver start
/etc/init.d/tightvncserver: 1: cd: can’t cd to ~’pi’
/etc/init.d/tightvncserver: 34: /etc/init.d/tightvncserver: stop}”: not found
Z góry dziękuję za odpowiedź.
Witam
Dzięki za info – podczas jednej z modyfikacji uciekło formatowanie kodu skryptu i dlatego po skopiowaniu nie działa on prawidłowo…
Teraz już jest OK – możesz skopiować kod (jeśli korzystasz z SSH), lub skorzystać z opisanej opcji z użyciem „wget” (jeśli pracujesz „bezpośrednio” na Pi)
Pamiętaj o zmianie nazwy użytkownika na własną :-)
A jak zalogować się jeśli port został zmieniony na inny niż domyślny (5900)?
Normalnie logujemy się IP:1, do aplikacji działającej pod Windowsem IP::PORT. A jak do linuxa ze zmienionym portem? IP::PORT:1 ani IP:1::PORT nie działa.
W pliku /usr/bin/vncserver jest taka linijka, która powinna Ci pomóc (zasada obliczania „portu”):
$vncPort = 5900 + $displayNumber;
Chciałem użyć tego skryptu do uruchomienia innego programu więc tam gdzie było o tight vnc wpisałem nazwę programu, ale nie uruchamia się po restarcie.
Coś źle zrobiłem, czy ten skypt nie jest tak uniwersalny ;)?
Witam
Rozumiem, że chodzi o automatyczny start razem z Pi?
Plik taki ma konkretną strukturę, i to jest element stały:
#!/bin/sh
### BEGIN INIT INFO
Nagłówek (ważne są tu podane elementy)
### END INIT INFO
kod skryptu
exit 0
Dla skryptu który ma uruchamiać się/coś podczas startu systemy ważny jest ten element:
Oraz ew.:
Zobacz może mój skrypt dotyczący RAMdysku, może to Ci coć pomoże…
I skrypt „wzorcowy” jeśli chodzi o „init.d”:
Zrobiłem skrypt uruchamiający program korzystający z kamery USB i działa, ale TYLKO przy podłączonym kablu LAN do malinki. Bez niego program się nie uruchamia. Program nie zapisuje plikw na dysku sieciowym.
Co jest tego przyczyną bo nie mam pojęcia?
Kamerka podpięta bezpośrednio do Raspberry Pi, czy przez (aktywny) HUB?
Może zasilanie… Bo w Pi jeden chipset odpowiada za LAN i USB… Może tu coś… Bo często przy „kiepskim zasilaczu” (ampery!) są właśnie jakieś problemy związane z LAN i/lub USB.
Choć Pi chyba (?) nie pobiera energii z gniazda RJ45 (PoE), ale… ;-)
Choć z drugiej strony, zależy co to za skrypt, może coś przy zależnościach związanych z „Required-Start”
Nie wiesz może jak się połączyć z raspberry z poziomu ubuntu?
Bo z win7 przez tightvnc viewer działa.
Z ubuntu już niestety nie… Dziwne jest to, że na ubuntu ten sam program (wersja java) wymaga podania portu, a na win nie…
Może muszę jakiś port podać?
Musiałem na chwilę odejść od komputera, żeby wymyślić ;)
W terminalu Ubuntu:
vncviewer ip_raspberrki:1
i działa jak należy
Oczywiście zamiast ip_raspberrki wpisujemy jej ip, czyli, np:
vncviewer 192.168.1.22:1
Nie wiem czemu, ale w wersji:
vncviewer raspberrypi:1 Nie działa… Ale to jest pikuś ;)
Pozdrawiam
Z jakiś przyczyn u Ciebie Ubuntu nie znajduje/widzi Pi po nazwie hosta… Może „raspberrypi.local”, a konkretnie jeśli chodzi o VNC:
W tym wypadku tak jak napisałeś: „po IP” powinno zawsze zadziałać…
Na wszelki wypadek trochę zmodyfikowałem wpis, tak by teraz nie było już wątpliwości.
Teraz mam nieco inny problem – nie ma obrazu na hdmi…
Przypuszczam, że w xorg.conf coś się namieszało…
Zapewne uznał to co ustawia vncserver (czy co tam innego) jako monitor.
Jeśli chodzi o brak obrazy w Raspberry Pi po HDMI to:
Jak nie ma od samego etapu „boot” to sprawdź, czy masz w config.txt wszystko OK, może trzeba wymusić mu HDMI
https://webinsider.pl/raspberry-pi-config-txt/
Jak na etapie „boot” jest, a zanika później – to trzeba by cofnąć się do ostatnich zmian które robiłeś…
jest na etapie bootowania.
odkomenderowawszy safe mode w config.txt obraz się pojawił ale w jakiejś komicznej rozdzielczości (530×430 czy coś takiego).
zakomentowałem z powrotem. potem zrobiłem masę bezsensownych komend (w tym Xorg -configure, która oczywiście nic poza wywaleniem błędów wydawała się nie robić). Któraś z nich widocznie zadziałała, bo po restarcie obraz jest już w normalnej rozdzielczości.
w ogóle jakoś mi dzisiaj nie idzie ;) chyba pora odejść od kompów…
Dzięki za pomoc, pozrawiam!
PS. MEGA fajny ten blog! Sporo mi ułatwił, dzięki :) A jeśli to w czymś pomoże/zainteresuje i/lub jeszcze tego nie wiesz, to trafiłem tu szukając opisów raspi-config pojawiającego się przy pierwszym uruchomieniu raspbiana :)
Fajnie, że już działa…
I dzięki za dobre słowa…
A wszystko (jeśli chodzi o Pi) zaczęło się od tego, że dla kilku znajomych postanowiłem przygotować „małe info” jak zacząć… I dalej jakoś tak poszło :-)
W kolejce jest już gotowych kilka kolejnych wpisów dotyczących Pi, oraz kilka tematów do przeniesienia z notatek na łamy…
Ale zobaczymy jak to będzie, bo na razie koncentruje się na tym by mój pies wrócił do zdrowia…
Cześć
Mi coś skryp do autouruchamiania nie chce zadziałać.
Świeżo uruchominny Raspbian, user nie zmieniony: pi hasło: raspberry
Próba uruchomienia:
http://s7.postimage.org/4zyp7ewuj/mc_root_raspberrypi_etcinit2.png
Lokalizacja i nazwa:
http://postimage.org/image/ke6xsan8j/
Skrypt:
http://postimage.org/image/o3aex01f1/
Z góry dziękuję za pomoc.
Spróbuj wykonać bezpośrednio z konsoli lekko zmodyfikowane polecenie ze skryptu uruchamiające serwer:
su pi -c '/usr/bin/tightvncserver :1'
lub np.:
su root -c '/usr/bin/tightvncserver :1'
Jeśli się uda, to możliwe, że w kodzie/skrypcie w poleceniu startującym serwer (jak powyżej) „ukrył” się jakiś „niewidoczny znak”.
Wynik:
http://postimage.org/image/n8uztig4x/
VNC w ten sposób się uruchamia.
Pruba uruchmienia skryptu z poziomu MC:
http://postimage.org/image/sd6douxj5/
Edycja skryptu:
http://postimage.org/image/6ojpo4nth/
Nic nie widać…
Wygląda na to, że może być tak jak napisałem – oprócz tego, że działa polecenie wpisane bezpośrednio w konsoli, wskazuje na to też:
Połącz się z Pi np. za pomocą WinSCP, otwórz plik skryptu np. w Notepad++ i:
I/lub:
Zapisz jako „UTF8 bez DOM” (menu „Format”)
Możesz też otworzyć skrypt w Nano:
i jeszcze raz skopiuj tam treść skryptu…
Ew. możesz np. otworzyć plik/skrypt w Nano i skasować wszystkie „znaki” na końcu linii, nawet jak ich nie widać…
Bo jak sam napisałeś – jak ręcznie wywołasz polecenie które znajduje się w skrypcie – to działa… Czyli coś w skrypcie jest nie tak, ale nie w samej składni – bo ta wygląda OK…
Ok, już działa. Nie mam pojęcia co to było, ale wywaliłem plik skryptu, utworzyłem raz jeszcze, wkleiłem, nadałem prawa, zaktualizowałem, i ruszyło. Sorki za zawracanie głowy.
Prawdopodobnie był w pliku nieprawidłowy znak końca linii…
Ważne, że już działa :-)
Witam,
mam pytanie do autora, wszystko się loguje jak powinno, vnc działa, ale jest problem, chciałbym uzyskać efekt „powielania pulpitu” czyli chciałbym pracować dokładnie na tym pulpicie który wyświetla raspberry, w jaki sposób to ustawić?
Akurat nie mam teraz dostępu do TightVNC, ale jeśli chodzi o „dodatkowe opcje” to tam chyba niewiele tego jest – przynajmniej po stronie klienta…
Zobaczy x11vnc – chyba, że X11 wystarczy?
Witam.
Świetny blog. Dobra robota.
Ja mam taki mały problem. Jak zmodyfikować skrypt, aby jednocześnie uruchamiał TightVNCserver dla kilku użytkowników jednocześnie? Na razie potrzebuję dla dwóch użytkowników (np. Pi i Sigma), ale chciałbym w prosty sposób dodawać/usuwać w przyszłości kolejnych użytkowników do tego skryptu.
Witam
Zaktualizowałem wpis o przykładowe rozwiązanie, z którego akurat sam korzystam…
Pozdrawiam
najnowszy obraz raspbiana 2013-07-26 3.6.11+ #474
po poleceniu
sudo update-rc.d tightvncserver defaults
otrzymujemy
using dependency based boot sequencing
warning: default start runlevel arguments (2 3 4 5) do not tightvncserver Default-Start values (2 3 4 5)
i odpowieni warning dla stopu.
no i w efekcie autostart nie dziala. A w poprzedniej wersji dzialało jak w opisie powyżej.
Gdyby autor zechcial sprawdzić tą nową wersje :)
pozdrawiam
Raczej aktualizuje na bieżąco wszystkie systemy, to samo dotyczy Raspberry Pi (wszystkich ;-)) i przyznam się, że nie zauważyłem problemów z działaniem VNC.
Ale sprawdziłem:
patryk@rpi01 ~ $ sudo update-rc.d tightvncserver defaults
update-rc.d: using dependency based boot sequencing
patryk@rpi01 ~ $ status
Linux version 3.6.11+ (dc4@dc4-arm-01) (gcc version 4.7.2 20120731 (prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) ) #474 PREEMPT Thu Jun 13 17:14:42 BST 2013
I jak widać – jest OK, wersja systemu też się chyba zgadza…
Ps. Uciekł mi wcześniej Twój komentarz, bo „pszczółka” wzięła go za SPAM…
w starszym systemie upgrajdowanym do 3.6.11+ polecenie rzeczywiscie dziala. Natomiast ten najnowszysytem pobrany z http://www.raspberrypi.org/downloads i wgrany na karte powoduje błąd o którym wspomniałem. Cuda :-)
pozdrawiam :)
b.
Może coś im się „posypało” gdy przygotowywali ISO… Ważne, że ostatecznie działa :-)
PS. Aż chyba sam – z ciekawości – sprawdzę, ale to najwcześniej jutro…
Również pozdrawiam.
Witam,
otrzymuje taki sam błąd jak kolega wyżej i nie moge znaleźc rozwiązania tego problemu. Błąd polega na tym, że po wydaniu polecenia
sudo update-rc.d tightvncserver defaults
otrzymuje komunikat:
using dependency based boot sequencing
warning: default start runlevel arguments (2 3 4 5) do not tightvncserver Default-Start values (2 3 4 5)
tak samo dla stop
Może autor znalazł jakieś rozwiązanie?
Pozdrawiam.
Tak naprawdę przyczyn może być wiele – i „zdalnie” to raczej zgadywanie…
Ale ja bym zaczął od sprawdzenia czy w skrypcie (pliku skryptu) nie chowają się jakieś „białe spacje/znaki” na końcach linii – coś kojarzę, że w tym wypadku system jest na to strasznie czuły…
(W nano jest duża szansa, że będzie to widać… Ew. można skrypt otworzyć np. w Notepad++ i zapisać jako „Unix script file”, format UTF8 bez DOM)
Z prostych rzeczy które warto sprawdzić – choć wątpię by w tym wypadku o to chodziło – to m.in.:
Ps. Koledze wyżej nie działało na instalacji systemu bezpośrednio w najnowszej – aktualnie dostępnej – wersji. Gdy zainstalował starszą wersję i ją zaktualizował do najnowszej – wszystko było OK.
Witam,
Pobrałem nową wersję systemu datowaną na wrzesień i skrypt działa. Dziękuje za pomoc.
Pozdrawiam.
Witam i mam krótkie pytanie, czy zdalny pulpit można zrobić na Openelec lub Raspbmc ? bo mi nic z tego nie wychodzi.
Witam
Z tego co kojarzę, to w obu dystrybucjach/systemach VNC działa… W Raspbmc chyba nawet w ustawieniach (System Configuration) jest taka opcja.
Witam, czy zdalny pulpit można zrobić na Openelec lub Raspbmc ?
Ok. w Raspbmc działa VNC, tylko jak zrobić żeby to działało w sposób nadający się do użytkowania, bo aktualnie poruszanie się po menu działa z kilkusekundowym opóźnieniem.
I pewnie obciążenie CPU (w Pi) w tym czasie to ~100%?
Ciąć co zbyteczne w ustawieniach VNC (tapeta, kolory itp), można też „podkręcić” Pi na 1GHz…
Wiele też zależy od zainstalowanego systemu i tego co i jak w nim działa, np. Raspbian na Pi z 512MB RAM i CPU@800MHz – VNC działa całkiem ok.
„Raspbian na Pi z 512MB RAM i CPU@800MHz – VNC działa całkiem ok.” – właśnie taką mam konfigurację, w XBMC tylko 2 polskie wtyczki, w bibliotece 160 filmów, nic nie zawalone i niestety nie nadaje się to do użytkowania przez VNC, z kolorami schodziłem do 8 i było to samo, spróbuję z tapetą ale wydaje mi się że nie da to aż takiego skoku żeby było użyteczne, pewnie coś w innych ustawieniach, nie mam doświadczenia z vnc, bo na pc korzystam z Teamviewera.
Hm… może tak: Wprawdzie nie działa to (VNC) jak np. na „zwykłym komputerze”, ale dramatu też jakiegoś nie ma… Nawet procesor ma jeszcze jakiś zapas, a sama reakcja na ruchy myszy/klawiaturę wprawdzie (czasem?) ma lekkie opóźnienia, ale są do przyjęcia… Oczywiście wiele zależ od tego co uruchomimy – taki np. Chrome (Chromium) nawet odpalony/obsługiwany bezpośrednio na Pi będzie „mulił”.
Jak pisałem wcześniej – proponuje sprawdzić jakie jest zużycie procesora, i ew. w oknie odpalić sobie konsole (SSH + „top”) by sprawdzić jaki proces ile CPU zabiera…
Ew. CPU na 1GHz – daj kopa, choć zauważyłem, że bywają wtedy problemy… Ale głównie z różnymi czujnikami podpiętymi do Raspberry Pi (GPIO)
Przepraszam oczywiście mam Raspbmc, a nie Raspbian i to jest pewnie przyczyna wolnego działania VNC.
Patryku, zauważyłeś że logując się przez vnc do RaspberryPi pojawia ci się obraz pulpitu , ale to nie jest ten sam pulpit który jest wyświetlany przez ( HDMI ,S-video)
Powiedzmy że mam podłączony monitor do Raspberry pi i chcę połączyć się przez vnc właśnie do (tej sesji ) co jest wyświetlana na monitorze podczepionego do Raspberry pi..
Czy takie podłączenie przez vnc jest możliwe ? bardzo mnie to męczy …
Po Świętach zrobię poradnik na ten temat, bo widzę że jest zainteresowanie tym tematem… :-)
Wujek Google odpowiedział mi na te pytanie …
Najlepiej zainstalować x11vnc ( odpala domyślnie primary display:0) na porcie 5900
Najlepiej zacząć od aktualizacji – u mnie bez tego nie poszło:
1.
sudo apt-get update
2.
sudo apt-get upgrade
3. instalujemy x11vnc :
sudo apt-get install x11vnc
4. ustanawiamy hasło:
x11vnc -storepasswd
5. tworzymy plik autostart
mkdir ~/.config/autostart
5. edytujemy plik autostart i dodajemy wpis:
nano ~/.config/autostart/x11vnc.desktop
6. oto wpis:
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=x11vnc
Comment=
Exec=x11vnc -display :0 -forever -usepw -ultrafilexfer
StartupNotify=false
Terminal=false
Hidden=false
7. zapisać, restart, używać
Troszkę mi to czasu zabrało ale warto było…Zostawiam dla potomnych ;-)
To w sumie już nie muszę nic pisać ;-)
A tak serio – tak, dobrze Ci „wujek G” podpowiedział… Pewnie jutro ubiorę to we wpis, choć nie wiem czy 1:1 – muszę (później) na spokojnie się temu przyjrzeć… :-)
Witam,
po wystartowaniu TightVNC Viewer otrzymuję komunikat: ” Żądana nazwa jest prawidłowa, ale dane żądanego typu nie zostały znalezione”. Na czym może polegać problem? Wygląda na to, że wszystko zainstalowało się prawidłowo. Nie wykonałem jeszcze procedury „autostartu”.
Jeśli po „wystartowaniu” klienta (Viewer) to jakiś problem po stronie systemu gościa, jak po „próbie połączenia” z konkretnym hostem (np. Raspberry Pi) to sugeruje sprawdzić połączenie po adresie IP a nie nazwie hosta…
Niestety po wpisaniu adresu IP Raspberry Pi i kliknięciu na „Connect” w TightVNC Viewer otrzymuję komunikat: „Error in TightVNC Viewer: Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia.” ???
Ale nie samo IP, tylko IP:numer_ekranu, np.: 127.0.0.2:1
A jeśli tak jest, i dalej jest błąd – może jakiś firewall na Pi i zablokowany port… Może brak usługi (VNC) nasłuchującej na porcie…
Oczywiście wprowadzam IP:numer_ekranu! Spróbowałem na innym kompie z innym systemem (WinXP) skutek dokładnie ten sam! Z tego wynika, że problem jest w Pi (?). Co to znaczy „brak usługi (VNC) nasłuchującej na porcie”? Mam na karcie wgrany tylko Raspbian-wheezy + zainstalowany zgodnie z powyższą instrukcją „tightvncserver „.
Już sobie poradziłem. Dziękuję za pomoc.
To się może podziel rozwiązaniem – może jeszcze komuś się przyda…
Ok!
Jednak chyba pośpieszyłem się! Nie wszystko działa tak jakbym chciał. Połączyć się z Pi „ręcznie” mogę ale autostart nie działa. Albo czegoś nie rozumiem albo ……….
Żeby połączyć się z Pi: po zalogowaniu się na nim poprzez PuTTY uruchamiam serwer poleceniem: /usr/bin/tightvncserver – odczytuję do której instancji (numer_ekranu) trzeba się podłączyć i znając ten numer wpisuję go po hoście w VCN. Teraz Connect i hasło i gotowe.
Nie wiem jak może zadziałać autostart jeżeli szuka połączenia w instancji :1 jeśli ona jest zajęta (a może tylko tak mi się wydaje – niestety na tym się w ogóle nie znam?) .
Jeśli masz jednego użytkownika który korzysta z VNC, to prawdopodobnie :1 jest Twoje… W skrypcie startowym możesz też zmienić domyślny „ekran” – zobacz też sekcję dotyczącą autostartu dla wielu użytkowników.
Jakoś na :1 nie mogę się połączyć! Prawie za każdym połączeniem muszę zmieniać „ekran” na inny (3, 5 ,4). Czy może to mieć związek z tym, że na razie nie zmieniłem nazwy i hasła na Pi? Jak należy rozumieć termin „masz jednego użytkownika, który korzysta z VNC” „. Jeśli tylko ja loguję się do mojego Pi to to jest ten przypadek?
Jeśli tylko ja jestem użytkownikiem to chyba sekcja dotyczącą autostartu dla wielu użytkowników mnie nie dotyczy. Czy dobrze zrozumiałem opis?
Sugestia pierwsza, chyba najprościej – odinstaluj VNC na Pi (z „–purge”) i zainstaluj ponownie… Tak może być najszybciej/prościej.
:1 Jest w standardzie (zazwyczaj), ale jeśli z jakiś przyczyn (wielokrotne uruchomienie serwera VNC?) masz inny „ekran”, to taki ustaw w konfiguracji „autostartu” (linijka 28). Do konfiguracji dla wielu użytkowników odesłałem, bo tam jest właśnie przykład jak ustawić w inny ekran dla „autostartu” serwera VNC.
Z odinstalowaniem już próbowałem. Sformatowałem kartę, wgrałem Rasspbian-wheezy, uaktualniłem, zainstalowałem ponownie VNC. Efekt? Dokładnie ten sam co przed !!! Przy okazji jak odinstalować sam VNC?
Nie wiem czy mnie dobrze zrozumiałeś z tym numerem ekranu. Za każdym razem kiedy uruchamiam VNC na Pi (/usr/bin/tightvncserver) mam inny numer ekranu, który wpisuję po dwukropku za hostem w TightVNNC Viewer na komputerze. Wtedy łączę się bez problemu. Nie wiem ilu użytkowników musiałbym „stworzyć” i ile prób łączenia żeby trafić na tego właściwego z poprawnym numerem_ekranu. łatwiej ręcznie uruchomić VNC, odczytać przypisany ekran i wpisać go w TightVNNC Viewer.
A może czegoś nie rozumiem i błędnie interpretuję, całą lub w części, procedurę instalacji i konfiguracji?
Trochę dziwne, że po każdym uruchomieniu systemu i/lub serwera VNC masz inny numer – chyba, że uruchamia się kolejna instancja serwera (czyli inna jest już uruchomiona, a Ty uruchamiasz kolejną).
Skorzystaj ze skryptu automatycznego startu, tam masz użytkownika („pi” lub własny/inny, jeśli jest) i właśnie numer instancji/ekranu (zazwyczaj :1).
Jeśli to nie działa z jakiegoś powodu – możesz podczas ręcznego uruchamiania serwera VNC nakazać na którym „porcie” ma się uruchomić:
Zamiast [PORT] daj np. 1 czy 2, 3…
Możesz też zautomatyzować operację dodając to polecenie do „autostartu” dla danego użytkownika:
I tam wstaw polecenie uruchamiające serwer, oczywiście z już zdefiniowanym (wymuszonym) „portem”, byś nie musiał zgadywać/sprawdzać każdorazowo jaki tym razem jest „port”.
Tym razem chyba wszystko gra! Autostart działa – chyba jak wskazałeś uruchamiałem kolejne instancje serwera podczas kiedy inna była już uruchomiona.
Bardzo dziękuję za okazaną pomoc. Pozdrawiam.
No to dobrze, że (już) działa… :-)
Również pozdrawiam
witam, włączyłem auto-start programu TightVNC jak go teraz usunąć z Raspberry?
Zależy od tego jak został dodany – z tego samego programu/modułu korzystamy, np.:
Odinstalowanie samego programu – odsyłam do tego poradnika…
Mam prośbę. Po „ręcznym” odpaleniu vncservera dostaje taki komunikat:
adam@raspberrypi /etc/init.d $ sudo /etc/init.d/tightvncserver_adam start
/etc/init.d/tightvncserver_adam: 1: /etc/init.d/tightvncserver_adam: #!/bin/sh: not found
New 'X’ desktop is raspberrypi:1
Starting applications specified in /home/adam/.vnc/xstartup
Log file is /home/adam/.vnc/raspberrypi:1.log
Starting TightVNC server for adam
Server wstaje ale niepokoi mnie to: #!/bin/sh: not found
Przynaje, ze wczesniej zrobilem cos takiego:
sudo apt-get install command-not-found
sudo update-command-not-found
a domyslam sie ze moze miec to zwiazek z tym bledem.
Patryku, prosba o pomoc, jak to usunac. Dziekuje.
Patryku, już naprawiłem. Skorzystałem z Twojej metody i przekopiowałem na Winde plik skryptu i zapisałem w UTF-8 bez BOM. Pomogło. Pozdrawiam.
OK, dobrze, że już działa… Ogólnie przy wszelkich skryptach „UTF-8 bez BOM” Twoim przyjacielem :-)
Czy ktoś ma pomysł dlaczego na komputerze z Debianem wszystkie te polecenia działają tylko dla kąta root
Marek
Zobacz tutaj: Polecenia „sudo” i „gksudo”
Moja wina nie byłem dokładny w opisie problemu. Pański przewodnik chciałem zastosować do 'dużego’ komputera z zainstalowanym Debianem a nie Rasbianem. Niestety Debian był trochę inaczej skonfigurowany i nie mogłem korzystać z sudo tylko musiałem wykonać su root i dalej jako root rozpocząć instalację. W konsoli (cały czas jako root) bez problemu zrobiłem apt-get tightvncserwer, a potem uruchomiłem go 'ręcznie’. Wszystko jak w Pana opisie dostałem pytanie o hasło i serwer VNC zadziałał – mogłem się zdalnie logować. Problem jest kiedy nie wykonuję 'su root’ tylko chcę pracować na swoim kącie (marek). Mogę z konsoli uruchomić tightvncserver, Za pierwszym razem miałem pytanie o hasło ale serwer VNC samemu zatrzymuje się / kończy działanie. Co prawda w katalogu /marek/.vnc powstają pliki, np nazwa:1.log i nazwa:1.pid, ale Xtightserwer zostaje zatrzymany/zablokowany/zabity i pod podanym PID-em nie ma już żadnego procesu. Jest to w pełni powtarzalne jako root ręcznie uruchamiam serwer VNC i wszystko działa pięknie, jako zwykły użytkownik (marek) nie mogę uruchomić serwera VNC. Zaraz po uruchomieniu automatycznie się kończy zostawiając tylko pliki z pid-em i log-iem. Do skryptów automatycznego uruchamiania w ogóle nie doszedłem i wszystko robię zawsze ręcznie w konsoli tekstowej przez ssh
Marek
Z Raspbiana korzystam tylko na Raspberry Pi, ale „z dużego Debiana” korzystam np. na VPSach, i tam tez korzystam, z sudo. Być może w systemie nie ma zainstalowanego tego pakietu? Dodam w opisie ramkę z informacją, że może być taka sytuacja w niektórych dystrybucjach, i by wtedy – jako root – zainstalować pakiet sudo: