- 更新:2022-03-20 22:08:30
- 首发:2022-03-20 22:00:48
- 教程
- 3946
由于RedHat停止了CentOS8的支持,同时RedHat允许开发者注册16个正版RHEL系统,我决定将部分 CentOS 8 服务器更新到 RHEL 8。以下两篇文章是官方发布的与之密切相关的内容:
CentOS Project shifts focus to CentOS Stream
New Year, new Red Hat Enterprise Linux programs: Easier ways to access RHEL
注意,因参考本文操作导致的任何损失与鄙人无关,专业用户请直接访问官方升级说明(请注意官方源无法使用,因此部分sed命令需要修改):https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/converting_from_an_rpm-based_linux_distribution_to_rhel/index 。
关于为什么不选择升级至CentOS Stream?
一直以来我的客户都在使用正版RHEL系统,购买了即时的订阅,只有部分预算有限的客户使用了CentOS系统,但无论如何他们对于安全、稳定性或技术支持即时性的要求都很高。
能够得到官方的技术支持是我们更加看重的。
目前不支持从CentOS Stream转换/升级到RHEL8,不排除将来也不支持,如果后续有升级需求将不得不重装系统。同理,已经升级到CentOS Stream
的用户就别折腾了,必须重装。(只是因为更新到vault源更新过软件,cat /etc/system-release
却得到CentOS Stream release 8
,说明实际已经升级到CentOS Stream了,是不可以升级到RHEL 8的。)
升级到RHEL 8的准备工作
- 在Red Hat Developer program中进行注册并确保 https://access.redhat.com/management/subscriptions 中存在可用的订阅。
- 创建快照,备份数据。
- 【如果当前版本不是CentOS 8.5.2111】更新到8.5版本,先确认
yum update
可以执行,如果无法执行,更换为国内源(CentOS 8
操作系统版本结束了生命周期,阿里云等部分国内镜像站也移除了相应镜像源)。
官方源 -> 清华源,仅用于升级到8.5。
sed -i 's|^baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' /etc/yum.repos.d/CentOS-*
阿里云、华为云等云服务商的官方CentOS镜像使用的源也无法正常更新到RHEL,因此需要替换为centos-vault源
(已包含在第三步脚本里)。
- 无脑复制下述命令并执行(再次提醒,系统升级是高危操作,具有重要资料或专业用户请参考上述官方文档):
cp -rf /etc/yum.repos.d /etc/yum.repos.d.backup
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
rm -rf /etc/yum.repos.d/CentOS-*
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
sed -i 's/^failovermethod/#failovermethod/g' /etc/yum.repos.d/CentOS-Base.repo
yum clean all && yum makecache
sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release https://www.redhat.com/security/data/fd431d51.txt
curl --create-dirs -o /etc/rhsm/ca/redhat-uep.pem https://ftp.redhat.com/redhat/convert2rhel/redhat-uep.pem
curl -o /etc/yum.repos.d/convert2rhel.repo https://ftp.redhat.com/redhat/convert2rhel/8/convert2rhel.repo
yum -y install convert2rhel
说明:官方文档里面的命令有错误,并且现在官方早已停止了CentOS 8
的支持,源站停止,导致无法更新,因此只能用国内镜像。
升级RHEL 8
convert2rhel --username 用户名 --password 密码
使用准备工作中第一步创建的Red Hat
账号的账号密码替换上面的用户名
与密码
,并执行命令。需要注意,用户名不是登录邮箱,用户名可以登录后右上角去找。
命令执行过程中会展示不支持的软件包以及会被移除的软件,例如Docker
,绝大部分场景可以直接用podman
代替docker
,如果必须使用Docker
可以参考我另外一篇博文《CentOS8卸载podman安装docker》。
命令执行过程会提示使用到的订阅信息,需要进行选择。
如果看到提示:
WARNING - ********************************************************
WARNING - The tool allows rollback of any action until this point.
WARNING - By continuing all further changes on the system will need to be reverted manually by the user, if necessary.
WARNING - ********************************************************
之后千万不要手动退出,有些步骤会很慢类似假死,但是退出后将无法回滚。
等待 Convert2RHEL 安装 RHEL 包。
成功提示:
Conversion successful!
WARNING - In order to boot the RHEL kernel, restart of the system is needed.
一般情况下,命令执行完成后(升级大约需要2个小时),检查如果没啥红色信息,reboot
重启即可。
如果升级过程出现错误,尝试回滚(Conversion rollback)或恢复备份。不过大部分情况也是无法回滚的,这种情况只能在命令后面增加--debug
重新执行命令,同时对照https://github.com/oamg/convert2rhel/blob/main/convert2rhel/main.py
的代码一步一步修改/usr/lib/python3.6/site-packages/convert2rhel/main.py
进行调试。
升级后的检查
检查软件包,查看是否有不被支持的软件包:
yum list extras --disablerepo="*"
检查依赖关系:
yum check dependencies
查看订阅信息(留意到期时间):
sudo subscription-manager list --consumed
查看系统版本信息:
cat /etc/redhat-release
大神,centOS和Redhat到底啥区别?听说redhat一个月试用期到了之后,没法yum install安装软件?那换个源可以吗?
前者是社区版,现在已经不被支持了,后者是面向企业的版本。如果是个人使用的话,建议还是注册正版RHEL系统,注册后即可正常使用。
感谢回复! Clang 在生成时沿用了 GCC 的版本号标识,我是不是可以理解为Clang 18.1.4生成时使用的就是GCC4.8,所以我后续使用gcc 9.4
gcov
就会有不兼容的问题抱歉,这块我也不太清楚,尝试寻求AI的帮助吧。
我在这个过程中遇到了各种问题- -,现在在UDC core: g_serial: couldn't find an available UDC卡住了,请问大佬有什么解决方案吗,还是说我前置的设置就错了呢,> 这个需求很特殊。是可以的,但是比较困难,需要修改驱动配置。
好思路呀!!
关于hex编辑器,网上没找到特别好用的(小白没办法),最后在vscode上扩展一搜hex,第一个安装一下就可以用vscode进行hex编译了