以下教程分步介绍了通过删除任何 CentOS 特定的软件包或用等效的 Oracle Linux 取代这些软件包来自动将 CentOS 8 实例切换到 Oracle Linux 8。由于 GitHub 上的 Oracle centos2ol 系统信息库中的 README.md 状态,本教程中使用的脚本是进行中的脚本,不能用于处理所有可能的配置。
如果脚本无法成功转换系统,请确保在启动此过程之前拥有系统的完整备份。
请务必查看 centos2ol 项目 README.md 文件以获取最新详细信息。
在此实验室中,您将:
dnf 配置正常工作/var/cache 中有 5GB 的空闲空间dnf-automatic注意:使用免费实验室环境时,请参见 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

该列表显示配置为使用的所有内核。我们强烈建议取消所有非标准内核。
由于 GRUB2 BootHole 漏洞,Oracle Linux Secure Boot shim 只能引导 Oracle 签名的内核,并且只能替换默认的 CentOS 内核。虽然在当前禁用了 SecureBoot 时这可能不会影响系统,但以后启用它可能会导致系统无法引导。因此,强烈建议删除所有非标准内核;例如,base 或 updates 副本未提供的任何已安装的内核,包括 CentOSPlus 内核。
注意:如果您的系统没有基于上述说明的非标准内核,或者您正在使用上机操作实验室,请跳过此部分。(不要尝试在 Oracle 提供的实验室环境中使用
yum删除内核。此系统仅安装了一个内核。删除唯一工作内核的内核条目或不正确的内核可能会导致系统无法引导,需要引导至单用户模式才能修复损坏的服务器。)
删除任何非标准内核。
复制sudo yum remove <KERNEL>
其中, 是 rpm -q kernel 提供的完整软件包名称。
grubby 是一个命令行工具,用于更新和显示有关 grub 引导装载程序配置文件的信息。此工具允许管理员禁用 yum 外部安装的内核。
注意:如果您的系统没有基于上一节中的说明的非标准内核,或者您正在使用上机操作实验室,请跳过此部分。(不要尝试在 Oracle 提供的实验室环境中使用
yum删除内核。此系统仅安装了一个内核。删除唯一工作内核的内核条目或不正确的内核可能会导致系统无法引导,需要引导至单用户模式才能修复损坏的服务器。)
获取分配给每个已安装内核的引导条目的索引。
复制sudo grubby --info=ALL | grep -E "^kernel|^index"

删除任何非标准内核的引导条目。
复制grubby --remove-kernel=<MENU_INDEX>
其中 是从上一个命令的输出返回的索引值。
获取启用的系统信息库的列表。
复制sudo dnf repolist

更新所有已安装的软件包。
复制sudo dnf -y upgrade
禁用所有非 CentOS 系统信息库。此步骤有助于避免在切换期间与第三方系统信息库发生软件包冲突。可以在切换后重新启用系统信息库。
注意:对于上机操作实验,有多个 CentOS 和 Oracle 系统信息库以及一个名为
zfs的非 CentOS 系统信息库。本节中需要禁用zfs系统信息库。
禁用非 CentOS 系统信息库。
复制sudo dnf config-manager --set-disabled <REPOSITORY_NAME>
将 替换为系统上启用的任何非 CentOS 系统信息库的系统信息库名称。
/var/cache 中的空闲空间获取磁盘空间使用情况报告。
复制df -h
注意:对于上机操作实验,
/var/cache位于/挂载点下,该挂载点有 29G 可用。此系统具有 centos2ol 项目建议的免费 5G。
管理员可以通过多种方式启用自动更新。本节检查直接执行 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-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
从 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
使用终端再次连接到您的实例。
检查分发版本和内核详细信息。
复制- cat /etc/os-release
- cat /etc/redhat-release
- uname -r
获取支持。
为与安全性无关的 Bug 报告、问题或增强请求打开 GitHub 问题。