快轉到主要內容

FreeBSD安裝教學,KDE桌面 + Fcitx5中文輸入法

· 民國115年丙午年
·
切換繁體/簡體
分類 資訊科技 BSD系統
標籤 FreeBSD KDE Plasma Fcitx5
目錄

將FreeBSD安裝在實機,安裝KDE Plasma桌面,搭配Fcitx5中文輸入法,當作日常桌面系統使用。

FreeBSD有GNOME、KDE Plasma、XFCE、Mate等桌面可選。我選用功能豐富又漂亮的KDE Plasma桌面。

目前可以在FreeBSD使用最新的KDE Plasma 6,支援X11與Wayland兩種圖形顯示技術。

1. FreeBSD簡介
#

FreeBSD是一種Unix-like的作業系統。可供個人電腦和伺服器使用。

FreeBSD和GNU/Linux一樣,是為開源免費的Unix-like作業系統,於1993年發布。前身是BSD Unix,基於當時美國各大學流行的Unix系統開發。Unix系統一開始是作為AT&T旗下貝爾實驗室的低成本研究專案授權給各大學使用的,加州大學柏克萊分校開發了自己的Unix系統,稱之為BSD Unix。1980年代早期,柏克萊分校使用了很多Unix的程式碼開發BSD系統,並發放給外界使用。然而,Unix被AT&T弄成商業產品後,開始控告柏克萊分校侵犯版權專利,打了好幾年的訴訟。在BSD陷入法律問題的同時,GNU/Linux的勢力趁機崛起,從此奠定了自由作業系統龍頭的地位。之後,柏克萊分校的開發團隊基於4.4BSD-Lite大幅度重寫程式碼,幾年後改稱FreeBSD,遂成為完全自由開源的作業系統。2000年,非營利組織FreeBSD基金會成立,用於支援FreeBSD的開發工作。

了解以上歷史淵源後,與其說FreeBSD和GNU/Linux一樣是Unix-like的系統,不如說它就是Unix的直系後代吧!啊,不過在現代「Unix」之名是需要花錢請The Open Group認證商標才可以使用的,否則只能稱之為Unix-like。目前因為認證費用高昂,FreeBSD基金會沒有加入此認證的規劃。


同為自由軟體,FreeBSD與GNU/Linux的授權條款理念有些微不同。GNU/Linux受自由軟體運動理念影響很深,GNU/Linux發行版多半使用GNU GPL授權條款,要求使用者必須開源回饋社區,防止商業公司將Linux核心改為閉源軟體,守護軟體自由。而FreeBSD系統使用的BSD授權條款則是秉持另外一種自由理念,所謂"The Power to Serve",允許任何人自由利用作業系統原始碼,不限制他人自由,不強求回饋,你想把我開發的系統弄封閉,整碗端走拿去賣錢也沒關係,只要附上BSD的聲明就可以了。

以自由軟體社群的聲勢來說,GNU/Linux社群蓬勃發展,商業與社群發行版好幾百個,不論在伺服器還是個人電腦領域都有人用。相較之下FreeBSD則是處於不溫不火的狀態,桌面方面進展落後GNU/Linux。但其實Apple macOS、Sony PlayStation、Nintendo Switch、TrueNAS等電子產品的底層核心有一部份就是使用FreeBSD技術的喔。在伺服器領域,FreeBSD系統依然有一定份額。


既然是開源系統,BSD家族同樣有許多衍生版,或說發行版,但是碎片化遠沒有GNU/Linux那麼嚴重。BSD系統家族的衍生版包括FreeBSD、OpenBSD、NetBSD、DragonflyBSD等等。每個BSD家族的系統都是一個完整的作業系統,而非像Linux只有核心,需要有人把它跟GNU之類的軟體打包才能成為完整的作業系統。

根據2005年的一項調查,FreeBSD是BSD家族中使用人數最多的系統。FreeBSD作為BSD系統家族當中最有名的版本,官方維護了豐富的原始碼儲存庫,還有一本清晰易懂的FreeBSD Handbook可供參考。

