快轉到主要內容

簡述安裝OpenBSD + KDE桌面 + 中文輸入法過程

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

追尋自由又安全的Unix-like系統,嘗試將OpenBSD作為桌面系統使用?

如果人們的電腦開機都只執行一個X Window Manager,那麼你的系統就會非常安全吧。

不過我還是決定安裝比較重型的KDE Plasma桌面環境。

1. OpenBSD簡介
#

OpenBSD是一個注重安全性的Unix-like系統,屬於BSD系統家族,開發工作起源於1995年。專案發起人Theo de Raadt因為跟NetBSD開發者意見不和,遂分叉出OpenBSD專案。

OpenBSD比FreeBSD還冷門,雖然很少被人作為主要的作業系統使用,不過著名的OpenSSH、pf、doas、OpenNTPD等工具就是這個系統的開發者所撰寫的,這些工具並沒有限定只能在OpenBSD使用,開發者將他們移植到了其他主流的作業系統,造福大眾。

OpenBSD傾向走精簡系統的設計。開發比FreeBSD更為謹慎,擁有嚴格的程式碼審查流程,據說開發工作都是在專案發起人Theo de Raadt家中的定期黑客松協調的。

OpenBSD專案自稱是一個注重安全的系統。號稱發表20多年來,預設安裝的系統只有被找到二個遠端執行提權的漏洞,因此十分之安全。所謂預設安裝的系統是指,開機只有FVWM執行的X11環境和OpenSSH Server,什麼第三方軟體都沒安裝的情況下。

通常,OpenBSD會部署在伺服器和路由器環境,當作防火牆使用。要作為桌面系統的話難度頗高。

比較特別的是OpenBSD是內建X Window圖形介面的,也就是FVWM,並由開發者親自維護,不像其他BSD系統預設安裝只有純文字介面,把圖形介面的工作都丟給第三方Ports處理。呃,雖然說以現代人的標準來看OpenBSD這個圖形介面實在精簡過頭了。要一個實際可用的桌面環境,你還是得安裝Ports第三方移植的套件。

因為OpenBSD追求極致安全性,所以可能會犧牲一些系統的效能,導致同一個硬體在OpenBSD比FreeBSD要慢。例如Intel CPU的超執行緒功能預設是停用的,還有預設的FFS2檔案系統I/O效能不佳。這些需要手動調整系統參數才能改善。

OpenBSD的版本分為CURRENT與RELEASE,每6個月釋出一個新版本。不過由於OpenBSD系統設計很簡單,指令通常不太會有太大變化。

OpenBSD有自己的Ports套件庫,收錄的軟體比FreeBSD少很多,FreeBSD的Ports也不見得能沿用。因此使用上需要有更高的除錯能力。

OpenBSD安裝過程蠻直覺的說,他們開機就執行一個純文字的程式,回答問題即可完成安裝。值得一提的是OpenBSD有自己維護Xenocara X Server,是當初從XFree86 X Server分叉出來的,並非常見的X.org X Server。有打了一些增強安全性的修補程式。但是…只有FVWM誰用的下去呀喂。OpenBSD也有收錄常見的Unix-like適用的桌面套件,例如GNOME、KDE Plasma、XFCE,可一旦安裝這類複雜的桌面還敬,系統漏洞攻擊面就馬上變多了的說~

2. 測試環境
#

  • 電腦:MSI Modern 15 A10RBS
  • CPU:Intel i5-10210u
  • GPU:Intel UHD 620
  • GPU:Nvidia MX350

3. 製作OpenBSD安裝隨身碟
#

  1. OpenBSD的官網…真的很樸素呢。官方ISO沒有圖形安裝器,需要用指令稿安裝。到官網下載最新穩定版(Release)的ISO。我使用OpenBSD 7.8。

  2. 建議驗證檔案完整性

  3. 這個ISO可以使用Ventoy開機。不過如果你打算離線安裝,那就用dd指令的方式製作開機隨身碟,才能在安裝過程中載入系統檔案離線安裝。

  4. 重開機進入UEFI,使用隨身碟開機

