27 安裝多個核心版本 #
SUSE Linux Enterprise Desktop 支援同時安裝多個核心版本。安裝第二個核心時,將會自動建立一個開機項目和一個 initrd,因此無需進一步的手動組態。將機器重新開機時,新增的核心可用做額外的開機參數。
使用此功能,您可以安全測試核心更新,同時,還能夠始終回復到經過驗證的前一核心。執行這種操作時,請不要使用更新工具 (例如 YaST 線上更新或更新程式小程式),而應該遵照本章中所述的程序。
請注意,如果您安裝自行編譯的核心或協力廠商核心,則會喪失所有的支援授權。僅支援 SUSE Linux Enterprise Desktop 隨附的核心,以及透過 SUSE Linux Enterprise Desktop 官方更新通道提供的核心。
建議在安裝其他核心後檢查您的開機載入程式組態,以設定您選擇的預設開機項目。如需詳細資訊,請參閱第 18.3 節 「使用 YaST 設定開機載入程式」。
27.1 啟用和設定多版本支援 #
在 SUSE Linux Enterprise Server 12 和更新版本中,系統預設支援安裝套件的多個版本 (多版本支援)。若要驗證此設定,請執行下列步驟:
以
root
身分使用所選的編輯器開啟/etc/zypp/zypp.conf
。搜尋字串
multiversion
。如果為所有支援此功能的核心套件啟用多版本,下面一行可能會取消註解:multiversion = provides:multiversion(kernel)
若要僅允許特定核心類型具有多版本支援,請將逗號分隔的套件名稱清單新增至
/etc/zypp/zypp.conf
中的multiversion
選項,例如,multiversion = kernel-default,kernel-default-base,kernel-source
儲存您所做的變更。
確定也為更新後的新核心安裝了由廠商提供的必需核心模組 (核心模組套件)。核心更新程序不會發出有關最終缺少核心模組的警告,因為系統上保留的舊核心仍能滿足套件要求。
27.1.1 自動刪除未使用的核心 #
如果您經常測試已啟用多版本支援的新核心,開機功能表很快就會變得雜亂無序。由於 /boot
分割區的空間通常有限,因此,您可能會遇到 /boot
溢位的問題。您可以使用 YaST 或 Zypper 手動刪除未使用的核心版本 (如下文所述),也可以將 libzypp
設定為自動刪除不再使用的核心。預設不會刪除核心。
以
root
身分使用所選的編輯器開啟/etc/zypp/zypp.conf
。搜尋字串
multiversion.kernels
,並透過取消註解相應的行來啟用此選項。此選項使用包含以下值的逗號分隔清單:5.3.18-53.3
:: 保留具有指定版本號碼的核心latest
:: 保留具有最高版本號碼的核心latest-N
:: 保留版本號碼排在第 N 位的核心running
:: 保留執行中的核心oldest
:: 保留具有最低版本號碼的核心 (SUSE Linux Enterprise Desktop 最初隨附的核心)oldest+N
: 保留版本號碼排在倒數第 N 位的核心以下是一些範例
multiversion.kernels = latest,running
保留最新核心以及目前正在執行的核心。這類似於不啟用多版本功能,不過,舊核心在下一次重新開機後才會移除,而不是在安裝後立即移除。
multiversion.kernels = latest,latest-1,running
保留最新的兩個核心,以及目前正在執行的核心。
multiversion.kernels = latest,running,5.3.18-53.3
保留最新的核心、目前執行中的核心,以及 5.3.18-53.3。
提示:保留執行中的核心除非您使用的是特殊的設定,否則一律將核心標示為
running
。如果不保留執行中的核心,系統在更新核心時會將其刪除。而這表示執行中核心的所有模組也會刪除,並且無法再載入。
如果您決定不保留執行中的核心,則在升級核心後永遠要立即重新開機,以免模組發生問題。
27.1.2 使用案例:僅在重新開機後刪除舊核心 #
您想要確認只在系統成功用新核心重新開機之後才刪除舊核心。
變更 /etc/zypp/zypp.conf
中的下面一行:
multiversion.kernels = latest,running
上面的參數告知系統要保留最新核心以及執行中的核心 (前提是兩者不同)。
27.1.3 使用案例:保留較舊核心做為後援 #
您想要保留一或多個核心版本,以便有一或多個「備用的」核心。
如果需要使用核心進行測試,則這樣做可能十分有用。如果出現了故障 (例如,您的機器不能開機),您仍可以使用一或多個已知正常的核心版本。
變更 /etc/zypp/zypp.conf
中的下面一行:
multiversion.kernels = latest,latest-1,latest-2,running
安裝新核心之後,當您將系統重新開機時,系統將保留三個核心:目前的核心 (設定為 latest,running
),以及它的前兩任 (設定為 latest-1
和 latest-2
)。
27.1.4 使用案例:保留特定的核心版本 #
您要執行定期系統更新和安裝新的核心版本。但是,您還要編譯自己的核心版本,並要確認系統將保留這些版本。
變更 /etc/zypp/zypp.conf
中的下面一行:
multiversion.kernels = latest,5.3.18-53.3,running
安裝新核心後,將系統重新開機時,系統將保留兩個核心:新的執行中核心 (設定為 latest,running
),自行編譯的核心 (設定為 5.3.18-53.3
)。
27.2 使用 YaST 安裝/移除多個核心版本 #
您可以使用 YaST 安裝或移除多個核心:
啟動 YaST,然後透過
› 開啟軟體管理員。選擇
› › ,以列出能夠提供多個版本的所有套件。圖 27.1︰ YaST 軟體管理員:多版本檢視 #在底部窗格的左側選取一個套件並開啟其
索引標籤。若要安裝某個套件,請按一下它旁邊的核取方塊。綠色核取記號表示已選取相應的套件進行安裝。
若要移除某個已安裝的套件 (以白色核取記號標示),請按一下它旁邊的核取方塊,直到出現紅色的
X
,這表示已選擇移除該套件。按一下
開始安裝。
27.3 使用 Zypper 安裝/移除多個核心版本 #
您可以使用 zypper
安裝或移除多個核心:
使用指令
zypper se -s 'kernel*'
顯示所有可用核心套件的清單:S | Name | Type | Version | Arch | Repository ---+----------------------+---------+-------------------+--------+------------------------------------------------------ i+ | kernel-default | package | 6.4.0-150600.9.2 | x86_64 | SLE-Module-Basesystem15-SP6-Pool | kernel-default-base | package | 6.4.0-150600.9.2.150600.10.40 | x86_64 | SLE-Module-Basesystem15-SP6-Pool | kernel-default-devel | package | 6.4.0-150600.9.2 | x86_64 | SLE-Module-Basesystem15-SP6-Pool | kernel-devel | package | 6.4.0-150600.9.2 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-all | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-amdgpu | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-ath10k | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-ath11k | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-ath12k | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-atheros | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-bluetooth | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-bnx2 | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-brcm | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-chelsio | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-dpaa2 | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-i915 | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-intel | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-iwlwifi | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-liquidio | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-marvell | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-media | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-mediatek | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-mellanox | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-mwifiex | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-network | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-nfp | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-nvidia | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool | kernel-firmware-nvidia-gsp-G06 | package | 525.116.04-150500.1.1 | x86_64 | SLE-Module-Basesystem15-SP6-Pool | kernel-firmware-nvidia-gspx-G06 | package | 550.54.14-150600.1.1 | x86_64 | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-platform | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-prestera | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-qcom | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-qlogic | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-radeon | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-realtek | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-serial | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-sound | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-ti | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-ueagle | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool i | kernel-firmware-usb-network | package | 20240201-150600.1.1 | noarch | SLE-Module-Basesystem15-SP6-Pool | kernel-macros | package | 6.4.0-150600.9.2 | noarch | SLE-Module-Basesystem15-SP6-Pool
安裝時指定確切的版本:
>
sudo
zypper in kernel-default-6.4.0-150600.9.2解除安裝核心時,使用指令
zypper se -si 'kernel*'
可以列出安裝的所有核心,使用zypper rm
PACKAGENAME-VERSION 可以移除指定套件。