FreeBSD系統有兩個開發分支:Current是測試版本,Release是穩定版。Release大約兩年釋出一個版本。FreeBSD的開發一直都很穩定,對變化比較保守,傳承了1980年代的系統架構,沒有太大的更動。

FreeBSD保留了較為古早的init設計,所有系統服務都是由shell script定義,傳承了Unix哲學。

FreeBSD的系統架構設計比較一致,開發工作由同一個原始碼Git儲存庫管理。FreeBSD將系統軟體與第三方軟體清楚的分離。例如系統軟體會安裝到/bin,第三方軟體是/usr/local/bin,整體來說設計比較完善且統一。FreeBSD官方維護的就只有FreeBSD核心和「base」系統軟體而已,X11和圖形介面的軟體都是由第三方社群提供的。FreeBSD有一個「Ports」套件庫用於收錄各方貢獻的第三方軟體。

這樣做很好的隔離了系統軟體與第三方軟體。不像GNU/Linux發行版將所有軟體都混在一起,碎片化且標準不統一。

還有,FreeBSD的Ports所收錄的軟體分為quarterly release (stable) 和latest release (bleeding edge) 兩個分支,前者經過較長時間測試才會釋出新版本,後者則是一直追上游軟體的變更。使用者可以自由依照需求,選擇適合的軟體版本。

2. 測試環境
#

  • 主機板:ASUS K31CD-K
  • CPU:Intel i5-7400
  • GPU:Intel UHD 630
  • GPU:Nvidia GTX1050Ti
  • RAM:16GB

3. 製作開機隨身碟
#

  1. FreeBSD官網下載ISO。FreeBSD系統本身是沒有圖形界面的,也尚未加入圖形安裝器。需要在安裝完基本系統之後手動安裝桌面環境。

  2. 目前最新穩定版選FreeBSD 15 Release,下載AMD64架構版本的Installer,選DVD版本的ISO。

  3. 下載後檢查檔案完整性防止檔案毀損。

  4. 再使用Ventoy製作開機隨身碟。

  5. 重開機進入電腦UEFI,關閉Secure Boot,使用UEFI模式開機。

4. 安裝FreeBSD基本系統
#

開機之前確保有線乙太網路能夠上網。

  1. 開機後選取Boot Installer,按Enter

    1.webp

  2. 選取Install開始安裝

  3. 設定鍵盤佈局為US

  4. 設定主機名稱

  5. 用空白鍵選取要安裝的系統組件,這些套件之後都可以手動安裝,維持預設

    5.webp

  6. 檔案系統使用預設的ZFS

    6.webp

如果硬碟不為空,依照指示建立ZFS

61.webp
62.webp
63.webp

  1. 設定root帳號密碼

    7.webp

  2. 設定有線與無線網路介面,全部使用預設值

    8.webp

  3. 設定開機自動啟動服務

    9.webp

  4. 系統安全性措施一般人應該不需要啟用

    10.webp

  5. 如果有的話,安裝系統硬體需要的韌體

    11.webp

  6. 新增一般使用者,取名叫user或自己喜歡的名字,加入群組wheel

    12.webp

  7. 設定時區為Asia/Taipei

    13.webp

  8. 後續設定選No,然後Shutdown關機。拔出安裝隨身碟。

    14.webp

  9. 第一次開機後,沒有圖形介面。輸入root帳號和密碼,登入系統。

    15.webp

  10. 執行ifconfig確認有無連上網路。

  11. 安裝sudo和vim

pkg install vim sudo
  1. 執行vim /etc/sudoers指令,將一般使用者加入到sudo
# 找到以下內容並新增
root    ALL=(ALL:ALL) ALL
user    ALL=(ALL:ALL) ALL
  1. 切換到一般使用者
su user
  1. 將shell改成較為常見的bash
sudo pkg install bash

sudo chsh -s /usr/local/bin/bash root

