因为 CentOS Stream 8 已停止支持,因此要升级一下。
End dates are coming for CentOS Stream 8 and CentOS Linux 7
2018 年的树莓派 3B+ 到现在为止,还算稳定。系统更新时,发现更新不了。
细想起前些时间 Centos 8 停止维护的事(CentOS 8 升级到 CentOS Stream),没想到 Centos Stream 8 也停止维护了。
好了,说正事:
一、先介绍下磁盘情况
通过 fdisk -l 命令查看磁盘信息:
Disk /dev/mmcblk0: 29.7 GiB | SD 卡用于放置 CentOS Stream 8 |
Disk /dev/sda: 931.5 GiB | 外接硬盘,挂载在 /www 下 |
另外,你需要留意,连接终端时避免连接断开,因为这将造成操作被中断,官方推荐方法是直接登录物理机器,或者使用 tmux。(因为我使用的内网,并不存在连接异常问题,因此使用 xshell 连接进行操作的。)
二、在升级前,先进行备份
因为,事先有计划任务定时备份,因此,这次需要手动执行下:
备份完,估计在 25 分钟左右。(根据 SD 卡大小,写入速度可以推算出耗时)
# 备份 dd if=/dev/mmcblk0 of=/www/backup/pi3_system.img
Rocky 提供了迁移脚本
https://github.com/rocky-linux/rocky-tools/tree/main/migrate2rocky
migrate2rocky.sh | 将系统转换为 Rocky Linux 8 |
migrate2rocky9.sh | 将系统转换为 Rocky Linux 9(此脚本必须在 EL9 发行版上运行,不支持从其他发行版迁移。) |
# 转换到 Rocky Linux 8 curl https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky.sh # 转换到 Rocky Linux 9 curl https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky9.sh -o migrate2rocky9.sh
用法
./migrate2rocky.sh -h ├── -h # --> 帮助 ├── -r # --> 开始转换 └── -V # --> 验证已安装软件包是否与 RPM 数据库匹配(慎用!,并没有找到原因)
磁盘空间要求
如果没有足够的磁盘空间,可能会导致 migrate2rocky 使系统处于不稳定状态。
/usr 250M /var 1.5G /boot 50M
三、确认连通
必须 ping 通后才可以进行下一步操作,否则,将造成迁移失败。
# 尝试下载 wget dl.rockylinux.org # 删除下载的文件 rm index.html # ping ping dl.rockylinux.org
四、开始迁移:
(因为是从 CentOS Stream 8 迁移的,因此也只能使用 migrate2rocky.sh)
./migrate2rocky.sh -r
执行后显示:
migrate2rocky - Begin logging at Fri 28 Jun 2024 11:42:21 PM CST. Removing dnf cache Preparing to migrate CentOS Stream 8 to Rocky Linux 8. Determining repository names for CentOS Stream 8.Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist Failed to fetch info for package apr-util-ldap.aarch64. An error occurred while we were attempting to convert your system to Rocky Linux. Your system may be unstable. Script will now exit to prevent possible damage. A log of this installation can be found at /var/log/migrate2rocky.log 翻译成中文为: migrate2rocky - 在 2024 年 6 月 28 日星期五晚上 11:42:21 CST 开始记录日志。 删除 dnf 缓存 准备将 CentOS Stream 8 迁移到 Rocky Linux 8。 确定 CentOS Stream 8 的存储库名称。错误:无法下载存储库“appstream”的元数据:无法准备内部镜像列表:镜像列表中没有 URL 无法获取软件包 apr-util-ldap.aarch64 的信息。 我们尝试将您的系统转换为 Rocky Linux 时发生错误。您的系统可能不稳定。脚本现在将退出以防止可能的损坏。 此安装的日志可以在 /var/log/migrate2rocky.log 中找到。
替换更新源
备份源
备份 tar -czvf /etc/yum.repos.d/yum_repos_backup.tar.gz /etc/yum.repos.d/ 还原 tar -zxvf /etc/yum.repos.d/yum_repos_backup.tar.gz -C /
需要执行以下,替换更新源:
华为(当前使用)
sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=https://repo.huaweicloud.com|g" /etc/yum.repos.d/CentOS-*
使用清华源(未尝试)
sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g" /etc/yum.repos.d/CentOS-*
centos(不建议,有机率失败)
sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-* sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
提示:Determining repository names for CentOS Stream 8.Error: Failed to download metadata for repo ‘manticore’: Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
你需要将
/etc/yum.repos.d/manticore.repo 改名为 manticore.repo.bak,这是因为使用的第三方库,manticore,这个库无法访问。
之后再重新运行 ./migrate2rocky.sh -r。
五、接下来是漫长的等待
替换源、替换软件包、更新……
CentOS Stream Migration Notes: Because CentOS Stream leads RockyLinux by the next point release many packages in Stream will have higher version numbers than those in RockyLinux, some will even be rebased to a new upstream version. Downgrading these packages to the versions in RockyLinux carries the risk that the older version may not recognize config files, data or other files generated by the newer version in Stream. To avoid issues with this the newer package versions from CentOS Stream have been retained. Also the CentOS Stream repositories have been retained but renamed with a prefix of "stream-" to avoid clashing with RockyLinux repositories, but these same repos have also been disabled so that future package installs will come from the stock RockyLinux repositories. If you do nothing except update to the next point release of RockyLinux when it becomes available then the packages retained from Stream should be replaced at that time. If you need to update a package from Stream (eg: to fix a bug or security issue) then you will need to enable the appropriate repository to do so. Done, please reboot your system. A log of this installation can be found at /var/log/migrate2rocky.log 翻译为中文为: CentOS Stream 迁移注意事项: 由于 CentOS Stream 相比 RockyLinux 领先一个小版本,因此 Stream 中的许多软件包版本号会高于 RockyLinux 中的,有些甚至会更新到新的上游版本。将这些软件包降级到 RockyLinux 的版本可能会导致旧版本无法识别由 Stream 的新版本生成的配置文件、数据或其他文件。 为避免这些问题,保留了来自 CentOS Stream 的较新软件包版本。同时,保留了 CentOS Stream 的仓库,但重命名为带有 "stream-" 前缀以避免与 RockyLinux 仓库冲突,并禁用了这些仓库,以确保未来的软件包安装来自 RockyLinux 的默认仓库。 如果你只是更新到下一个 RockyLinux 小版本发布,那么保留的 Stream 包将在那时被替换。如果你需要更新 Stream 中的某个软件包(例如:修复错误或安全问题),则需要启用相应的仓库来进行更新。 完成后,请重启系统。 安装日志可在 /var/log/migrate2rocky.log 中找到。
六、重启
现在已经完成迁移,开始重启。
reboot
七、查看当前发行版本信息
cat /etc/os-release
NAME="Rocky Linux" VERSION="8.10 (Green Obsidian)" ID="rocky" ID_LIKE="rhel centos fedora" VERSION_ID="8.10" PLATFORM_ID="platform:el8" PRETTY_NAME="Rocky Linux 8.10 (Green Obsidian)" ANSI_COLOR="0;32" LOGO="fedora-logo-icon" CPE_NAME="cpe:/o:rocky:rocky:8:GA" HOME_URL="https://rockylinux.org/" BUG_REPORT_URL="https://bugs.rockylinux.org/" SUPPORT_END="2029-05-31" ROCKY_SUPPORT_PRODUCT="Rocky-Linux-8" ROCKY_SUPPORT_PRODUCT_VERSION="8.10" REDHAT_SUPPORT_PRODUCT="Rocky Linux" REDHAT_SUPPORT_PRODUCT_VERSION="8.10"
八、执行升级操作
# 更新系统并重启 yum upgrade -y && reboot
至此完成迁移。
参考: