Mulai otomatis TightVncServer di Raspberry Pi 2

11

Saya memiliki Raspberry Pi 2 dan telah mengikuti posting di Raspberrypi.org tetapi VNC Server yang Ketat tidak dimulai saat reboot. Sepertinya tidak ada kesalahan.

Bagaimana cara mendapatkan TightVncServer untuk mulai pada Pi Reboot?

sarin
sumber
Belum dapat memposting jawaban, tetapi ada metode sederhana yang saya dapat kerjakan pada pi 3 B saya yang didokumentasikan di adafruit di sini: learn.adafruit.com/...
Steven Evers

Jawaban:

10

Untuk melakukan ini, Anda dapat menggunakan sedikit kepintaran Linux.

Tugas pertama kita adalah mengedit file /etc/rc.local. File ini dapat berisi perintah yang dijalankan saat start-up. Jika kita melihat file kita dapat melihat bahwa sudah ada beberapa entri di sana;

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

exit 0

Kumpulan garis pertama dengan tanda pagar (#) di depannya adalah komentar. Ini hanya ada untuk menjelaskan apa yang terjadi pada seseorang yang membaca file tersebut.

Garis-garis kode di bagian bawah jelas ada hubungannya dengan alamat IP komputer. Sebenarnya mereka adalah skrip pendek yang memeriksa untuk melihat apakah Raspberry Pi memiliki alamat IP dan jika ya, ia mencetaknya. Jika Anda ingat, Anda dapat melihat alamat IP tercetak di layar saat Pi melakukan booting seperti itu

My IP address is 10.1.1.8

Raspbian GNU/Linux 7 raspberrypi tty1

raspberrypi login:

Bagian skrip ini di rc.local adalah kode yang bertanggung jawab untuk mencetak alamat IP!

Kami akan menambahkan perintah berikut ke rc.local;

su - pi -c '/usr/bin/tightvncserver :1'

Perintah ini mengalihkan pengguna menjadi pengguna 'pi' dengan su - pi. Su adalah singkatan dari 'switch user', tanda hubung (-) memastikan bahwa lingkungan pengguna pi (seperti semua pengaturan mereka) digunakan dengan benar dan pi adalah pengguna.

Opsi -c menyatakan bahwa potongan baris berikutnya adalah perintah yang akan dijalankan dan bagian di dalam tanda kutip ('/ usr / bin / tightvncserver: 1') adalah perintah.

Perintah dalam hal ini mengeksekusi file tightvncserver yang ada di direktori / usr / bin dan menentukan bahwa kita harus memulai sesi desktop 1 (: 1).

Untuk melakukan ini kita akan mengedit file rc.local dengan perintah berikut;

sudo nano /etc/rc.local

Tambahkan baris kami sehingga file terlihat seperti berikut;

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# Start tightvncserver
su - pi -c '/usr/bin/tightvncserver :1'

exit 0

(Kami juga dapat menambahkan komentar kami sendiri ke file untuk memberi tahu pembaca di masa depan apa yang terjadi)

Seharusnya begitu. Anda sekarang harus dapat menguji bahwa layanan dimulai ketika Pi boot dengan me-reboot.

Jika hal di atas terdengar agak panjang lebar, jangan ragu untuk melihat alasan yang lebih lengkap di sini .

tidak ada
sumber
Itu tidak bekerja untuk saya.
Bunglon
Jawabannya ditulis untuk Raspbian versi 'Wheezy'. Versi yang lebih baru ('Jessie' dan (saya kira) 'Stretch') memiliki metode standar yang berbeda. Lihat di sini untuk pendekatan alternatif.
d3noob
5

Sebelum memulai pastikan Pi Anda terhubung ke jaringan internet \ via Ethernet \ wifi.

Buka Terminal dan masukkan perintah berikut:

Dapatkan Pi IP Address untuk koneksi jarak jauh (untuk digunakan nanti)

hostname -I

Instal TightVncServer

sudo apt-get update
sudo apt-get install tightvncserver
tightvncserver

Pertama kali ini dijalankan, Anda harus memasukkan kata sandi dan memverifikasinya. Tidak perlu memasukkan kata sandi tampilan saja.

Untuk mengkonfigurasi mulai otomatis sebagai layanan saat Pi boot:

Buka nano (editor teks) untuk membuat file untuk memulai secara otomatis Server Ketat VNC sudo nano /etc/init.d/tightvncserver

Ketik yang berikut ini (atau salin dan tempel ):

#!/bin/sh
# /etc/init.d/tightvncserver
# Set the VNCUSER variable to the name of the user to start tightvncserver under
VNCUSER='pi'
case "$1" in
  start)
    su $VNCUSER -c '/usr/bin/tightvncserver :1'
    echo "Starting TightVNC server for $VNCUSER"
    ;;
  stop)
    pkill Xtightvnc
    echo "Tightvncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/tightvncserver {start|stop}"
    exit 1
    ;;
esac
exit 0

Tekan Ctrl + x, lalu y untuk menyimpan dan Enter untuk menyimpan nama file yang sama.

Edit izin file ini untuk membuatnya dapat dieksekusi dan aktif:

sudo chmod 755 /etc/init.d/tightvncserver
sudo update-rc.d tightvncserver defaults

Reboot untuk menguji sudo reboot

Instal klien vnc untuk OS Anda dan cobalah untuk terhubung setelah Pi telah di-boot ulang!

Untuk Windows: Klien TightVNC misalnya . Tidak perlu menginstal server.

Mulai VNC Client Connect menggunakan alamat IP dari bagian atas posting ini. Ubah alamat IP untuk Anda. Nomor port di sejumlah posting internet hanya terdaftar sebagai 2 digit. Ini singkat dan jika Anda menggunakan skrip di atas pi Anda berjalan pada port 1 maka Anda harus menggunakan 590 1 . Jika 2, maka 590 2 dll.

192.168.1.123:5901
sarin
sumber
Solusi Anda berfungsi dengan baik untuk saya kecuali saya tidak mendapatkan layar penuh. Bagaimana saya bisa mendapatkan layar penuh? ( vncserver -geometry 1366x768 -depth 24 -dpi 96. Saya menggunakan perintah itu sebelumnya untuk mendapatkan layar penuh. Apakah ada cara untuk menambahkan baris dalam kode Anda?)
opu 웃
@opu 웃 Baris su $VNCUSER -c '/usr/bin/tightvncserver :1'adalah apa yang menjalankan perintah yang Anda maksud. Cukup tambahkan opsi pada akhir baris itu, yang akan menghasilkan sesuatu sepertisu $VNCUSER -c '/usr/bin/tightvncserver :1' -geometry 1366x768 -depth 24 -dpi 96
Trent
Bagaimana cara saya debug jika ini tidak berhasil? Jika saya menjalankan tightvncserver di baris perintah pengguna pi, itu dimulai dan saya bisa jauh, tetapi tidak memulai secara otomatis menggunakan ini atau /etc/rc.local solusi.
Alan McDonley