先以 Fedora 22 為例詳細說明整個設定過程,假設系統只安裝「MATE 桌面」環境,完全沒有安裝「GNOME 桌面」的情形。在文章最後,再貼上在 Fedora 20、21 系統中的修改設定,以供參考。
一、啟動 VNC 服務
除非是架設多人使用的伺服器,並需提供每個人以 VNC 連線登入,不然由使用者透過 SSH 連線,再自行啟動自己用的「VNC 服務」,是較簡單、不佔資源的作法。(參考〝開啟個人化的 VNC 服務,供「遠端桌面」連線〞)[SiB@Core-i7 ~]$ vncserver :1888上例是在連線後,於「SSH 終端機」開啟「VNC 服務」,並設定連接埠為 7788。
註:7788 - 5900 = 1888。這是最容易被設錯的數字,可以參考這篇〝用較短的命令,加快建立由 SSH 重導之 VNC 連線〞的做法避免錯誤。
二、xstartup 的修改
由之前的發文已知,開啟個人「VNC 服務」的腳本為檔案 ~/.vnc/xstartup,第一次啟動「VNC 服務」時,系統會產生一個預設腳本,其內容如下:#!/bin/sh要修改為
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec /etc/X11/xinit/xinitrc
#!/bin/sh上例中紅色是新加上的命令,『mate-session &』用以啟動「MATE 桌面」環境用的命令,並置於背景執行,而『exit』是提早結束腳本的執行。
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
mate-session &
exit
exec /etc/X11/xinit/xinitrc
註:若同時安裝數個「桌面」環境,預設的腳本內容可能不同。
三、預設的 xstartup 腳本在哪 ?
每個使用者都要個別設定是很麻煩,最好是有個預設腳本,讓一般使用者都可立即成功開啟「VNC 服務」,有特別需求再個別設定。網路上有很多人回答過這各問題,不過都不能適用 Fedora 中的「VNC 服務」,可能是在導入的過程中有些修改所致,也不想去考證它了。既然網路上的回答沒有用只好自己解決,就從啟動「VNC 服務」的命令著手。啟動「VNC 服務」是執行一個名為 vncserver 的程式,先查一下它在哪裏?
[root@Core-i7 ~]# locate vncserver由結果可以看到是位於 /usr/bin/ 這個目錄,用熟悉的「文字編輯器」開啟它。
/etc/sysconfig/vncservers
/usr/bin/vncserver
/usr/bin/x0vncserver
/usr/lib/systemd/system/vncserver@.service
. . . . .
四、預設 xstartup 腳本的修改過程
將修改處整理在後,因為檔案前端的修改若加入文字,會影響之後的列數,故由程式後端開始修改。第 211 列,原文
if ($opt{'-name'}) {修改為
$desktopName = $opt{'-name'};
} else {
$desktopName = "$host:$displayNumber ($ENV{USER})";
}
if ($opt{'-name'}) {使開啟的「VNC 服務」在連線後,所出現的視窗標題由原來的『Core-i7:1888 (SiB)』,改為『Core-i7:7788 (SiB)』,所顯示的「埠號」會是正確的「埠號」。其中的『Core-i7』是「主機名稱」,『7788』是連線的埠號,『SiB』是使用者名稱。
$desktopName = $opt{'-name'};
} else {
$desktopName = "$host:$vncPort ($ENV{USER})";
}
第 58 列,原文
$defaultXStartup修改為
= ("#!/bin/sh\n\n".
"unset SESSION_MANAGER\n".
"unset DBUS_SESSION_BUS_ADDRESS\n".
"exec /etc/X11/xinit/xinitrc\n");
$defaultXStartup這個修改與之前在個別使用者的 .vnc/xstartup 中的修改相同。
= ("#!/bin/sh\n\n".
"unset SESSION_MANAGER\n".
"unset DBUS_SESSION_BUS_ADDRESS\n".
"mate-session &\n".
"exit\n".
"exec /etc/X11/xinit/xinitrc\n");
修改完成後,存回原來檔案。在這之後第一次啟動「VNC 服務」時,在個別使用的「家目錄」下之 .vnc 中所產生的預設 xstartup 腳本,就會是修改後的新腳本了。
五、F21 的修改
與 Fedora 22 的修改內容相同,請參照上一段說明。六、F20 的修改
同樣的原因,顧及檔案前端的修改可能會影響之後的列數,故仍由程式後端開始修改。第 231 列,原文
if ($opt{'-name'}) {修改為
$desktopName = $opt{'-name'};
} else {
$desktopName = "$host:$displayNumber ($ENV{USER})";
}
if ($opt{'-name'}) {第 58 列,原文
$desktopName = $opt{'-name'};
} else {
$desktopName = "$host:$vncPort ($ENV{USER})";
}
$defaultXStartup修改為
= ("#!/bin/sh\n\n".
"unset SESSION_MANAGER\n".
"unset DBUS_SESSION_BUS_ADDRESS\n".
"OS=`uname -s`\n".
"if [ \$OS = 'Linux' ]; then\n".
" case \"\$WINDOWMANAGER\" in\n".
" \*gnome\*)\n".
" if [ -e /etc/SuSE-release ]; then\n".
" PATH=\$PATH:/opt/gnome/bin\n".
" export PATH\n".
" fi\n".
" ;;\n".
" esac\n".
"fi\n".
"if [ -x /etc/X11/xinit/xinitrc ]; then\n".
" exec /etc/X11/xinit/xinitrc\n".
"fi\n".
"if [ -f /etc/X11/xinit/xinitrc ]; then\n".
" exec sh /etc/X11/xinit/xinitrc\n".
"fi\n".
"[ -r \$HOME/.Xresources ] && xrdb \$HOME/.Xresources\n".
"xsetroot -solid grey\n".
"xterm -geometry 80x24+10+10 -ls -title \"\$VNCDESKTOP Desktop\" &\n".
"twm &\n");
$defaultXStartup修改完成後,存回原來檔案。在這之後初次啟動「VNC 服務」時的預設 xstartup 腳本,就會是修改後的新腳本了。
= ("#!/bin/sh\n\n".
"unset SESSION_MANAGER\n".
"unset DBUS_SESSION_BUS_ADDRESS\n".
"mate-session &\n".
"exit\n".
"OS=`uname -s`\n".
"if [ \$OS = 'Linux' ]; then\n".
" case \"\$WINDOWMANAGER\" in\n".
" \*gnome\*)\n".
" if [ -e /etc/SuSE-release ]; then\n".
" PATH=\$PATH:/opt/gnome/bin\n".
" export PATH\n".
" fi\n".
" ;;\n".
" esac\n".
"fi\n".
"if [ -x /etc/X11/xinit/xinitrc ]; then\n".
" exec /etc/X11/xinit/xinitrc\n".
"fi\n".
"if [ -f /etc/X11/xinit/xinitrc ]; then\n".
" exec sh /etc/X11/xinit/xinitrc\n".
"fi\n".
"[ -r \$HOME/.Xresources ] && xrdb \$HOME/.Xresources\n".
"xsetroot -solid grey\n".
"xterm -geometry 80x24+10+10 -ls -title \"\$VNCDESKTOP Desktop\" &\n".
"twm &\n");
後記:
- 2016-2-6 : Fedora 23 的 TigerVNC 更新至 1.6.0,因為 /usr/bin/vncserver 此檔案也有些修改,所以該檔案需修改的內容相同,但是位置不同:第 211 列改為第 233 列、第 58 列改為第 64 列。
- 2016-7-16 : Fedora 24 的修改位置與 Fedora 23 相同。
- 2017-8-4 : Fedora 26 的修改位置不同:第 211 列改為第 177 列、第 58 列改為第 62 列。
- 2018-10-16: Fedora 28 的修改位置不同:第 211 列改為第 180 列、第 58 列改為第 62 列。
已測試版本:
- Fedora: 20, 21, 22, 23
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)