Convert2RHEL 與 CentOS Stream 8

過去這一陣子終於將手邊最後的 CentOS 7 及 CentOS Stream 8 系統皆全數替換掉,其中多數是採取服務遷移或者原機重灌,以 RHEL 9 取而代之,至於測試或者非正式用途的機器則是使用 CentOS Stream 9。不過也有兩部 CentOS Stream 8 主機,是使用 Red Hat 所提供的 Convert2RHEL 工具程式,以沒有做任何重灌或遷移的方式,原地轉換至 RHEL 8。由於這似乎不是很常見的需求,網路上並沒有許多可見的使用案例,但還是可以找得到一些文件說明可加以參考。

 

Convert2RHEL 是針對 RHEL 的複製品(CentOS、Oracle LinuxAlmaLinuxRocky Linux,等等這些)所設計,實際上並未將 CentOS Stream 視為正式支援的發行版本,主要的原因是 CentOS Stream 是 RHEL 的開發預覽版本,執行轉換程序有可能會形同於軟體降版,也就有機會產生更多意料之外的問題。不過當 CentOS Stream 8 已於今年 5 月 31 日停止發佈更新後,轉換至 RHEL 8 時出現軟體降版的風險基本上就不再存在了。而整個過程也確實並無大礙,可以順利完成發行版的轉換。

 

在安裝 Convert2RHEL 以前,系統上的 yum/dnf 還是要先保持可運作的狀態。所以在 CentOS Stream 8 的鏡像站點隨著生命週期的終止已停止運作後,得編輯以下兩支設定檔:

  • /etc/yum.repos.d/CentOS-Stream-BaseOS.repo
  • /etc/yum.repos.d/CentOS-Stream-AppStream.repo

 

將 baseurl 取消註解,並將其中的 http://mirror.centos.org 替換為 https://vault.centos.org,然後儲存變更。接著系統需要先取得 RHEL 授權(可以使用免費的開發者授權),才能夠在後續執行 Convert2RHEL 時,從 RHEL 套件庫做下載動作。於是安裝 subscription-manager 套件:

  • sudo dnf install subscription-manager

 

執行註冊程序,過程中得輸入有效的 Red Hat 帳號及密碼:

  • sudo subscription-manager register

 

完成註冊後,檢視可啟用授權之項目清單,並加以啟用:

  • sudo subscription-manager list --available
  • sudo subscription-manager attach --pool=<項目 ID>

 

加入 Convert2RHEL 套件來源並執行安裝:

  • sudo curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release https://www.redhat.com/security/data/fd431d51.txt
  • sudo curl -o /etc/yum.repos.d/convert2rhel.repo https://cdn-public.redhat.com/content/public/repofiles/convert2rhel-for-rhel-8-x86_64.repo
  • sudo dnf install convert2rhel

 

完成安裝後便可以執行 Convert2RHEL 工具程式:

  • sudo convert2rhel

 

Convert2RHEL 是一連串的自動化作業,包含環境檢查、下載及安裝套件等等。除了輸出各樣訊息外,也會在準備執行無法自動回復的異動前,詢問使用者是否確定執行。實際上 DR 在執行時還加上了許多環境變數,以規避多項檢查條件(如第三方內核模組、套件版本等等):

  • sudo CONVERT2RHEL_ALLOW_UNAVAILABLE_KMODS=1 CONVERT2RHEL_SKIP_KERNEL_CURRENCY_CHECK=1 CONVERT2RHEL_OUTDATED_PACKAGE_CHECK_SKIP=1 CONVERT2RHEL_TAINTED_KERNEL_MODULE_CHECK_SKIP=1 convert2rhel

 

在搭配前述環境變數後,整個轉換過程順利完成,並沒有什麼阻礙。不過有發覺到幾個需要人工修正的事項,例如不會自動選擇最新安裝的內核版本做啟動,需要手動變更:

  • sudo grubby --set-default /boot/vmlinuz-4.18.0-553.8.1.el8_10.x86_64

 

以及 RHEL 的 CodeReady Linux Builder 套件庫也需要手動啟用:

  • sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms

 

重啟系統後,確認可正常運作,無痛地從 CentOS Stream 8 轉換成 RHEL 8。以及透過 akmods、DKMS 等機制自動編譯出的內核模組,也都依照原樣繼續運作,如預期般未出現相容性的狀況。

 

分類: