Convert openRC Gentoo to Systemd Gentoo.
動機是KDE的Sytem Monitor不支援查看個別App的使用率,經查發現相關功能只支援Systemd所致。
並且我想安裝Snap套件來補Flatpak的不足,這個也依賴Systemd。可見Systemd已成為主流,從系統服務到應用程式,有越來越多APP會優先依賴systemd,故將Gentoo的init系统從OpenRC轉成Systemd以適應未來變化。
因為嫌麻煩,下面的過程不重新安裝系統,直接將現有的Gentoo從OpenRC轉換為Systemd。
1. 行前準備#
首先更新系統至最新狀態
sudo emerge-webrsync
sudo emerge -avuND world
sudo etc-update
sudo emerge --depclean
再來準備一個Gentoo的LiveUSB以防萬一。
不過其實無法開機時,我是用Arch Linux的開機USB下去救的,arch-chroot真好用。
2. 安裝與設定Systemd#
Gentoo會在安裝Systemd之後自動刪除OpenRC。
- 將目前OpenRC開機自動啟動的服務存成檔案,供日後參考
sudo rc-update -v show >> ~/services.txt
因為我的核心使用的是官方預先編譯的
sys-kernel/gentoo-kernel-bin
,因此不用作任何調整。在
/etc/portage/make.conf
的Global USE加入systemd
,這樣等一下systemd會自動被拉進來。Gentoo目前的profile為KDE(openRC),將profile切換成KDE(systemd):
sudo eselect profile list
sudo eselect profile set 10
- 開始emerge
sudo emerge -avuND world
- 設定Machine ID,第一個指令會詢問keymap和hostname,按需填寫。接著設定基本開機服務。
sudo systemd-firstboot --prompt --setup-machine-id
sudo systemctl preset-all
- 設定語言
sudo echo "zh_TW.UTF-8" >> /etc/locale.conf
sudo localectl set-locale LANG=zh_TW.UTF-8
- 啟用自動校時,設定時區
sudo timedatectl set-ntp true
sudo timedatectl set-timezone Asia/Taipei
- 編輯
/etc/pulse/client.conf
,設定自動啟動PulseAudio
autospawn = yes
- 參照剛剛儲存的OpenRC服務列表,重新設定開機後要啟動的服務,例如網路和桌面環境(顯示管理器):
sudo systemctl enable NetworkManager
sudo systemctl enable iwd
sudo systemctl enable sddm
sudo systemctl enable sshd
編輯
/etc/default/grub
,將GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"
取消註解。更新GRUB設定
sudo grub-mkconfig -o /boot/grub/grub.cfg
- 重開機確認可以進入桌面後,將openRC正式移除。
sudo emerge --depclean
3. 總結#
這是轉換前。
這是轉換後,套件多了一些,但系統啟動時間並無太多變化。
現在可以利用Systemd提供的現代化功能了。KDE System Monitor也可以查看個別App的使用率了。