简介
以下教程分步介绍了通过删除任何 CentOS 特定的软件包或用等效的 Oracle Linux 取代这些软件包来自动将 CentOS 8 实例切换到 Oracle Linux 8。由于 GitHub 上的 Oracle centos2ol 系统信息库中的 README.md 状态,本教程中使用的脚本是进行中的脚本,不能用于处理所有可能的配置。
如果脚本无法成功转换系统,请确保在启动此过程之前拥有系统的完整备份。
请务必查看 centos2ol 项目 README.md 文件以获取最新详细信息。
目标
在此实验室中,您将:
- 检查非标准内核
- 确保 dnf 配置正常工作
- 禁用或删除过时和非 CentOS 系统信息库
- 确保 /var/cache 中有 5GB 的空闲空间
- 禁用所有自动更新,包括 dnf-automatic
先决条件
- 安装有 CentOS 8 的系统。
检查 CentOS 版本
注意:使用免费实验室环境时,请参见 Oracle Linux Lab Basics 了解连接和其他使用情况说明。
- 打开终端并连接到实例。
- 获取 CentOS 的版本。
sudo cat /etc/redhat-release
sudo cat /etc/os-release
这两个命令都显示实例正在运行 CentOS 8。
检查非标准内核
- 使用 yum 获取已安装内核的列表。
sudo yum list installed kernel
此列表显示了使用 yum 安装的所有内核。强烈建议删除所有非标准内核;例如,任何已安装但不是由基本内核提供的内核或更新存储库。包括删除任何 centosplus 内核。
- 使用 grubby 获取其他已安装内核的列表。
sudo grubby --info=ALL | grep ^kernel
该列表显示配置为使用的所有内核。我们强烈建议取消所有非标准内核。
使用 Yum 删除非标准内核
由于 GRUB2 BootHole 漏洞,Oracle Linux Secure Boot shim 只能引导 Oracle 签名的内核,并且只能替换默认的 CentOS 内核。虽然在当前禁用了 SecureBoot 时这可能不会影响系统,但以后启用它可能会导致系统无法引导。因此,强烈建议删除所有非标准内核;例如,base 或 updates 副本未提供的任何已安装的内核,包括 CentOSPlus 内核。
注意:如果您的系统没有基于上述说明的非标准内核,或者您正在使用上机操作实验室,请跳过此部分。(不要尝试在 Oracle 提供的实验室环境中使用 yum 删除内核。此系统仅安装了一个内核。删除唯一工作内核的内核条目或不正确的内核可能会导致系统无法引导,需要引导至单用户模式才能修复损坏的服务器。)
- 删除任何非标准内核。
sudo yum remove <KERNEL>
其中,<KERNEL> 是 rpm -q kernel 提供的完整软件包名称。
使用 Grubby 删除非标准内核
grubby 是一个命令行工具,用于更新和显示有关 grub 引导装载程序配置文件的信息。此工具允许管理员禁用 yum 外部安装的内核。
注意:如果您的系统没有基于上一节中的说明的非标准内核,或者您正在使用上机操作实验室,请跳过此部分。(不要尝试在 Oracle 提供的实验室环境中使用 yum 删除内核。此系统仅安装了一个内核。删除唯一工作内核的内核条目或不正确的内核可能会导致系统无法引导,需要引导至单用户模式才能修复损坏的服务器。)
- 获取分配给每个已安装内核的引导条目的索引。
sudo grubby --info=ALL | grep -E "^kernel|^index"
- 删除任何非标准内核的引导条目。
grubby --remove-kernel=<MENU_INDEX>
其中 <MENU_INDEX> 是从上一个命令的输出返回的索引值。
检查 DNF 配置
- 获取启用的系统信息库的列表。
sudo dnf repolist
- 更新所有已安装的软件包。
sudo dnf -y upgrade
删除或禁用非 CentOS 资料档案库
禁用所有非 CentOS 系统信息库。此步骤有助于避免在切换期间与第三方系统信息库发生软件包冲突。可以在切换后重新启用系统信息库。
注意:对于上机操作实验,有多个 CentOS 和 Oracle 系统信息库以及一个名为 zfs 的非 CentOS 系统信息库。本节中需要禁用 zfs 系统信息库。
- 禁用非 CentOS 系统信息库。
sudo dnf config-manager --set-disabled <REPOSITORY_NAME>
将 <REPOSITORY_NAME> 替换为系统上启用的任何非 CentOS 系统信息库的系统信息库名称。
检查 /var/cache 中的空闲空间
- 获取磁盘空间使用情况报告。
df -h
注意:对于上机操作实验,/var/cache 位于 / 挂载点下,该挂载点有 29G 可用。此系统具有 centos2ol 项目建议的免费 5G。
检查 Cron 中的自动更新
管理员可以通过多种方式启用自动更新。本节检查直接执行 dnf 或使用脚本的 cron 作业。禁用这些作业(如果找到)以避免在切换过程中运行。
注意:对于上机操作实验,尽管此环境中没有配置 cron 作业,但建议复查不同文件及其内容。
- 列出 root 的 cron 作业。
sudo crontab -l
- 列出用户的 cron 作业。
sudo crontab -u oracle -l
- 列出每日、每小时、每周、每月的 cron 作业。
sudo ls -al /etc/cron*
然后使用所选的 less 或编辑器检查各个文件。
- 列出 /etc/crontab 的内容。
sudo less /etc/crontab
禁用 DNF 自动更新
自动应用更新的另一种方法是使用 dnf-automatic。
- 检查 dnf-automatic 软件包。
sudo dnf list installed dnf-automatic
如果输出显示系统上未安装 dnf-automatic 软件包,请跳至下一节。
- 检查 dnf-automatic systemd 计时器的状态。
sudo systemctl is-enabled dnf-automatic.timer
sudo systemctl is-active dnf-automatic.timer
- 如果 dnf-automatic systemd 计时器处于活动状态且正在运行,则将其禁用。
sudo systemctl stop dnf-automatic.timer
sudo systemctl disable dnf-automatic.timer
下载并运行 centos2ol 脚本
- 从 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
- 运行 centos2ol.sh 脚本。
如果使用 git,请将当前工作目录更改为创建的 centos2ol 目录。
- 请参见脚本的使用选项,通过选项 -h。
sudo bash centos2ol.sh -h
现在运行脚本并等待其完成。
sudo bash centos2ol.sh
作为该过程的一部分,默认内核将切换到 Oracle Unbreakable Enterprise Kernel (UEK) 的最新发行版,从而对进程调度器、内存管理、文件系统和网络栈实现广泛的性能和可扩展性改进。我们还将现有的 CentOS 内核替换为等效的 Red Hat 兼容内核 (compatible Kernel, RHCK),如果特定的硬件或应用程序实施了严格的内核版本限制,则可能需要这些内核。
- 重新启动系统。
sudo reboot
确认系统切换到 Oracle Linux
- 使用终端再次连接到您的实例。
- 检查分发版本和内核详细信息。
cat /etc/os-release
cat /etc/redhat-release
uname -r
分配给 centos2ol GitHub 项目
- 获取支持。为与安全性无关的 Bug 报告、问题或增强请求打开 GitHub 问题。