4. 安裝OpenBSD
#

  1. 官方ISO沒有圖形安裝器,需要用指令稿安裝。推薦使用有線乙太網路安裝,免得網路卡還要抓驅動才能用。

  2. 開機後依照畫面指示輸入i,開始安裝

  3. 首先OpenBSD會使用ifconfig自動啟用網路。並在安裝過程中嘗試用fw_update安裝必須的韌體。

  4. 參考安裝選項如下:

Keyboard layout: us
Hostname: #輸入主機名稱
Network: #選取要使用的網路界面,推薦優先使用有線乙太網路
IPv4: autoconf # 啟用DHCP
IPv6: none
Network interface: done
Password for root: #設定root帳號密碼
Start sshd by default? yes # 開機自動啟動SSH伺服器
X Window System start with xenodm? yes # 開機自動啟動X視窗系統
Setup user? username: user # 新增一般使用者user
Allow root ssh login? no # 是否允許Root登入SSH
Timezone: Asia/Taipei # 時區
Which disk?  # 選取要安裝系統的硬碟,輸入?可以查看硬碟型號
Encrypt root disk? no
Use WHOLE disk # 使用GPT分割表,使用FFS2檔案系統
Use AUTO layout # 自動磁碟分區
Which disk to initialize: done
Location of sets: http # http從網路下載系統套件,disk則是離線安裝系統套件
HTTP Proxy URL? none
HTTP Server? # 選一個離台灣最近的國家的伺服器,輸入數字
Server directory?
Set names? done
Location of sets? done
  1. 首次開機,使用root帳號登入系統

  2. 然後就會進入FVWM桌面,點左下角打開終端機。OpenBSD預設就是走極簡風。右下角允許你切換多個工作區。

  3. 首先將使用者加入wheel群組。OpenBSD預設管理使用者權限的工具推薦使用doas,而非sudo。因此,以root登入系統,編輯/etc/doas.conf

vi /etc/doas.conf
  1. 允許wheel群組用戶執行指令
permit :wheel
  1. 將使用者加入wheel群組
usermod -G wheel user
  1. 之後以一般使用者登入就可以用doas為開頭安裝軟體了。

5. 一些系統調整
#

  1. 設定開機自動連上網路。如果有乙太網路連線。首先用fw_update嘗試下載網路卡需要的韌體:
doas fw_update
  1. 需要用Wifi的話,用ifconfig列出界面,確認Wifi裝置有抓到驅動,然後輸入SSID與密碼,令其連上Wifi。這裡的例子是Intel Wireless-AC 9560,裝置代號顯示為iwx0。因此建立一個界面名稱結尾的hostname檔案,並輸入Wifi密碼,然後啟用DHCP,啟動網路。
doas touch /etc/hostname.iwx0

echo "join 'SSID' wpaprotos wpa1,wpa2 wpakey '密碼'" | tee -a /etc/hostname.iwx0

echo "inet autoconf" | tee -a /etc/hostname.iwx0

doas sh /etc/netstart
  1. 啟用原生音訊服務,取消靜音
doas rcctl enable sndiod

doas mixerctl outputs.master.mute=off
  1. 啟用超執行緒功能
echo "hw.smt=1" | doas tee -a /etc/sysctl.conf
  1. 啟用apmd,調整系統電源模式,設定在使用電源的時候啟用最大效能模式
doas rcctl enable apmd

doas rcctl set apmd flags -A
  1. 編輯/etc/pf.conf,填入以下內容,只允許SSH連入
set block-policy drop
block all
pass out all keep state
pass in on em0 proto tcp to port 22 keep state
  1. 啟用PF防火牆
doas rcctl enable pf

6. 安裝顯示卡驅動
#

OpenBSD不使用drm-kmod提供顯示卡驅動,也沒有xf86-的驅動套件。所有驅動都含在作業系統核心裡面。一部分韌體可以透過fw_update下載。

doas fw_update 

Intel的顯示卡應該是開箱即用。

OpenBSD拒絕接受閉源軟體。因此Nvidia閉源驅動在這裡是用不了了,連Nouveau都沒有,因此是完全無法作動的狀態。