sudo chsh -s /usr/local/bin/bash user

5. 安裝圖形驅動程式
#

FreeBSD支援X11與Wayland顯示技術,Wayland是比較現代的顯示技術,可以有效迴避X11畫面撕裂的問題。不過目前FreeBSD的Wayland還不穩定。因此這裡安裝X.org X Server作為主要圖形界面使用,Wayland當作備案。

FreeBSD對「不同顯示卡的雙螢幕」支援似乎很差勁的樣子,也沒有成熟的PRIME能用。我的電腦有內顯和獨顯,我是用Nvidia當作主要顯示卡,所以我不能同時使用兩個顯示卡輸出螢幕,只能一次使用一個GPU。

安裝X.org X Server
#

  1. 安裝X.org:
sudo pkg install xorg
  1. 將使用者加入video群組:
sudo pw groupmod video -m user
  1. 正常來說現代的X.org是不需要手寫xorg.conf設定檔的啦,不過如果你圖形界面出不來就得手動調整。

安裝Intel顯示卡驅動
#

這裡示範主顯示卡為Intel的情況。drm-kmod是移植自Linux的DRM驅動,內含i915kms的核心模組,提供modesetting驅動,架構比較現代且通用。至於xf86-video-intel是舊版的X11驅動,提供intel驅動,僅支援Intel 9代以前的CPU內顯。FreeBSD手冊是推薦使用i915kms的通用驅動。

  1. 安裝適用Intel UHD內顯的drm-kmod模組
sudo pkg install drm-kmod libva-intel-driver

sudo sysrc kld_list+=i915kms
  1. 可能需要手寫X.org設定檔。用pciconf -lv | grep -B4 VGA指令查看Intel顯示卡的BusID

  2. 編輯/usr/local/etc/X11/xorg.conf.d/20-intel.conf

  3. 加入以下選項啟用DRM。反畫面撕裂的選項不一定要填。

Section "Device"
    Identifier "Intel Graphics"
    Driver     "modesetting"
    BusID      "PCI:0:2:0"
#    Option     "AccelMethod" "uxa" 如果畫面撕裂取消註解這二行
#    Option     "TearFree"  "true"
EndSection

安裝Nvidia顯示卡驅動
#

這裡示範主顯示卡為Nvidia的情況。

參見:FreeBSD安裝Nvidia專有驅動

6. 安裝桌面環境
#

FreeBSD可以同時安裝多個桌面環境,包括GNOME、KDE Plasma、XFCE、Mate等等,並透過顯示管理器切換。

這裡我優先安裝的是SDDM顯示管理器 + KDE Plasma桌面。

KDE Plasma
#

  1. 現在最新版本是KDE Plasma 6了。安裝以下套件,會自動安裝X.Org、Wayland、XWayland、PulseAudio、SDDM等依賴套件
sudo pkg install kde

sudo pkg install plasma6-sddm-kcm sddm

sudo pkg install wayland seatd
  1. 設定KDE Plasma桌面開機需要自動啟動的服務,包括SDDM
sudo sysrc dbus_enable="YES"

sudo sysrc hald_enable="YES"

sudo sysrc sddm_enable="YES"

sudo sysrc seatd_enable="YES"
  1. 設定開機載入所有可用的音訊驅動。切換播放音訊輸出的程式交給PulseAudio管理就可以了
sudo sysrc snd_driver_load="YES"
  1. 依照KDE套件維護者建議,調整以下數值,設定開機自動套用,提升網路性能
echo "net.local.stream.recvspace=65536" | sudo tee -a /boot/loader.conf

echo "net.local.stream.sendspace=65536" | sudo tee -a /boot/loader.conf
  1. 重開機。

  2. SDDM應該會自動啟動,在SDDM左下角選單選取Plasma X11,登入桌面。如果想嘗試最新技術,可以選擇Plasma Wayland。

XFCE
#

  1. 安裝XFCE桌面與LightDM
