从 CentOS/Rocky Linux 切换到 Oracle Linux
此脚本旨在通过删除任何特定于发行版的软件包或将其替换为 Oracle Linux 等效软件包,自动将 CentOS 或 Rocky Linux 实例切换到 Oracle Linux。
支持的版本和架构
该脚本目前支持在 x86_64
和 aarch64
架构上切换 CentOS Linux 6、CentOS Linux 7、CentOS Linux 8、Rocky Linux 8 和 Rocky Linux 9。它不支持 CentOS Stream。
由于测试有限,切换 Rocky Linux 的支持应被视为实验性的。同样,在
aarch64
主机上切换上述任何操作系统也应被视为实验性的。该脚本不支持从为 Raspberry Pi (aarch64) 构建的 Rocky Linux 镜像进行切换。
在尝试切换之前,请确保您有一个完整的、可用的备份,并在切换过程中[报告遇到的任何问题][6]。
开始之前
重要提示:此脚本仍在开发中,并非设计用于处理所有可能的配置。在开始此过程之前,请确保您有一个完整的、可用的系统备份,以防脚本无法成功转换系统或无法回滚所做的更改。
注意:CentOS 8 已达到生命周期终止,其存储库已移至 vault.centos.org
。在开始之前,请确保您的 CentOS 8 系统是最新的,并且能够访问这些存储库。
删除所有非标准内核
由于 [GRUB2 BootHole][1] 漏洞,我们的 SecureBoot shim 只能引导由 Oracle 签名的内核,我们只能替换默认的 CentOS 内核。虽然如果当前禁用了 SecureBoot,这可能不会产生影响,但在以后启用它可能会导致系统无法引导。因此,我们强烈建议删除所有非标准内核,即任何未由 base
或 updates
存储库提供的已安装内核。这包括 [centosplus
][2] 内核。
- 确保您的 CentOS
yum
或dnf
配置正常工作,即没有过期的存储库。 - 禁用所有非 CentOS 存储库。切换后可以重新启用这些存储库。
- 确保
/var/cache
中至少有 5GB 的可用空间。 - 应禁用所有自动更新,例如通过
yum-cron
。
使用方法
- 以具有
sudo
权限的用户身份登录到您的 CentOS Linux 6、7 或 8 或 Rocky Linux 8 或 9 实例。 - 克隆此存储库或下载 [
centos2ol.sh
][3] 脚本。 - 运行
sudo bash centos2ol.sh
将您的 CentOS 实例切换到 Oracle Linux。
使用选项
-
-r
使用 Oracle Linux RPM 重新安装所有 CentOS RPM如果系统切换到 Oracle Linux 后,已安装的软件包没有更新的 Oracle Linux 版本,则 CentOS 版本将保留。 此选项会继续使用 Oracle Linux 中的相同版本重新安装任何 CentOS RPM。这对于支持不是必需的,也不会影响系统的功能, 但提供此选项是为了让用户可以从信任存储中删除 CentOS GPG 密钥。 重新安装过程后将显示所有非 Oracle RPM 的列表。
-
-k
不安装 UEK 内核并禁用 UEK 存储库此选项将不安装 UEK 内核,并将禁用所有 UEK yum 存储库。
-
-V
在切换前后验证 RPM 信息此选项在
/var/tmp/
中创建四个输出文件:${hostname}-rpms-list-[before|after].log
:切换到 Oracle Linux 之前和之后已安装软件包的排序列表。${hostname}-rpms-verified-[before|after].log
:切换到 Oracle Linux 之前和之后所有已安装软件包的 RPM 验证结果。
测试
有关可用测试及如何运行它们的说明,请参阅 TESTING.md
。
已知问题
-
有一个[关于上游 OpenJDK][9] 软件包在
dnf reinstall
事务期间重置alternatives
配置的报告问题。我们建议在运行
centos2ol.sh
之前记录alternatives --list
的输出,并在切换后查看相同的输出。如果您遇到 OpenJDK 以外的软件包问题,请[提交问题][6]。
限制
- 该脚本目前需要能够直接或通过代理与 CentOS/Rocky 和 Oracle Linux yum 存储库通信。
- 该脚本目前不支持注册到第三方管理工具(如 Spacewalk、Foreman 或 Uyuni)的实例。
- 与从第三方存储库安装的软件包的兼容性是预期的,但不能保证。例如,某些软件不喜欢存在
/etc/oracle-release
文件。 - 安装第三方和/或闭源内核模块的软件包(例如商业防病毒产品)在切换后可能无法工作。
- 该脚本仅启用切换到 Oracle Linux 所需的基本存储库。用户可能需要启用其他存储库以获取已安装软件包的更新(参见 [issue #1][4])。
调试
运行 sudo bash -x centos2ol.sh
以调试模式将 CentOS 实例切换到 Oracle Linux。这将在命令及其参数或相关单词列表展开后但执行之前打印跟踪信息。
参与
我们欢迎贡献!请参阅我们的[贡献指南][5]。
支持
- 对于非安全相关的错误报告、问题或功能增强请求,请打开一个 [GitHub issue][6]。
- 要报告安全问题或漏洞,请遵循[报告安全漏洞][7]说明。
资源
有关 Oracle Linux 的更多信息,请访问 [oracle.com/linux][8]。
贡献
本项目欢迎社区贡献。在提交拉取请求之前,请查看我们的贡献指南。
安全
请查阅安全指南,了解我们负责任的安全漏洞披露流程。
许可证
版权所有 (c) 2020, 2023 Oracle 和/或其附属公司。
根据通用许可证 v 1.0 获得许可,如 https://oss.oracle.com/licenses/upl/ 所示。