從 CentOS 7 切換至 Oracle Linux 7

簡介

備註:CentOS 7 已於 2024 年 6 月 30 日達成生命週期結束 (EOL)。在這種情況下,Red Hat (CentOS 背後的公司) 不再為作業系統提供安全更新或錯誤修正。

下列教學課程提供將 CentOS 7 執行處理自動切換為 Oracle Linux 7 的逐步程序,方法是移除或取代任何 CentOS 特定套裝程式的 Oracle Linux 等效項目。GitHub 上 Oracle centos2ol 儲存區域中的 README.md 聲明本教學課程中使用的命令檔是進行中的工作,並非針對處理所有可能的組態所設計。

如果程序檔無法成功轉換系統,請在啟動此程序前先確定您有系統的完整備份

複查專案 README.md 檔案中 centos2ol 專案的最新詳細資訊。

目標

在本教學課程中,您將:

先決條件

檢查 CentOS 版本

  1. 開啟終端機並連線至您的執行處理。

  2. 取得 CentOS 版本。

    sudo cat /etc/redhat-release
    
    sudo cat /etc/os-release
    

    這兩個命令都會顯示執行處理正在執行 CentOS 7。

檢查非標準核心

  1. 使用 yum 取得已安裝的核心清單。

    sudo yum list installed kernel
    

    此清單顯示使用 yum 安裝的所有核心。強烈建議您移除所有非標準核心;例如,任何已安裝且未由基礎或更新儲存區域提供的核心。包括移除任何 centosplus 核心。

  2. 使用 grubby 取得其他已安裝的核心清單。

    sudo grubby --info=ALL | grep ^kernel
    

    範例輸出:

    [oracle@centos-7 ~]$ sudo grubby --info=ALL | grep ^kernel
    kernel=/boot/vmlinuz-3.10.0-1160.76.1.el7.x86_64
    kernel=/boot/vmlinuz-3.10.0-1160.el7.x86_64
    kernel=/boot/vmlinuz-0-rescue-281810806a454564906c048d496729db
    

    此清單顯示所有設定為使用的核心。強烈建議您移除所有非標準核心。

使用 Yum 移除非標準核心

由於 GRUB2 BootHole 漏洞,因此 Oracle Linux Secure Boot shim 只能啟動 Oracle 簽署的核心,而且我們只能取代預設的 CentOS 核心。雖然這可能不會影響停用 SecureBoot 的系統,但稍後啟用可能會使其無法啟動。因此,強烈建議您移除所有非標準核心;例如,任何不是由 baseupdates 儲存區域提供的已安裝核心,包括 CentOSPlus 核心。

注意:如果系統沒有以上述描述為基礎的非標準核心,請略過此區段。(如果您的系統只安裝了一個核心,請勿嘗試使用 yum 移除核心。移除僅有工作核心的核心項目或不正確的核心可能會導致系統無法啟動,因此需要以單一使用者模式啟動才能修正中斷的伺服器。)

  1. 移除任何非標準核心。

    sudo yum remove <KERNEL>
    

    其中 <KERNEL>rpm -q kernel 所提供的完整套裝軟體名稱。

移除 Grubby 非標準核心

grubby 是一種指令行工具,可用來更新及顯示 grub 開機管理程式的配置檔案相關資訊。此工具可讓管理員停用 yum 外部安裝的核心。

注意:如果您的系統沒有以上一節描述為基礎的非標準核心,請略過此區段。(如果您的系統只安裝了一個核心,請勿嘗試使用 yum 移除核心。移除僅有工作核心的核心項目或不正確的核心可能會導致系統無法啟動,因此需要以單一使用者模式啟動才能修正中斷的伺服器。)

  1. 取得指派給每個已安裝核心之啟動項目的索引。

    sudo grubby --info=ALL | grep -E "^kernel|^index"
    

    範例輸出:

    [oracle@centos-7 ~]$ sudo grubby --info=ALL | grep -E "^kernel|^index"
    index=0
    kernel=/boot/vmlinuz-3.10.0-1160.76.1.el7.x86_64
    index=1
    kernel=/boot/vmlinuz-3.10.0-1160.el7.x86_64
    index=2
    kernel=/boot/vmlinuz-0-rescue-281810806a454564906c048d496729db
    index=3
    
  2. 移除任何非標準核心的啟動項目。

    grubby --remove-kernel=<MENU_INDEX>
    

    其中 <MENU_INDEX> 是前一個命令輸出所傳回的索引值。