sudo pkg install xfce xfce4-goodies lightdm lightdm-gtk-greeter
  1. 設定開機啟動服務,包括LightDM
sudo sysrc dbus_enable="YES"

sudo sysrc hald_enable="YES"

sudo sysrc lightdm_enable="YES"
  1. 設定開機載入所有可用的音訊驅動。切換播放音訊輸出的程式交給PulseAudio管理就可以了
sudo sysrc snd_driver_load="YES"

7. 設定中文化與安裝Fcitx5輸入法
#

  1. 安裝Noto字體以支援多國語言。這會把全部語言的字體拉進來,套件很肥。如果只要正體中文那就noto-sans-tc
sudo pkg install noto
  1. 編輯~/.profile,設定系統語言為正體中文
export LANG=zh_TW.UTF-8
export MM_CHARSET=zh_TW.UTF-8
  1. 設定開機啟動的SDDM語言為正體中文:
sudo sysrc sddm_lang="zh_TW.UTF-8"
  1. 輸入法我選Fcitx5,提供多種語言的輸入框架,它對Wayland支援比較好,且支援簡繁轉換。用以下指令安裝Fcitx5輸入法、新酷音注音輸入法、拼音輸入法:
sudo pkg install fcitx5 \
fcitx5-gtk-common fcitx5-gtk3 fcitx5-gtk4 \
fcitx5-qt-common zh-fcitx5-chewing zh-fcitx5-chinese-addons
  1. 編輯~/.profile,加入以下環境變數,指定在GTK與QT程式使用Fcitx5輸入法。
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SDL_IM_MODULE=fcitx
export GLFW_IM_MODULE=ibus
  1. 如果輸入法沒有在登入桌面後自動啟動,將Desktop Entry加入到XDG Autostart目錄:
mkdir -p ~/.config/autostart/

cp /usr/local/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/
  1. 如果要在KDE 6 Wayland使用Fcitx5,還需要開啟Plasma系統設定 → 鍵盤 → 虛擬鍵盤,選取虛擬輸入法為Fcitx5。

8. 啟用PF防火牆
#

  1. 來自OpenBSD的防火牆方案。設定開機啟動PF防火牆:
sudo sysrc pf_enable=yes

sudo sysrc pflog_enable=yes
  1. ifconfig指令列出所有網路介面

  2. 編輯/etc/pf.conf設定防火牆規則

  3. 規則如下,拒絕所有連入連線,但開放SSH

ext_if = "re0" # 輸入有線網路的介面

set block-policy drop

set skip on lo

pass out on $ext_if proto { tcp, udp, icmp } from any to any keep state

pass in on $ext_if proto tcp from any to any port 22 keep state
  1. 套用規則
sudo pfctl -F all -f /etc/pf.conf

9. 常用工具與系統調整
#

  1. 設定Avahi與nssswitch,啟用mDNS,讓電腦可以使用*.local的網域登入
sudo pkg install avahi-app nss_mdns

sudo sysrc avahi_daemon_enable="YES"

grep -q '^hosts:.*\<mdns\>' /etc/nsswitch.conf || sudo sed -i "" 's/^hosts: .*/& mdns/' /etc/nsswitch.conf
  1. 設定開機載入FUSE,允許一般使用者掛載硬碟
echo 'fusefs_load="YES"' | sudo tee -a /boot/loader.conf

echo 'vfs.usermount=1' | sudo tee -a /etc/sysctl.conf
  1. 啟用電源管理程式powerd,設定讓CPU自動依照需求調節系統效能:
sudo sysrc powerd_enable="YES"

sudo sysrc powerd_flags="-a hiadaptive -i 25 -r 85 -N"

10. FreeBSD如何安裝軟體
#

優先使用pkg install指令安裝軟體。不要使用桌面環境的應用商店前端,像KDE Discover,因為那需要PackageKit,但這個工具在FreeBSD不可用。因此還是以打指令安裝為主。

FreeBSD套件庫提供預先編譯好的二進位套件(Packages),這些套件可從http://pkg.freebsd.org取得。

