Raspberry Pi 設定 VNC
VNC官方設定文件
Raspberry Pi從2016/9之後,預設內建RealVNC。這套是VNC原始開發者的產品,市場領導品牌。RPi基金會和RealVNC公司都提供設定文件,官方文件真的比Blog文章好很多,點開來讀準沒錯。
VNC的2種modes {Service/ Virtual}
大概照著做就會動了,然後就可以關閉網頁。如果要追根究柢可以繼續讀這篇,RealVNC一共有{service/ user/ virtual} modes,以RPi內建的5.x版只有{service/ virtual}兩種模式。Service mode會把RPi的HDMI輸出顯示的東西,原封不動打到VNC Viewer上,和直接操作電腦沒兩樣。Virtual-mode僅限Linux,會啟動另外的private workapce,很像用ssh登入機器,每個session不互相干擾。稍後的文章會介紹Virtual mode。
設定VNC Service Mode
參考RPi的文件,要設定VNC Service Mode,首先用raspi-config打開VNC interface。為了避免麻煩,請先把RPi接電腦螢幕,也許解析度是1920x1080,後面我們再來解這題。在GUI mode底下看VNC Server的IP:
然後抓VNC Viewer,網頁裡各種版本都有,我試過PC/ Android都沒問題。下面的圖是PC連線的畫面:
繼續改VNC Service Mode
我的RPi有新增自己的帳號,怪了,為什麼上一段我只能用pi的帳號登入?經過仔細翻找RealVNC文件,底下表格有答案。原來要把帳號加入sudo這個group才會動。
VNC Service Mode,拔掉螢幕線繼續改VNC Service Mode
前面我建議插著螢幕設定VNC,拔掉後連線變成底下的畫面。因為沒有接螢幕,RPi會預設用很小的解析度。如果想把RPi放在某個沒接螢幕的地方,遠端登入不就出事了?
這篇RealVNC說明講得很詳細,照著修改/boot/config.txt,下圖的#82代表1920x1080x60hz。重新開機就會動了!
VNC Virtual Mode
前面說的都是Service Mode,意思是把本機的畫面投影到Viewer上。如果同時有多人想用VNC連線,但是本機畫面只有一個,代表只有一個人能用。這很遜耶!Linux號稱多人多工的作業系統竟然只能一人使用。RealVNC的免費License提供Virtual Mode能解這題。首先用ssh登入機器,輸入vncserver並且提供解析度(預設1024x768,現代人應該是不能接受),然後VNC就會啟動一個private workspace,輸出的訊息同時也包括怎麼用VNC viewer連線(使用192.168.1.251:1)。冒號跟著的數字是Virtual Window的編號。
底下是原理圖,開出的Virtual Window全部都在記憶體。只要記憶體夠,就可以多個人同時連上RPi進來工作,彼此不干擾。
上述的(3)有個解法叫Virtual Mode Daemon,就是大家連線都用:99連線,然後VNC Session Manager會幫忙開啟VNC Server,用完再關閉session。下圖是我在RPi強制連線的畫面,因為我沒買License就不給用了。有興趣可以去申請試用License感受看看。如果只是個人使用,上述流程折騰一下也就算了;如果是企業使用,同仁每天折騰這些流程也燒掉競爭力了。
寫到這邊,我要問讀者一個問題:是遠端連線的程式技術門檻高,還是上述這種管理session的門檻高?這就是現在自由軟體的賣錢方法,大家不願意被廠商綁死,所以核心技術都會Open Source;但是配套的管理程式要賣錢。免費版讓大家用到爽,並且在裡面設下一些的小限制(比如只准開5個server),進階功能收費。某方面也可以說是養套殺,不然您就自己開發這些功能吧。
Final Word
藉著安裝RPi RealVNC,我順便研究了VNC的工作原理{Service/ Virtual mode},多年來我都沒搞清楚。看懂以後,順便也把開源軟體的商業模式研究一下,真的滿有趣的 :-)
留言