7. 安裝軟體方式
#

OpenBSD安裝軟體的指令是pkg工具。

例如搜尋套件:

doas pkg_info -Q firefox

安裝Firefox套件:

doas pkg_add firefox

OpenBSD的第三方軟體依賴Ports提供。Ports的原始碼樹每6個月跟著OpenBSD專案一起更新。

8. 系統管理指令
#

OpenBSD預設的shell是ksh。

要管理網路,主要使用ifconfig操作。網路介面的設定透過/etc/hostname.介面名稱定義,DNS定義在/etc/resolv.conf,並透過sh /etc/netstart套用。

OpenBSD的系統服務管理使用rcctl,它會自動編輯/etc/rc.conf.local來設定開機要啟動的服務。

例如,設定開機啟動xenodm:

doas rcctl enable xenodm

9. FVWM基本操作
#

OpenBSD開機會啟動xenodm作為顯示管理器,然後啟動FVWM。

這需要手動寫設定檔來設定視窗外觀,定義在~/.fvwm/config

具體設定方法見FVWM Wiki或者Arch Wiki

右下角有工作區,開啟的視窗最小化之後會放到左下角

很多操作都要用命令行解決。

10. 安裝KDE Plasma桌面
#

FVWM那種鬼界面你用的下去算你厲害!很多東西都要用命令行。不過對追求極簡的人來說還真有可能呢。但是我想要一個多功能的桌面環境。至於複雜圖形套件帶來的安全性問題,我就只好犧牲了。所以,我選擇安裝KDE Plasma桌面環境。如果KDE Plasma對你來說太複雜,可以考慮XFCE。目前OpenBSD對Wayland支援不太好,所以得用X11。

參考負責移植KDE套件的維護者的說明:How to install KDE Plasma 6 on OpenBSD

  1. 執行以下指令安裝KDE Plasma 6桌面:
doas pkg_add kde-plasma
  1. 安裝KDE附屬應用程式
doas pkg_add kde
  1. 不過,OpenBSD套件庫沒有收SDDM顯示管理器,LightDM也沒有,只得使用xenodm來啟動桌面環境。xenodm只吃~/.xsession來啟動桌面,功能類似startx指令。

  2. 登入一般使用者,編輯家目錄下的~/.xsession,填入以下內容:

export XDG_RUNTIME_DIR=/tmp/run/$(id -u)

if [ ! -d $XDG_RUNTIME_DIR ]; then
mkdir -m 700 -p $XDG_RUNTIME_DIR
fi

export LC_CTYPE="zh_TW.UTF-8"
export QT_FORCE_STDERR_LOGGING=1
export XDG_CURRENT_DESKTOP=KDE
export DESKTOP_SESSION=plasma

/usr/local/bin/startplasma-x11 > ~/.startplasma-x11.log 2>&1
  1. 重開機。這樣xenodm便會在登入使用者帳號後啟動KDE Plasma桌面。

  2. 由於OpenBSD系統很精簡的緣故,即使裝了KDE Plasma很多功能還是缺失的,你需要手動補齊其他缺少的系統組件和硬體驅動,並手動啟動對應服務。例如PulseAudio。

  3. 雖然KDE Plasma版本蠻新的,但因為OpenBSD維護者少,使用起來bug也多。因此我想精簡的系統還是用精簡的桌面就好。

11. 中文化與Fcitx5輸入法
#

  1. 安裝Noto字型
doas pkg_add noto-cjk
  1. 中文化可以透過在~/.profile設定環境變數指定
export LANG=zh_TW.UTF-8
export MM_CHARSET=zh_TW.UTF-8
  1. 接著安裝Fcitx5中文輸入法,包含注音與拼音
doas pkg_add fcitx fcitx-configtool fcitx-qt fcitx-qt fcitx-chinese-addons fcitx-chewing
  1. ~/.profile設定環境變數指定使用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. 設定登入桌面自動啟動Fcitx5
mkdir -p ~/.config/autostart/

cp /usr/local/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/

參考資料
#

相關文章


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

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

Click here to edit your comments.

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