FreeBSD 13.1 + Mate (Modern Gnome 2) + XRDP (遠端桌面) 操作實務

距離上一次寫 FreeBSD 操作實務已歷時四年,爾後系統穩定,就沒有再研究新的系統怎麼做。

然而十分快的 FreeBSD 12.3  也進入了延伸支援期間,就以 FreeBSD 每個大版本約六年的支援期間,我仍然可以撐到 12.4 再決定要不要更新。然而 FreeBSD 13 將 ARM64 架構提升到了第一級支援陣線。這讓 FreeBSD 13 從 "可以在 ARM64 上執行" 變成 "可以在 ARM64 上效力"。工具與軟體充足程度已接近 x86 版本。讓近期新進的 ARM64 伺服器執行 FreeBSD,我能夠有足夠的信心。故開始著手少量升級部分伺服器到 FreeBSD 13,看看執行結果。


軟體與工具的來去無可避免

就 "使用哲學"、"系統架構" 甚至到 "類別函示庫的擺放" 等的一致性,FreeBSD 是做得相當的好,從接觸 FreeBSD 6 到現在的 FreeBSD 13,我都還能駕輕就熟地知道什麼東西要去哪裡設定。

雖然就使用上 FreeBSD 13 也一如既往般的相同,基本上設定這些與 12 幾乎毫無差異。但軟體與工具會隨著原作者不維護,或者是授權改變,導致往後的版本無法使用。而在設定 XRDP 中,一個重要的函示庫 x11rdp 已從 "支援期間" 變為 "棄用"。這導致之前的方法到最後一步時反而無法設定,一透過 RDP 連線進入後,反而會出現無法啟動 X-Window 的問題... 

雖然網路上的資料很少,但 Struggle 了一陣子之後,發現其實也不難: 就把 x11rdp 改為 xorgxrdp 就可以了...

不過為了閱讀方便,我還是會把與之前重複的步驟貼過來,增加閱讀便利。如果不知道我之前寫了什麼的:


動手之前

在動手之前,請注意一下自身系統的狀況。有些步驟需要更改為你的系統適用的作法。在我們要 Demo 的系統:

  • FreeBSD 13 安裝完成 (只有 base / lib)
  • 只有 root 帳號,其他帳號還沒有建立
  • pkg 套件管理程式尚未安裝

不會安裝 FreeBSD 13 ,或者是只是想要嘗試 FreeBSD 是什麼的人:

  • FreeBSD 13 安裝實錄
  • 使用已整合桌面環境的 FreeBSD 發行版 (例如 GhostBSD)
  • 請花時間了解 -nix 系統是什麼
  • 請花時間了解 -nix 系統可以為你做什麼
  • 請花時間了解基本的 -nix 系統操作與系統概念
若不想花時間了解的人,那去 YouTube 看看影片就好了。

為什麼使用 Mate:

對於剛使用 -nix 類系統 (不包含 MacOS) 的使用者也許無法想像桌面軟體是可以自己選擇的。但這與許多現在的 -nix 類系統為了更友善而預設了使用介面有關。就 -nix 類系統的設計而言,任何與作業系統互動的介面都是 "可選",而非 "絕對"。就文字介面的選擇不僅僅只有 sh,還有 BusyBox / Bash / Csh / Fish .... 等等。嵌入式系統的 -nix 系統有些就直接取消了互動介面。

簡言之,-nix 類系統是一個任君自由調整,想讓它是怎麼樣,它就可以長得什麼樣。FreeBSD 便是一個這樣的系統 - 最基本的操作介面交給你,爾後想怎麼搞,想怎麼做,責任在你。

而為什麼會選擇使用 Mate... 除了是因為繼承了長達十多年的 Gnome 2 介面與操作概念,主要是因為在於中文翻譯的程度。目前為止,Mate 介面的繁體中文翻譯十分的完整。Gnome 3 只有日期顯示翻譯為繁體中文,KDE 4 則仍只有翻譯部分,XFree86 則是什麼都沒翻譯。

雖然 FreeBSD 上有繁體中文翻譯的軟體並不多,但至少桌面軟體是全中文的,仍可節省下不少麻煩。

FreeBSD 13.1 的 Mate 1.26

2005 年 Ubuntu 5.10 的 Gnome 2.10 介面

我不喜歡這些軟體與選擇,用其他的可以嗎 ?

