เริ่ม TightVncServer โดยอัตโนมัติบน Raspberry Pi 2


11

ฉันมี Raspberry Pi 2 และติดตามโพสต์บนRaspberrypi.orgแต่เซิร์ฟเวอร์ VNC ที่แน่นหนาไม่เริ่มทำงานเมื่อรีบูตเครื่อง ดูเหมือนจะไม่มีข้อผิดพลาดใด ๆ

ฉันจะให้ TightVncServer เริ่มต้นที่ Pi Reboot ได้อย่างไร


ยังไม่สามารถโพสต์คำตอบได้ แต่มีวิธีการง่ายๆที่ฉันได้ทำกับ pi 3 B ของฉันที่ทำเป็นเอกสารที่ adafruit ที่นี่: learn.adafruit.com/ ...
Steven Evers

คำตอบ:


10

ในการทำเช่นนี้คุณสามารถใช้ความฉลาดของลินุกซ์เล็กน้อย

ภารกิจแรกของเราคือการแก้ไขไฟล์ / etc / rc.local ไฟล์นี้สามารถมีคำสั่งที่ทำงานเมื่อเริ่มต้นขึ้น ถ้าเราดูไฟล์เราจะเห็นว่ามีอยู่ไม่กี่รายการในนั้น

#!/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

