ฉันมี Raspberry Pi 2 และติดตามโพสต์บนRaspberrypi.orgแต่เซิร์ฟเวอร์ VNC ที่แน่นหนาไม่เริ่มทำงานเมื่อรีบูตเครื่อง ดูเหมือนจะไม่มีข้อผิดพลาดใด ๆ
ฉันจะให้ TightVncServer เริ่มต้นที่ Pi Reboot ได้อย่างไร
ฉันมี Raspberry Pi 2 และติดตามโพสต์บนRaspberrypi.orgแต่เซิร์ฟเวอร์ VNC ที่แน่นหนาไม่เริ่มทำงานเมื่อรีบูตเครื่อง ดูเหมือนจะไม่มีข้อผิดพลาดใด ๆ
ฉันจะให้ TightVncServer เริ่มต้นที่ Pi Reboot ได้อย่างไร
คำตอบ:
ในการทำเช่นนี้คุณสามารถใช้ความฉลาดของลินุกซ์เล็กน้อย
ภารกิจแรกของเราคือการแก้ไขไฟล์ / 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 ทำการบู๊ตโดยการรีบู๊ต
หากเสียงข้างต้นยืดออกไปเล็กน้อยอย่าลังเลที่จะลองดูเหตุผลที่สมบูรณ์ยิ่งขึ้นที่นี่
ก่อนที่จะเริ่มให้แน่ใจว่า 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
. ผมใช้คำสั่งว่าก่อนที่จะได้รับแบบเต็มหน้าจอมีวิธีการใด ๆ เพื่อเพิ่มบรรทัดในรหัสของคุณ.?)
su $VNCUSER -c '/usr/bin/tightvncserver :1'
คือสิ่งที่เรียกใช้คำสั่งที่คุณอ้างถึง เพียงเพิ่มตัวเลือกต่อท้ายบรรทัดนั้นซึ่งจะส่งผลดังนี้su $VNCUSER -c '/usr/bin/tightvncserver :1' -geometry 1366x768 -depth 24 -dpi 96