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


注意!這個文章的資訊過舊!如果您使用 FreeBSD 12.1 或更新,請參考:

BSD 為柏克萊大學依照Unix 理念所設計的類Unix作業系統,穩定性高,具組織的委員會嚴格管理系統架構使得系統乾淨整潔。與百家爭鳴導致Distro間不致相容的Linux有很大的差別。


雖然BSD是個十分優秀的作業系統,但是在台的熱門程度並不比Ubuntu 或者是Fedora 這些來的出名。繁體中文的資訊也不及英文來的多。

 跳槽起源

前言也說得夠多了,現在進入正題。
前些陣子仍非常支持以AT&T System V Release 4 為基礎的Solaris,而實驗室中也有許多開放給學生使用的Solaris作業系統虛擬機並透過VNC遠端連線。

但出了一個問題: Oracle 對於Solaris 逐漸置之不理的態度,在Solaris 11.4的大更新中讓我重新思索AT&T Unix是否仍然是重要到可以犧牲一切維持下去 ? 一個軟體更少,對於機器侷限更為嚴格的Unix

學生所要的是先進而嶄新的技術,作業系統新穎程度與提供的功能對於資訊學系的學生來說也是必然要持續向前接受的事項。我覺得放棄AT&T Unix的光環已經是一項必然的決定。Solaris 的冷門與Oracle 的態度除了給我的灰心,也十分影響學生進步,作業系統的穩定與信任都能隨著作業系統成長,但是新穎是一代一代的事情。對於一個越來越限縮的平台,把一群人帶到一個Niche 與十分夕陽的作業系統中,沒有必要。

再見了,AT&T Unix! 也許實質已不存在,但你的精神活在每個往後的作業系統,與每個熱愛電腦的人心裡,還有我對你的懷念而正走向BSD

 動手之前

在開始之前,先把設定的內容交代一下,方便繼續說明往後的操作:
Demo的系統僅只安裝好FreeBSD,沒有安裝任何軟體,尚未設定任何帳號。

使用的BSD版本: FreeBSD 12 20180426版本。由於FreeBSD 12 屬於Current狀態,並非FreeBSD 11.1 Stable,未來可能還會有變動。如果有重大變動,會再繼續調整。

而我們想要的設定:
中文化系統、建立使用者、安裝Mate桌面、No-tofu (修正缺字)、設定遠端桌面(XRDP)、設定中文輸入法(fcitx)

為什麼是使用Mate Desktop:

除了是衍生於大家所熟知的Gnome 2,主要是在於中文化程度與對XRDP的支援程度:
中文化程度來說 Mate-Desktop的狀況在FreeBSD上的狀況最好,少許沒有翻譯,KDE 4 僅只翻譯部分,Gnome 3僅只翻譯日期顯示,XFree86則是完全沒有翻譯。
而對於XRDP方面: XFree86KDE 4最好,不需要修改即可上線,Mate-Desktop需要部分修改,而Gnome 3在於華麗的動畫與部分3D顯示… XRDP非常有意見….

中文的重要在於學生會害怕操作一個完全英文的作業系統,Although I’m totally fine with that…. 但是對於一個學生完全不Fine的作業系統…. 再多的推廣都沒有用。不過難聽的也要先說,FreeBSD上有i18n的軟體並不多,LibreOfficeFirefoxThunderbirdKDE4PearlPHPPythonRubySeamonkey 大概是能夠點出的軟體

最後: 請注意本文使用的命令列前Prompt符號:

# : root權限下 (su)
$ : 一般使用者權限下


1.      基礎調整

剛安裝好的BSD非常乾淨,基礎的套件管理程式pkg預設是不安裝的,所以:
# pkg

請輸入yes繼續安裝
再部分情況之下可能會發生version mismatch的問題,yes繼續即可。


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

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

2.      中文化系統

BSD語言的方法與Linux不太相同,系統預設沒有特別對什麼語言支援,而是個使用者必須自行設定。首先先宣告語言設定新增為一種登入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


3.      建立使用者

一般情況之下,多數的桌面軟體都不建議以root權限使用,遠端ssh更預設直接拒絕root登入,故建議建立另外的使用者
# adduser
接著請依照提示輸入資訊,不過有幾項要注意的事情:
當系統詢問是否要邀請使用者進入其他使用者群組時(Invite to other group),請輸入wheelwheel 屬於BSD系統中有權限使用su指令(進入root權限) 的使用者群組,沒有加入wheel群組的使用者,使用su指令都會被拒絕。