ชุดแรกของบรรทัดที่มีเครื่องหมายแฮช (#) ด้านหน้าคือความคิดเห็น นี่เป็นเพียงการอธิบายสิ่งที่เกิดขึ้นกับคนที่กำลังอ่านไฟล์

บรรทัดของรหัสทางด้านล่างมีส่วนเกี่ยวข้องกับที่อยู่ IP ของคอมพิวเตอร์อย่างชัดเจน ในความเป็นจริงพวกเขาเป็นสคริปต์สั้น ๆ ที่ตรวจสอบเพื่อดูว่า Raspberry Pi มีที่อยู่ IP หรือไม่หากมีก็จะพิมพ์ออกมา หากคุณจำได้ว่าคุณสามารถเห็นที่อยู่ IP ที่พิมพ์ออกมาบนหน้าจอเมื่อ Pi บู๊ตขึ้นมาเช่นนั้น

My IP address is 10.1.1.8

Raspbian GNU/Linux 7 raspberrypi tty1

raspberrypi login:

สคริปต์ส่วนนี้ใน rc.local เป็นรหัสที่รับผิดชอบในการพิมพ์ที่อยู่ IP!

เราจะเพิ่มคำสั่งต่อไปนี้ใน rc.local;

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

คำสั่งนี้เปลี่ยนผู้ใช้ให้เป็นผู้ใช้ 'pi' ด้วย su - pi su ย่อมาจาก 'switch user' เส้นประ (-) ตรวจสอบให้แน่ใจว่าสภาพแวดล้อม pi ของผู้ใช้ (เช่นการตั้งค่าทั้งหมด) ถูกต้องและ pi เป็นผู้ใช้

ตัวเลือก -c ประกาศว่าชิ้นส่วนของบรรทัดถัดไปจะเป็นคำสั่งที่จะถูกเรียกใช้และส่วนที่อยู่ในเครื่องหมายคำพูด ('/ usr / bin / tightvncserver: 1') เป็นคำสั่ง

คำสั่งในกรณีนี้ดำเนินการไฟล์ tightvncserver ซึ่งอยู่ในไดเรกทอรี / usr / bin และมันระบุว่าเราควรเริ่มต้นเซสชันเดสก์ทอป 1 (: 1)

ในการทำเช่นนี้เราจะแก้ไขไฟล์ rc.local ด้วยคำสั่งดังต่อไปนี้

sudo nano /etc/rc.local

เพิ่มในบรรทัดของเราเพื่อให้ไฟล์มีลักษณะดังต่อไปนี้

#!/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

(เราสามารถเพิ่มความคิดเห็นของเราเองลงในไฟล์เพื่อให้ผู้อ่านในอนาคตทราบว่าเกิดอะไรขึ้น)

ที่ควรจะเป็น ตอนนี้คุณควรจะสามารถทดสอบได้ว่าบริการเริ่มต้นเมื่อ Pi ทำการบู๊ตโดยการรีบู๊ต

หากเสียงข้างต้นยืดออกไปเล็กน้อยอย่าลังเลที่จะลองดูเหตุผลที่สมบูรณ์ยิ่งขึ้นที่นี่


มันไม่ทำงานสำหรับฉัน
กิ้งก่า

คำตอบนี้เขียนขึ้นสำหรับรุ่น 'Wheezy' ของ Raspbian รุ่นที่ใหม่กว่า ('เจสซี' และ (ฉันเข้าใจว่า 'ยืด') มีวิธีการเริ่มต้นที่แตกต่างกัน ดูที่นี่สำหรับวิธีการอื่น
d3noob

5

ก่อนที่จะเริ่มให้แน่ใจว่า Pi ของคุณเชื่อมต่อกับอินเทอร์เน็ต \ เครือข่ายผ่าน Ethernet \ wifi

เปิด Terminal และป้อนคำสั่งต่อไปนี้:

รับที่อยู่ IP ของ Pi สำหรับการเชื่อมต่อระยะไกล (เพื่อใช้ในภายหลัง)

hostname -I

ติดตั้ง TightVncServer

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

ครั้งแรกที่เรียกใช้คุณจะต้องป้อนรหัสผ่านและยืนยัน ไม่จำเป็นต้องใส่รหัสผ่านดูอย่างเดียว

ในการกำหนดค่าสำหรับการเริ่มอัตโนมัติเป็นบริการเมื่อ Pi บูทขึ้น:

เปิด nano (โปรแกรมแก้ไขข้อความ) เพื่อสร้างไฟล์เพื่อเริ่มการทำงานอัตโนมัติ VNC Server แน่น sudo nano /etc/init.d/tightvncserver

พิมพ์ข้อความต่อไปนี้ (หรือคัดลอกและวาง ):

#!/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

กด Ctrl + x จากนั้น y เพื่อบันทึกและ Enter เพื่อเก็บชื่อไฟล์เดิม

แก้ไขการอนุญาตของไฟล์นี้เพื่อให้สามารถเรียกใช้และทำงานได้:

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

รีบูตเพื่อทดสอบ sudo รีบูต

ติดตั้งไคลเอนต์ vnc สำหรับระบบปฏิบัติการของคุณและลองเชื่อมต่อเมื่อ Pi รีบูตแล้ว!

สำหรับ Windows: TightVNC ไคลเอ็นต์สำหรับตัวอย่างเช่น ไม่จำเป็นต้องติดตั้งเซิร์ฟเวอร์

เริ่มการ เชื่อมต่อไคลเอ็นต์ VNCโดยใช้ที่อยู่ IP จากด้านบนของโพสต์นี้ เปลี่ยนที่อยู่ IP สำหรับคุณ หมายเลขพอร์ตในจำนวนโพสต์อินเทอร์เน็ตจะแสดงเป็น 2 หลักเท่านั้น นี่คือมือสั้นและถ้าคุณกำลังใช้สคริปต์ข้างปี่ของคุณทำงานบนพอร์ต 1 แล้วคุณควรใช้ 590 1 ถ้า 2 ก็คือ 590 2เป็นต้น

192.168.1.123:5901

โซลูชันของคุณทำงานได้อย่างสมบูรณ์แบบสำหรับฉันยกเว้นฉันไม่ได้รับแบบเต็มหน้าจอ ฉันจะดูแบบเต็มหน้าจอได้อย่างไร ( vncserver -geometry 1366x768 -depth 24 -dpi 96. ผมใช้คำสั่งว่าก่อนที่จะได้รับแบบเต็มหน้าจอมีวิธีการใด ๆ เพื่อเพิ่มบรรทัดในรหัสของคุณ.?)
Opu 웃

@opu 웃บรรทัดsu $VNCUSER -c '/usr/bin/tightvncserver :1'คือสิ่งที่เรียกใช้คำสั่งที่คุณอ้างถึง เพียงเพิ่มตัวเลือกต่อท้ายบรรทัดนั้นซึ่งจะส่งผลดังนี้su $VNCUSER -c '/usr/bin/tightvncserver :1' -geometry 1366x768 -depth 24 -dpi 96
Trent

ฉันจะดีบักได้อย่างไรหากวิธีนี้ใช้ไม่ได้ หากฉันรัน tightvncserver ที่บรรทัดรับคำสั่งผู้ใช้ pi จะเริ่มทำงานและฉันสามารถรีโมตได้ แต่ไม่เริ่มต้นโดยอัตโนมัติโดยใช้วิธีนี้หรือโซลูชัน /etc/rc.local
Alan McDonley
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.