檢查 YUM 組態

  1. 取得已啟用儲存區域的清單。

    sudo yum repolist
    

    範例輸出:

    [oracle@centos-7 ~]$ sudo yum repolist
    Loaded plugins: fastestmirror, langpacks
    Loading mirror speeds from cached hostfile
     * base: ftp.plusline.net
     * epel: mirror.imt-systems.com
     * extras: mirror.imt-systems.com
     * updates: ftp.plusline.net
    repo id                   repo name                                       status
    base/7/x86_64             CentOS-7 - Base                                 10072
    docker-ce-stable/7/x86_64 Docker CE Stable - x86_64                         183
    epel/x86_64               Extra Packages for Enterprise Linux 7 - x86_64  13738
    extras/7/x86_64           CentOS-7 - Extras                                 515
    updates/7/x86_64          CentOS-7 - Updates                               4383
    zfs/7/x86_64              ZFS on Linux for EL7 - dkms                        55
    repolist: 28946
    
  2. 更新所有已安裝的套裝軟體。

    sudo yum -y upgrade
    

移除或停用非 CentOS 儲存區域

停用所有非 CentOS 儲存區域。此步驟有助於避免在切換期間與協力廠商儲存庫發生套裝軟體衝突。您可以在切換之後重新啟用儲存區域。

  1. 停用非 CentOS 儲存區域。

    sudo yum-config-manager --disable <REPOSITORY_NAME>
    

    <REPOSITORY_NAME> 取代為系統上任何啟用之非 CentOS 儲存庫的儲存庫名稱。

檢查 /var/cache 中的可用空間

  1. 取得磁碟空間使用狀況報告。

    df -h
    

    注意:在此範例中,/var/cache 位於 / 掛載點下,可使用 35G。此系統有 centos2ol 專案建議的免費 5G。

檢查 Cron 中是否有自動更新

管理員可以透過多種方式啟用自動更新。本節檢查 cron 工作是否直接執行 yum 或使用命令檔。如果找到這些工作,請停用這些工作,以避免它們在切換過程中執行。

  1. 列出 root 的 cron 工作。

    sudo crontab -l
    
  2. 列出使用者的 cron 工作。

    sudo crontab -u oracle -l
    
  3. 列出每日、每小時、每週和每月 cron 工作。

    sudo ls -al /etc/cron*
    

    然後,使用 less 或選擇的編輯器檢查個別檔案。

    注意:名稱中包含 yum-cron 的檔案由 yum-cron 服務管理。我們將在教學課程的下一節停用這些功能。

  4. 列出 /etc/crontab 的內容。

    sudo less /etc/crontab
    

停用 YUM Cron 更新

另一種自動套用更新的方式是使用 yum-cron

  1. 檢查 yum-cron 套裝軟體。

    sudo yum list installed yum-cron
    

    範例輸出:

    [oracle@centos-7 ~]$ yum list installed yum-cron
    Loaded plugins: fastestmirror, langpacks
    Determining fastest mirrors
     * base: ftp.plusline.net
     * epel: ftp.plusline.net
     * extras: ftp.plusline.net
     * updates: ftp.rz.uni-frankfurt.de
    Installed Packages
    yum-cron.noarch                    3.4.3-168.el7.centos                    @base
    

    如果輸出顯示系統上未安裝 yum-cron 套裝軟體,請跳至下一節。

  2. 檢查 yum-cron systemd 服務的狀態。

    sudo systemctl is-enabled yum-cron
    sudo systemctl is-active yum-cron
    
  3. 如果 yum-cron systemd 服務作用中且在執行中,請將其停用。

    sudo systemctl stop yum-cron
    sudo systemctl disable yum-cron
    

下載並執行轉換命令檔

  1. 從 GitHub 下載 centos2ol.sh 命令檔。

    取得命令檔最簡單的方式是使用 curl:

    curl -O https://raw.githubusercontent.com/oracle/centos2ol/main/centos2ol.sh
    

    如果您已安裝 Git,請使用 clone 選項從 GitHub 提取儲存庫。

    git clone https://github.com/oracle/centos2ol.git
    
  2. 執行 centos2ol.sh 命令檔。

    如果使用 git clone,請將目前的工作目錄變更為 centos2ol 目錄。

    請傳遞選項 -h 來查看命令檔的用法選項。

    sudo bash centos2ol.sh -h
    

    現在,執行命令檔並等待命令檔完成。

    sudo bash centos2ol.sh
    

    在程序中,預設核心會切換至最新版的 Oracle Unbreakable Enterprise Kernel (UEK),以增強程序排程器、記憶體管理、檔案系統以及網路堆疊的效能和擴展性。我們也會將現有的 CentOS 核心取代為等效的 Red Hat Compatible Kernel (RHCK),如果特定硬體或應用程式已實行嚴格的核心版本限制,則該核心或應用程式可能需要。

  3. 重新啟動系統。

    sudo reboot
    

確認系統交換器至 Oracle Linux

  1. 使用終端機,再次連線至您的執行處理。

  2. 檢查發行版本和核心詳細資訊。

    cat /etc/os-release
    cat /etc/redhat-release
    uname -r
    

貢獻至 centos2ol GitHub 專案

  1. 取得支援。

    若無安全性相關的臭蟲回報、問題或要求加強功能,請開啟 GitHub 問題

瞭解詳細資訊

Oracle Linux 文件
Oracle Linux 訓練
Oracle Linux 訓練站
使用 Leapp 升級 Oracle Linux

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center