4.      安裝Mate桌面

BSD與其他Unix-Like作業系統一樣,UI都為可選,故需要視窗UI,都需要另外安裝。
# pkg install xorg mate slim slim-freebsd-black-theme
先介紹一下安裝的套件:
xorg: X11 Window 伺服系統
mate: Mate桌面套件
slim: slim 登入介面
slim-freebsd-black-theme: 登入介面佈景主題(可選可不選)


接下來要啟用相關服務,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


完成後請先登出root帳號,並登入新的帳號,以便設定新帳號X Window系統的啟動參數:
# logout


重新登入後:
$ nano ~/.xinitrc
輸入:
exec mate-session
完成後儲存並退出。
重新開機:
$ su
# reboot


重新開機後使用新增的帳號登入系統:



5.      No-tofu

第一次用新增的帳號登入時,雖然大部分的文字能夠顯示正常,不過仍有缺字,


故透過開啟「應用程式」-> 「系統工具」->Mate 終端機」開啟終端機:
$ su
# pkg install noto

重新開機或重新登入後:


Noto唯一的缺點是真的很佔空間,但是在字型好看與不用設定的優勢下,確實可以省掉不少麻煩

6.      設定中文輸入法(fcitx)

Dealing with 輸入法永遠都是Unix-Like 系統一件 非常非常討厭的事情,所以設定過程也 非常非常討厭,開啟「應用程式」-> 「系統工具」->Mate 終端機」開啟終端機:
$ su
# pkg install zh-fcitx zh-fcitx-chewing zh-fcitx-configtool zh-fcitx-table-extra
# exit
接下來,設定系統使用輸入法。FreeBSD沒有像大多數的Linux一樣,有im-switch或是桌面軟體有輸入法框架可以設定。必須透過設定環境參數,故有三的檔案需要設定:
.cshrc / .shrc /.xinitrc
.cshrc 是給予使用csh(一種文字介面)作為介面的使用者或應用程式作為登入時要執行的程式或命令。.shrc則是sh的,而.xinitrc 是給X Window。所以一樣開啟Mate-終端機:
$ pluma ~/.cshrc
在檔案結尾輸入:
setenv XMODIFIERS @im=fcitx
setenv GTK_IM_MODULE fcitx
setenv GTK3_IM_MODULE fcitx


$ pluma ~/.shrc
在檔案結尾輸入:
export XMODIFIERS='@im=fcitx'
export GTK_IM_MODULE=fcitx
export GTK3_IM_MODULE=fcitx



$ pluma ~/.xinitrc
exec mate-session 前面輸入:
export XMODIFIERS='@im=fcitx'
export GTK_IM_MODULE=fcitx
export GTK3_IM_MODULE=fcitx


Pluma: Mate桌面的文字編輯程式,這樣就不需要一直使用nano

最後要設定輸入法自動啟動,開啟Mate終端機:
$ mkdir ~/.config/autostart
$ cp /usr/local/share/applications/fcitx.desktop ~/.config/autostart/


完成後重新登入或重新開機。
接下來可用FCITX設定工具來選取想要的輸入法,可以從Mate終端機輸入: fcitx-configtool 或是從「系統」->「偏好設定」->「其他」->Fcitx設定」存取


開啟pluma進行測試:


7.      遠端桌面設定

開啟Mate終端機:
$ su
# pkg install xrdp x11rdp
XRDP只是一個轉接介面,提供使用者登入後須依賴其他顯示(例如VNC或是X11),故需連同安裝x11rdpx11rdp唯一的問題在於像GNOME 3太華麗的介面與3D動畫,這些無法處理。在Gnome 3 上面只會出現 Oops, something goes wrong 而已。

完成安裝後必須要求系統啟用XRDP服務:
# sysrc xrdp_enable=YES xrdp_sesman_enable=YES

接下來設定參數是非常重要的一環。XRDP並不透過各個使用者的.xinitrc檔案作為X-Window設定參考,而是使用另外的startwm.sh做為參考基準。故所有額外的軟體安裝與設定都要再調整。XRDP並不會搶占目前正在使用電腦的使用者畫面,而是另外通知X-Window伺服軟體再新開視窗介面。故與目前正在使用電腦的使用者近乎無關。

