追尋自由又安全的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安裝隨身碟#
OpenBSD的官網…真的很樸素呢。官方ISO沒有圖形安裝器,需要用指令稿安裝。到官網下載最新穩定版(Release)的ISO。我使用OpenBSD 7.8。
建議驗證檔案完整性
這個ISO可以使用Ventoy開機。不過如果你打算離線安裝,那就用
dd指令的方式製作開機隨身碟,才能在安裝過程中載入系統檔案離線安裝。重開機進入UEFI,使用隨身碟開機
4. 安裝OpenBSD#
官方ISO沒有圖形安裝器,需要用指令稿安裝。推薦使用有線乙太網路安裝,免得網路卡還要抓驅動才能用。
開機後依照畫面指示輸入i,開始安裝

首先OpenBSD會使用
ifconfig自動啟用網路。並在安裝過程中嘗試用fw_update安裝必須的韌體。參考安裝選項如下:
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首次開機,使用root帳號登入系統

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

首先將使用者加入wheel群組。OpenBSD預設管理使用者權限的工具推薦使用doas,而非sudo。因此,以root登入系統,編輯
/etc/doas.conf
vi /etc/doas.conf- 允許wheel群組用戶執行指令
permit :wheel- 將使用者加入wheel群組
usermod -G wheel user- 之後以一般使用者登入就可以用
doas為開頭安裝軟體了。
5. 一些系統調整#
- 設定開機自動連上網路。如果有乙太網路連線。首先用fw_update嘗試下載網路卡需要的韌體:
doas fw_update- 需要用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- 啟用原生音訊服務,取消靜音
doas rcctl enable sndiod
doas mixerctl outputs.master.mute=off- 啟用超執行緒功能
echo "hw.smt=1" | doas tee -a /etc/sysctl.conf- 啟用
apmd,調整系統電源模式,設定在使用電源的時候啟用最大效能模式
doas rcctl enable apmd
doas rcctl set apmd flags -A- 編輯
/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- 啟用PF防火牆
doas rcctl enable pf6. 安裝顯示卡驅動#
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 firefoxOpenBSD的第三方軟體依賴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 xenodm9. FVWM基本操作#
OpenBSD開機會啟動xenodm作為顯示管理器,然後啟動FVWM。
這需要手動寫設定檔來設定視窗外觀,定義在~/.fvwm/config
右下角有工作區,開啟的視窗最小化之後會放到左下角
很多操作都要用命令行解決。
10. 安裝KDE Plasma桌面#
FVWM那種鬼界面你用的下去算你厲害!很多東西都要用命令行。不過對追求極簡的人來說還真有可能呢。但是我想要一個多功能的桌面環境。至於複雜圖形套件帶來的安全性問題,我就只好犧牲了。所以,我選擇安裝KDE Plasma桌面環境。如果KDE Plasma對你來說太複雜,可以考慮XFCE。目前OpenBSD對Wayland支援不太好,所以得用X11。
參考負責移植KDE套件的維護者的說明:How to install KDE Plasma 6 on OpenBSD
- 執行以下指令安裝KDE Plasma 6桌面:
doas pkg_add kde-plasma- 安裝KDE附屬應用程式
doas pkg_add kde不過,OpenBSD套件庫沒有收SDDM顯示管理器,LightDM也沒有,只得使用xenodm來啟動桌面環境。xenodm只吃
~/.xsession來啟動桌面,功能類似startx指令。登入一般使用者,編輯家目錄下的
~/.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重開機。這樣xenodm便會在登入使用者帳號後啟動KDE Plasma桌面。
由於OpenBSD系統很精簡的緣故,即使裝了KDE Plasma很多功能還是缺失的,你需要手動補齊其他缺少的系統組件和硬體驅動,並手動啟動對應服務。例如PulseAudio。
雖然KDE Plasma版本蠻新的,但因為OpenBSD維護者少,使用起來bug也多。因此我想精簡的系統還是用精簡的桌面就好。
11. 中文化與Fcitx5輸入法#
- 安裝Noto字型
doas pkg_add noto-cjk- 中文化可以透過在
~/.profile設定環境變數指定
export LANG=zh_TW.UTF-8
export MM_CHARSET=zh_TW.UTF-8- 接著安裝Fcitx5中文輸入法,包含注音與拼音
doas pkg_add fcitx fcitx-configtool fcitx-qt fcitx-qt fcitx-chinese-addons fcitx-chewing- 在
~/.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- 設定登入桌面自動啟動Fcitx5
mkdir -p ~/.config/autostart/
cp /usr/local/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/