當然可以,不過請自己多花點時間 Google 或使用 FreeBSD 文件。有些做法也許你可以拿去使用。但有些會因為軟體不同而失效。

在這個章節裡,我們要做到

在開始之前,請注意 Command 的符號:
#: 這個指令是在 root 帳戶中執行的
$: 這個指令是在一般權限下執行的

我們在這個章節裡:
  • 安裝基本工具與基礎調整
  • 設定繁體中文環境
  • 建立使用者
  • 安裝與設定 Mate 桌面環境
  • 設定中文輸入法 (fcitx)
  • 設定遠端桌面連線伺服器

安裝基本工具與基礎調整

剛安裝好的 FreeBSD 系統十分的乾淨,是連預設的套件管理程式 pkg 都沒有安裝。但為了方便使用,第一次執行 pkg 時,系統就會自動詢問是否需要安裝:

# pkg

請按下 y 進行安裝


由於 FreeBSD 預設的編輯軟體是 vi,這對於不諳命令列式編輯器的人(例如PE2 PE3 漢書中文處理系統等) 使用不是一件容易的事情。所以我們改用nano:

# pkg install nano


所有操作都可透過Ctrl + (Key)完成,使用上容易許多,建議安裝,方便後續操作。

設定繁體中文環境

FreeBSD 除了鍵盤設定會有語言之差,系統本身並沒有預設的「顯示語言」。使用者必須自行設定語言環境。為了讓未來新增使用者時,不需要一而再再而三的個別設定中文環境,我們會把繁體中文的各項語言設定歸類到一個 Class,爾後所有帳戶建立時,得參考該 Class。

欲編輯 Class 定義:
# nano /etc/login.conf

拉到最後面,複製以下的資料,並貼上
tchinese|Traditional Chinese Users Accounts:\
     :charset=UTF-8:\
     :lang=zh_TW.UTF-8:\
     :tc=default:
 

編輯後按下Ctrl + O (Write Out)儲存,再按下Ctrl + X 關閉。
為了讓設定能夠生效,執行:
# cap_mkdb /etc/login.conf

爾後讓新增使用者時,系統會自動套用 tchinese (剛剛我們設定的繁體中文)
# nano /etc/adduser.conf
並在檔案中輸入:
defaultclass=tchinese

如果您在這之前已經設定了其他使用者帳戶:

在設定 defaultclass=tchinese 之前建立的使用者,會使用預設的 class (default),而不是我們所指定的 tchinese。

若要變更:
# setenv EDITOR nano
# chpass "要變更的使用者名稱"

找到 Class,改為 tchinese,完成後按下Ctrl + O (Write Out)儲存,再按下Ctrl + X 關閉。

建立使用者

一般情況之下,多數的桌面軟體都不建議以root權限使用,遠端ssh更預設直接拒絕root登入,故建議建立另外的使用者

# adduser

接著請依照提示輸入資訊,不過有幾項要注意的事情:
當系統詢問是否要邀請使用者進入其他使用者群組時(Invite to other groups),請輸入wheel。wheel 屬於FreeBSD系統中有權限使用su指令(進入root權限) 的使用者群組,沒有加入wheel群組的使用者,使用su指令都會被拒絕。
如果這個使用者不需要管理系統的權限 (e.g., 安裝軟體) 則請將 (Invite to other groups) 空白


安裝與設定 Mate 桌面環境

FreeBSD 與其他 -nix 系統一樣,使用者介面都是可選。所以如果需要使用視窗介面,那就必須要另外安裝。
# pkg install xorg mate slim slim-freebsd-black-theme noto
先簡單說明一下安裝的套件
  • xorg : X11 視窗伺服系統
  • mate : Mate 桌面套件
  • noto : Google Notofu 東亞自型補完集
  • slim : slim 圖形化登入介面
  • slim-freebsd-black theme : slim 圖形化登入介面佈景主題 - FreeBSD 黑 (可選)

接著必須啟用相對應的服務,Mate 介面運作才能正常
# sysrc dbus_enable=YES hald_enable=YES slim_enable=YES


接下來為更改登入畫面的佈景主題 (這個請按照自己的喜好決定要不要做)
# nano /usr/local/etc/slim.conf
找到 current_theme default,並改為
current_theme slim-freebsd-black-theme


指定每個帳戶都以 Mate 桌面環境啟動:

請先不要急著重新開機 : 
很可惜的,Mate 桌面環境唯一的缺點是,它沒有自己的登入介面管理員,所以我們才需要額外安裝 SLiM 充當之。但 SLiM 畢竟只是登入畫面,登入後則會直接執行 [使用者家目錄中的 .xinitrc] 檔案的內容,如果沒有這個檔案,則會出現無法執行登入指令的畫面

很可惜的,除了一個一個要求使用者設定其家目錄中的 .xinitrc 檔案,沒有一個完美的解

請登出 root,登入要使用 Mate 桌面的使用者,並執行:
$ nano ~/.xinitrc
並輸入
exec mate-session


如果沒有做這一步,很猴急地重新開機,會被卡在登入介面

我卡在登入介面,怎麼辦 ?

不要緊張,試著按下 Ctrl + Alt + F2 ~ F7,這時候系統會依序叫出 tty2 ~ tty7,因為 X-Window 只會占用一個 TTY。進入文字介面後,設定每個帳戶的 .xinitrc

如果一切設定正確,則會看到以下的登入介面,且系統也能正常登入:



設定中文輸入法 (fcitx)

很可惜的,正如前面所述,FreeBSD 並不像多數 Linux 發行版一樣,十分強調開箱體驗。處理輸入法也十分的麻煩。由於本人喜歡使用 fcitx 勝過用 ibus。所以這裡介紹如何設定 fcitx。

開啟「應用程式」-> 「系統工具」->「Mate 終端機」開啟終端機:
$ su
# pkg install zh-fcitx zh-fcitx-chewing zh-fcitx-configtool zh-fcitx-table-extra
# exit
$ exit


十分可惜的是,FreeBSD 並不向 Linux 有簡單的 im-switch 或輸入法框架可以直接一個指令解決一切。FreeBSD 需要透過環境參數指定輸入法:
然而剛才的 xinitrc 是不得已才一個一個設定,環境參數我們仍然可以借用登入 Class 來達成使用該 Class 的人都能被設定這個參數:

$ su
# pluma /etc/login.conf

在tchinese 的 :tc=default: 之前加入以下資訊
:setenv=GTK_IM_MODULE=fcitx:\
:setenv=GTK3_IM_MODULE=fcitx:\
:xmodifiers="@im=fcitx":\


修改完成後,記得
# cap_mkdb /etc/login.conf

但修改 login.conf 只影響文字模式環境的輸入法,而 X-Windows 環境... 你猜對了...
必須又要一個一個帳號修改 .xinitrc:

接著登入要使用輸入法的帳號,打開終端機,在這些帳號執行以下指令:
$ pluma ~/.xinitrc
在 exec mate-session 前面加入:
export XMODIFIERS='@im=fcitx'
export GTK_IM_MODULE=fcitx
export GTK3_IM_MODULE=fcitx

接著每個帳號要把輸入法啟動器,複製到自動啟動資料夾中:
$ mkdir ~/.config/autostart
$ cp /usr/local/share/applications/fcitx.desktop ~/.config/autostart/

重新開機後,就可以看到右上角的輸入法圖示。


如果你已經設定到這裡,恭喜你,中文化環境設定已經完成了

設定遠端桌面連線伺服器

其實跟之前 FreeBSD 12 版的操作很相像,但軟體跟部分設定需要更換
$ su
# pkg install xrdp xorgxrdp


接著,必須將 xrdp 相關的服務設定為啟動:
$ su
# sysrc xrdp_enable=YES xrdp_sesman_enable=YES

再來,必須告訴 xrdp 要啟動的桌面環境:
$ su
# pluma /usr/local/etc/xrdp/startwm.sh

相較於以前的 xrdp,新版的 startwm.sh 寫的是相當簡潔乾淨。
在 #### set environment variables here if you want 下面,更改為:
export LANG=zh_TW.UTF-8
export XMODIFIERS='@im=fcitx'
export GTK_IM_MODULE=fcitx
export GTK3_IM_MODULE=fcitx

而在 #### start desktop environment
除了 exec mate-session 前面的 # 字號是刪除的
其他一律加上 # 字號


完成後重新開機。

測試遠端桌面連線:

接著就可以使用 Windows 的遠端桌面連線程式,連線到 FreeBSD 之中


如果遠端連線都能正常,那恭喜你,全部都已完工 !






留言

熱門文章