由於MATE是一個新的桌面軟體,XRDP預設無法直接啟動mate-session,故需另外手動設定:
# pluma /usr/local/etc/xrdp/startwm.sh
找到SESSIONS=這行,再前面輸入mate-session 並用空格隔開:
這樣XRDP才會第一順位啟動mate桌面


接下來找到#export LANG=$LANG這行,再下方輸入:
export LANG=zh_TW.UTF-8
export XMODIFIERS='@im=fcitx'
export GTK_IM_MODULE=fcitx
export GTK3_IM_MODULE=fcitx
XRDP能夠以繁體中文與中文輸入法環境參數啟動mate-session


接著啟動XRDP:
# service xrdp start

然後就可以回到Windows桌面,開啟遠端桌面連線程式:

輸入帳號密碼後:

完成:

8.      小型軟體調整:

安裝Firefox:
# pkg install firefox firefox-i18n


安裝LibreOffice
# pkg install libreoffice zh_TW-libreoffice


安裝網路管理員 (方便存取無線網路等),也會在系統列出現網路圖示
# pkg install networkmgr
但是仍然需要額外的設定讓軟體能夠存取系統資訊:
# pluma /usr/local/etc/doas.conf
輸入:
permit nopass keepenv root
permit :wheel
permit nopass keepenv :wheel cmd netcardmgr
permit nopass keepenv :wheel cmd detect-nics
permit nopass keepenv :wheel cmd detect-wifi
permit nopass keepenv :wheel cmd ifconfig
permit nopass keepenv :wheel cmd service
permit nopass keepenv :wheel cmd wpa_supplicant
完成後儲存,幾秒鐘後程式就會開始運作。


我想陸陸續續會再把一些BSD上遇到的雜七雜八大小事放上來。目前就XRDP無法正常輸入中文的事情來說,影響不算小。決定先放上來。以後有空再慢慢整理吧….
至於關於XRDP這個軟體,以後有碰到什麼奇怪的Distro安裝不上去的有解決的話,再放上來吧。

參考資料:
XRDP中文無法輸入: 我發現的XD

留言

  1. 你好,很冒昧的打擾一下。我現在用的是FreeBSD12.0.按照你的方法安裝找不到x11rdp,得知已經轉換為xorgxrdp這個包,其他未變。但是/etc/xrdp/startwm.sh 裡面的配置信息與您不符。按照您的配置無法遠程xrdp,顯示一個白色的終端在xrdp遠程端口裡,黑色背景。我的配置文件是#!/usr/bin/env bash
    #
    # This script is an example. You might need to edit this script
    # depending on your distro if it doesn't work for you.
    #
    # Uncomment the following line for debug:
    # exec xterm
    這樣開頭的,能否告知怎樣配置?萬分感謝!

    回覆刪除
    回覆
    1. x11rdp 大概在FreeBSD 12 BETA2左右就從套件庫中被移除了,而由xorgxrdp來使用。看說明似乎是不再依賴startwm.sh 來進行指定的Window環境,而似乎是由使用者目錄下定義的.xprofile 來決定要啟動什麼Window環境(e.g. KDE/GNOME)。由於目前我還沒找到比較Elegant的處理方式。故目前是在每個使用者目錄下建立一個指定啟動Window環境的檔案。
      以下為startWorkspace.sh的內容:
      export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
      (xrdp啟動session時並沒有如在本機登入會自動將path 完整帶入,故在這裡指定)
      export LANG=zh_TW.UTF-8
      (原先雖然登入時已經指定了default 的class(請見上方),但xrdp好像不理會這個...?(待研究))
      export XMODIFIERS='@im=fcitx'
      export GTK_IM_MODULE=fcitx
      export GTK3_IM_MODULE=fcitx
      (原先應該要執行的.xinitrc 與.cshrc或.shrc,xrdp開session時是不執行的,故放回來)
      exec mate-session
      (指定啟動的Window系統,我用的是mate-session)
      exec fcitx
      (啟動中文輸入法)
      而登入時輸入./startWorkspace.sh 就會啟動回原本的Window環境了。

      另外要注意的是,我習慣用的是bash,所以是以bash來寫
      如果是使用csh或tcsh 可能需要改一下。

      刪除

張貼留言

熱門文章