2020年4月13日 星期一

在 Linux 上安裝 VNC Server

在 Linux 上安裝 VNC Server

前言

  最近發現同時使用 Raspberry Pi 4 與 PC 在同一個螢幕的時候會發生一些問題,但又希望兩者可以同時使用,所以想透過 VNC 服務來控制 Raspberry Pi 4 ,透過安裝 VNC Server 可以解決這個問題,在此把學習的過程做個紀錄。

內容

  在我的螢幕 Viewsonic VX2433wm 如果同時有兩個輸入的話,一個顯示會是 HDMI PC 模式,另一個會被強制轉成 HDMI AV模式,HDMI PC 模式就如同字面上的意思是給 PC ,另一個 HDMI AV 是給電視用的,雖然可以透過螢幕功能鍵強制調回來,但每次切換到 HDMI AV 模式的輸入都要再透過螢幕功能鍵調一次,如果不調整,畫面會被切邊。

  這個問題是螢幕的預設行為沒辦法透過軟體來修改,所以我想到用 VNC 的方式來解決,在 Raspberry Pi 4 上安裝 VNC Server 可以透過以下命令
sudo apt-get install tightvncserver

安裝完後可以透過以下命令來啟動
vncserver

第一次啟動時會要求設定連線密碼,可以依據喜好設定連線密碼, view-only 密碼可以不用設定。設定完後服務就啟動了,可以透過喜好的 VNC client 端來進行連線,預設的 Port 是 5901。

  雖然 VNC 可以解決切換螢幕的問題,但還是要"手動"來開啟服務,如果能開機就自動開啟服務的話就可以完全不切換螢幕來操控 Raspberry Pi 4 ,如何設定開機就啟動呢?新增以下位址新增檔案
/etc/init.d/tightvncserver

檔案的內容如下
#!/bin/bash
### BEGIN INIT INFO
# Provides:          tightvncserver
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: vnc server
# Description:
### END INIT INFO

export USER='pi'

eval cd ~$USER

# Check the state of the command - this'll either be start or stop 
case "$1" in
  start)
    # if it's start, then start vncserver using the details below
    su $USER -c '/usr/bin/vncserver :1 -geometry 800x600 -depth 16 -pixelformat rgb565'
    echo "Starting vncserver for $USER "
    ;;
  stop)
    # if it's stop, then just kill the process
    pkill Xtightvnc
    echo "vncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/tightvncserver {start|stop}"
    exit 1
    ;;
esac
exit 0

內容中的 USER 是指作業系統的使用者,請依據狀況修改, geometry 的參數可設定解析度。
接著透過以下命令修改該檔權限
sudo chmod 755 /etc/init.d/tightvncserver

接著透過以下命令設定開機時啟動
sudo update-rc.d tightvncserver defaults


參考資料

[ Raspberry Pi台灣樹莓派 ] [基礎] 以 VNC 和 Raspberry Pi 連線

沒有留言:

張貼留言