快轉到主要內容

將Gentoo從OpenRC轉換至Systemd,不重新安裝系統

Gentoo
🗓️ 民國111年 壬寅年
✍ 切換正體/簡體字
目錄

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。

  1. 將目前OpenRC開機自動啟動的服務存成檔案,供日後參考
sudo rc-update -v show >> ~/services.txt
  1. 因為我的核心使用的是官方預先編譯的sys-kernel/gentoo-kernel-bin,因此不用作任何調整。

  2. /etc/portage/make.conf的Global USE加入systemd,這樣等一下systemd會自動被拉進來。

  3. Gentoo目前的profile為KDE(openRC),將profile切換成KDE(systemd):

sudo eselect profile list
sudo eselect profile set 10
  1. 開始emerge
sudo emerge -avuND world
  1. 設定Machine ID,第一個指令會詢問keymap和hostname,按需填寫。接著設定基本開機服務。
sudo systemd-firstboot --prompt --setup-machine-id
sudo systemctl preset-all
  1. 設定語言
sudo echo "zh_TW.UTF-8" >> /etc/locale.conf
sudo localectl set-locale LANG=zh_TW.UTF-8
  1. 啟用自動校時,設定時區
sudo timedatectl set-ntp true
sudo timedatectl set-timezone Asia/Taipei
  1. 編輯/etc/pulse/client.conf,設定自動啟動PulseAudio
autospawn = yes
  1. 參照剛剛儲存的OpenRC服務列表,重新設定開機後要啟動的服務,例如網路和桌面環境(顯示管理器):
sudo systemctl enable NetworkManager
sudo systemctl enable iwd
sudo systemctl enable sddm
sudo systemctl enable sshd
  1. 編輯/etc/default/grub,將GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"取消註解。

  2. 更新GRUB設定

sudo grub-mkconfig -o /boot/grub/grub.cfg
  1. 重開機確認可以進入桌面後,將openRC正式移除。
sudo emerge --depclean

3. 總結
#

這是轉換前。

這是轉換後,套件多了一些,但系統啟動時間並無太多變化。

現在可以利用Systemd提供的現代化功能了。KDE System Monitor也可以查看個別App的使用率了。

參考資料
#

相關文章

Gentoo設定Overlay,從第三方軟體庫安裝最新版Fcitx5中文輸入法
Gentoo
筆電Gentoo Linux 安裝紀錄 (Systemd + Gnome)
Linux系統 Linux系統安裝教學 Gentoo
解決Gentoo Nvidia顯示卡專有驅動問題,防止nouveau載入
Gentoo Nvidia

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。