快轉到主要內容

將FreeBSD當作日常系統使用,安裝XFCE桌面 + Fcitx5中文輸入法

· 民國114年乙巳年
·
切換繁體/簡體
分類   資訊科技 作業系統安裝教學
標籤   FreeBSD KDE Plasma XFCE
目錄

心情煩悶,就來安裝FreeBSD。結果裝了心情更煩悶了。光是為了搞定X.org圖形介面就讓許多腦細胞死亡。

將FreeBSD安裝在實機,當作日常桌面系統使用。

plasma.webp

圖形介面部分,選用我比較順手的KDE Plasma桌面…本來是這樣想的,但測試過比Linux更不穩定,許多系統組件沒有移植過來。此外X11工作階段還有嚴重的畫面撕裂問題,怎樣調整X.org設定都解決不了,唯一的好處大概就是能提早享受到Wayland。不過為了穩定使用,還是用絕對穩定的XFCE。KDE Plasma的功能在FreeBSD是半殘的。

xfce.webp

裝FreeBSD比裝Arch Linux還刺激,安裝的時候要一直看文件。

1. 測試環境
#

  • 系統版本:FreeBSD 14 Release
  • CPU:Intel i5-7400
  • GPU:Intel UHD 630
  • GPU:Nvidia GTX1050Ti

2. 製作開機隨身碟
#

FreeBSD官網下載ISO。FreeBSD有兩個更新頻道,Current是測試版本,Release是穩定版。所以選FreeBSD 14 Release,下載AMD64架構版本的Installer,選DVD版本的ISO。

screenshot_20250813_095918.webp
我使用Ventoy製作開機隨身碟

3. 安裝基本系統
#

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

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

    1.webp

  2. 選取Install開始安裝

  3. 設定鍵盤佈局

  4. 設定主機名稱

  5. 用空白鍵選取要安裝的系統組件,應包括kernel-dbug與ports

    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

16 安裝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

4. 安裝圖形驅動程式
#

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

安裝X.org
#

FreeBSD還不能純Wayland使用。至少SDDM顯示管理器本身還是跑在X11下的。

安裝X.org:

sudo pkg install xorg

將使用者加入video群組:

sudo pw groupmod video -m user

安裝Intel顯示卡驅動
#

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

  1. 使用DRM模組,不要安裝xf86-video-intel的舊式驅動,會更容易造成畫面撕裂。
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的情況。

  1. 安裝Nvidia驅動
sudo pkg install nvidia-drm-kmod
  1. 啟用DRM
echo 'hw.nvidiadrm.modeset="1"' | sudo tee -a /boot/loader.conf
  1. 設定開機載入Nvidia驅動,注意不可以跟Intel的DRM模組同時載入,會導致無法開機。
sudo sysrc kld_list+=nvidia-drm

不知道為什麼,測試當下我用nvidia-drm開機會kernel panic,所以只好改用舊版的nvidia驅動開機。這個能在開機時跟Intel顯示卡的DRM模組同時載入,但無法輸出螢幕訊號。

sudo sysrc kld_list+=nvidia
  1. 使用nvdia-xconfig指令產生X.org設定檔
sudo nvidia-xconfig
  1. 另一種方式是手寫X.org設定檔。用pciconf -lv | grep -B4 VGA指令查看Nvidia顯示卡的BusID

  2. 編輯/usr/local/etc/X11/xorg.conf.d/20-nvidia.conf 編輯X.org設定檔,啟用Nvidia DRM驅動

Section "Device"
    Identifier "Nvidia"
    Driver     "modesetting" # 使用DRM驅動,如果不要用就改回nvidia
    BusID      "PCI:1:0:0"
#    Option     "AccelMethod" "uxa" 如果畫面撕裂取消註解這二行
#    Option     "TearFree"  "true"
EndSection
  1. 重開機後用nvidia-smi指令確認驅動狀態。

5. 安裝桌面環境
#