使用者也可以使用Ports,手動複製軟體原始碼下來,依照自己的需求編譯修改。你可以到FreshPorts查看最新版本的套件提交狀況。通常,Ports的軟體成熟之後,FreeBSD官方就會提供二進位套件讓你直接裝。

11. FreeBSD系統管理指令
#

詳細內容請多參閱FreeBSD Handbook。

一般使用者執行以下指令記得加上sudo

使用service <服務名稱> start控制服務啟動。也可以使用service <服務名稱> enable設定開機啟動服務,它會自動編輯/etc/rc.conf檔案。

用vim編輯/etc/rc.conf這個檔案,用於控制開機載入的核心模組,以及啟動哪些服務。

使用sysrc指令啟用開機服務,它會自動編輯/etc/rc.conf檔案的內容。

kld_list+=指令新增開機載入核心模組,會自動編輯/etc/rc.conf

/boot/loader.conf/etc/sysctl.conf這兩個檔案用於控制開機載入的核心模組與服務,可以設定參數。

FreeBSD系統軟體的設定檔應該放到/etc,至於使用者安裝的軟體的設定檔應該放到/usr/local/etc/或者該名使用者的家目錄。

如果弄壞系統無法開機,就用LiveUSB,或者在開機時按2,進入Single User Mode,登入root帳號,執行mount -u /再救援系統。

12. 設定Linuxulator相容層
#

類似Wine的東西,允許在FreeBSD系統執行Linux的二進位檔。

非必要步驟,但有些軟體沒有原生FreeBSD套件,拿Linux的過來用比較方便,這個時候Linuxulator會很有用。

參考:FreeBSD跑Linux程式的方法:Linuxulator + Jail

FreeBSD作為桌面系統的使用評價
#

我大約從2022年起斷斷續續的嘗試FreeBSD系統。

身為Linux的使用者,我免不了會帶入Linux的視角去比較FreeBSD。FreeBSD的操作難度比Linux還要高,不過架構也相對單純。現在依然很好的保持了Unix哲學的設計精神。使用的時候要多讀手冊。

FreeBSD的軟體選擇是以開源軟體為主(我不講自由軟體,因為FreeBSD主要都是收BSD授權而非GPL授權)。部分軟體是從Linux移植過來的,也有BSD團隊自己的發明。

FreeBSD使用的是Unix-like通行的桌面。遵守FreeDesktop標準真是太好了,Linux桌面很多觀念都能借過來用,例如用fontconfig調整中文字型偏好,只是有些系統路徑不一樣罷了。

FreeBSD的文件非常consistent,多年發展下來沒有太大變化,幾年前的教學依然適用。

但,FreeBSD套件缺的可多了,一堆Linux套件沒有BSD版,不然就是安裝後顯示套件維護者失蹤了。太多程式的圖形版沒有移植。例如KDE協助掛載檔案系統的kio實作不完全,就連MTP都要用指令掛,只好用命令行或TUI。

瀏覽器缺乏DRM是個問題,Firefox和Chromium都沒有,更沒有Google Chrome原生套件。致使單純以瀏覽器為主的作業環境也會遇到許多問題,得手動安裝DRM套件解決。

Linux在多年的社群努力成果下,其實很多東西都自動化,開箱即用了。Systemd這類標準化措施功不可沒。在2026年用FreeBSD當桌面系統,好比在2000年代出頭使用Linux。根本就是瘋狂宇宙,只差沒有編譯XFree86。許多在Linux簡單就設定好的東西,FreeBSD得多做一些步驟。現在我才知道,Linux早就克服的X.org多螢幕自動偵測設定,到了FreeBSD還得要手動配置!Linux有的,FreeBSD很多都沒有移植過來,在作為桌面系統的角色上,FreeBSD落後Linux好幾年。硬體支援度差勁也就算了,軟體東西也缺很多。

總而言之,當作桌面系統來說非常challenging。

參考資料
#

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。