FreeBSD允許同時安裝多個桌面環境,可以在開機後的顯示管理器的介面切換。

安裝XFCE桌面
#

GTK為主的桌面環境。

雖然XFCE 4.20已經支援Wayland,但是我測試無法啟動。

  1. 安裝XFCE套件
pkg install xfce xfce4-goodies xfce4-pulseaudio-plugin
  1. 安裝顯示管理器Lightdm
pkg install lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings

sudo sysrc dbus_enable="YES"

sudo sysrc lightdm_enable="YES"

安裝KDE Plasma桌面
#

QT為主的桌面環境。

  1. 現在最新版本是KDE Plasma 6了,安裝以下套件並設定SDDM語言
sudo pkg install kde

sudo pkg install packagekit plasma6-sddm-kcm sddm

sudo sysrc dbus_enable="YES"

sudo sysrc hald_enable="YES"

sudo sysrc sddm_enable="YES"

sudo sysrc sddm_lang="zh_TW.UTF-8"
  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. KDE Plasma預設工作階段是X11,如果遇到無法解決的螢幕撕裂問題,可以考慮切換到Wayland工作階段:
sudo pkg install wayland seatd

sudo sysrc seatd_enable="YES"
  1. 重開機後在SDDM選單切換為Wayland,KDE Plasma 6不用做什麼設定就能登入。

  2. 不過我測試當下有個嚴重bug,就是按下Ctrl+C使用者就會被登出。這樣看來X11還是穩定些。

6. 中文化與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. 安裝Fcitx5輸入法與新酷音
sudo pkg install fcitx5 fcitx5-configtool-qt6 \
fcitx5-gtk-common fcitx5-gtk3 fcitx5-gtk4 \
fcitx5-qt-common zh-fcitx5-chewing zh-fcitx5-chinese-addons
  1. X11桌面,編輯~/.xprofile加入環境變數,指定使用Fcitx5輸入法。如果使用Wayland則統一加在~/.profile
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus

7. 啟用PF防火牆
#

來自OpenBSD的防火牆方案。

  1. 設定開機啟動PF防火牆
sudo sysrc pf_enable=yes

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

  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

8. 一些常用工具
#

  1. 設定Avahi與nssswitch,啟用mDNS
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

9. 設定Linuxulator相容層
#

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

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

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

10. 系統管理指令
#

pkg install安裝套件

/etc/rc.conf控制開機載入的核心模組與服務

sysrc指令啟用開機服務,會自動編輯/etc/rc.conf檔案的內容,也可以用vim手動編輯。

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

/boot/loader.conf/etc/sys.ctl檔案控制開機載入的核心模組與服務,可以設定參數

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

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

11. FreeBSD相較於Linux的評價
#

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

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

FreeBSD的文件非常consistent,幾年前的依然適用。

但,FreeBSD套件缺的可多了,一堆套件安裝後顯示套件維護者失蹤了。

太多程式的圖形版沒有移植。例如KDE協助掛載檔案系統的kio實作不完全,就連MTP都要用指令掛,只好用命令行或TUI。

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

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

Linux有的,FreeBSD很多都沒有移植過來,在作為桌面系統的角色上,FreeBSD落後Linux好幾年。硬體支援度差勁也就算了,軟體東西也缺很多。

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

參考資料
#

相關文章

在微星筆電安裝GhostBSD (FreeBSD)教學 & 使用感想
分類   資訊科技 作業系統安裝教學
標籤   FreeBSD MSI XFCE
嘗試FreeBSD純Wayland桌面環境,以Sway為例
分類   資訊科技 電腦軟體分享
標籤   FreeBSD Wayland GNOME KDE Plasma XFCE
安裝FreeBSD QEMU/KVM虛擬機 + KDE桌面 + Fcitx5中文輸入法紀錄
分類   資訊科技 作業系統安裝教學
標籤   Libvirt FreeBSD

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

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

Click here to edit your comments.

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