从CentOS7.6升级到Rocky9.1镜像制作总结

2023-07-17 16:00:00 浏览数 (2)

1. 镜像基础版本 腾讯云轻量服务器 CentOS7.6镜像

2. 镜像制作过程

2.1 初始安装镜像为CentOS7.6 64位版本

代码语言:shell复制
## 001、查看当前版本信息 基础版本为CentOS7.6 64位版本
uname -r
# 3.10.0-1160.71.1.el7.x86_64

uname -a
# Linux VM-4-3-centos 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

cat /proc/version
# Linux version 3.10.0-1160.71.1.el7.x86_64 (<mockbuild@kbuilder.bsys.centos.org>) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Tue Jun 28 15:37:28 UTC 2022

2.2 安装epel仓库

代码语言:shell复制
#wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.tar
# 安装epel仓库
yum -y install epel-release
#Installed:
#  epel-release.noarch 0:7-14
#
#Complete!

2.3 修改shell界面终端语言为中文简体

代码语言:shell复制
locale -a
yum groupinstall "fonts"
localectl set-locale LANG=zh_CN.UTF-8
# 此时退出终端,然后重新进入终端界面语言才为中文

2.4 升级到CentOS最新版本,然后重启服务器

代码语言:shell复制
#升级到CentOS最新版本
yum -y update 
# 升级成功后重启服务器
reboot
# 重启成功后版本应该就升级到CentOS7.9了

2.5 安装一些依赖项目

代码语言:shell复制
## 安装rpmconf和yum-utils
yum -y install rpmconf yum-utils

## 执行rpmconf ,如果出现一些提示,请输入Y和回车继续,如果没提示继续第四步操作
rpmconf -a

## 安装dnf
yum -y install dnf

## 移除yum和yum-metadata-parser

dnf -y remove yum yum-metadata-parser

2.6 安装RockyLinux8.7的源和升级epel源

代码语言:shell复制
# 删除CentOS7的源
rpm -e --nodeps `rpm -qa|grep centos-`
# 安装RockyLinux8.8的源

rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/8/BaseOS/x86_64/os/Packages/r/rocky-release-8.8-1.8.el8.noarch.rpm
rpm -ivh --nodeps  --force https://mirrors.aliyun.com/rockylinux/8/BaseOS/x86_64/os/Packages/r/rocky-repos-8.8-1.8.el8.noarch.rpm
rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/8/BaseOS/x86_64/os/Packages/r/rocky-gpg-keys-8.8-1.8.el8.noarch.rpm

#rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/8/BaseOS/x86_64/os/Packages/r/rocky-release-8.7-1.2.el8.noarch.rpm
#rpm -ivh --nodeps  --force https://mirrors.aliyun.com/rockylinux/8/BaseOS/x86_64/os/Packages/r/rocky-repos-8.7-1.2.el8.noarch.rpm
#rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/8/BaseOS/x86_64/os/Packages/r/rocky-gpg-keys-8.7-1.2.el8.noarch.rpm

# 升级epel源
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf clean all

2.7 卸载centos7的内核及修改python编码

代码语言:shell复制
## 卸载centos7的内核及修改python编码
rpm -e --nodeps `rpm -qa|grep -i kernel`

修改python2编码

代码语言:shell复制
## 修改python2编码
vi /usr/lib/python2.7/site-packages/sitecustomize.py

把下面这段代码加入文件里面

代码语言:shell复制
# encoding=utf8

import sys

reload(sys)
sys.setdefaultencoding('utf8')

# encoding=utf8  import sys    reload(sys)  sys.setdefaultencoding('utf8')

2.8 升级到RockyLinux8,这一步一般会报错,如果没有报错请进行继续执行2.9步操作

2.8.1 第1次尝试升级RockyLinux8报错解决方法

代码语言:shell复制
## 第一次执行下面的语句:
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync

## 最后出现如下错误提示:
.............................
# 运行事务检查
# 错误:事务检查与依赖解决错误:
# (gcc >= 8 with gcc < 9) 被 annobin-10.67-3.el8.x86_64 需要
# rpmlib(RichDependencies) <= 4.12.0-1 被 annobin-10.67-3.el8.x86_64 需要
# (NetworkManager >= 1.20 or dhclient) 被 dracut-network-049-218.git20221019.el8_7.x86_64 需要
# rpmlib(RichDependencies) <= 4.12.0-1 被 dracut-network-049-218.git20221019.el8_7.x86_64 需要
# (annobin if gcc) 被 redhat-rpm-config-130-1.el8.noarch 需要
# (gcc-plugin-annobin if gcc) 被 redhat-rpm-config-130-1.el8.noarch 需要
# rpmlib(RichDependencies) <= 4.12.0-1 被 redhat-rpm-config-130-1.el8.noarch 需要
# 要诊断问题,尝试运行:'rpm -Va --nofiles --nodigest' 。
# RPM 数据库可能出错,请尝试运行'rpm --rebuilddb'进行恢复。
# 下载的软件包保存在缓存中,直到下次成功执行事务。
# 您可以通过执行 'dnf clean packages' 删除软件包缓存。

##解决办法
#首先执行下面的语句模糊查询缓存包存放路径
find /var/cache/dnf/ -name *annobin-10.67-3.el8.x86_64*
# /var/cache/dnf/appstream-62ae9a0bbea44fbe/packages/annobin-10.67-3.el8.x86_64.rpm

find /var/cache/dnf/ -name *dracut-network-049-218.git20221019.el8_7.x86_64*
# /var/cache/dnf/baseos-3e608afeebc9a90b/packages/dracut-network-049-218.git20221019.el8_7.x86_64.rpm

find /var/cache/dnf/ -name *redhat-rpm-config-130-1.el8.noarch*
# /var/cache/dnf/appstream-62ae9a0bbea44fbe/packages/redhat-rpm-config-130-1.el8.noarch.rpm

#然后rpm -ivh --nodeps --force 后面跟刚刚查询到的rpm文件完整路径卸载掉冲突的包
rpm -ivh --nodeps --force /var/cache/dnf/appstream-62ae9a0bbea44fbe/packages/annobin-10.67-3.el8.x86_64.rpm
rpm -ivh --nodeps --force /var/cache/dnf/baseos-3e608afeebc9a90b/packages/dracut-network-049-218.git20221019.el8_7.x86_64.rpm
rpm -ivh --nodeps --force /var/cache/dnf/appstream-62ae9a0bbea44fbe/packages/redhat-rpm-config-130-1.el8.noarch.rpm

2.8.2 第2次尝试升级RockyLinux8报错解决方法

代码语言:shell复制
## 第二次尝试升级
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
# 报出如下错误
# 运行事务测试
# 下载的软件包保存在缓存中,直到下次成功执行事务。
# 您可以通过执行 'dnf clean packages' 删除软件包缓存。
# 错误:事务检查错误:
#   file /usr/sbin/pidof from install of procps-ng-3.3.15-9.el8.x86_64 conflicts with file from package sysvinit-tools-2.88-14.dsf.el7.x86_64
#   file /usr/bin/last from install of util-linux-2.32.1-39.el8_7.x86_64 conflicts with file from package sysvinit-tools-2.88-14.dsf.el7.x86_64
#   file /usr/bin/mesg from install of util-linux-2.32.1-39.el8_7.x86_64 conflicts with file from package sysvinit-tools-2.88-14.dsf.el7.x86_64
#   file /usr/bin/wall from install of util-linux-2.32.1-39.el8_7.x86_64 conflicts with file from package sysvinit-tools-2.88-14.dsf.el7.x86_64
#   file /usr/share/man/man1/last.1.gz from install of util-linux-2.32.1-39.el8_7.x86_64 conflicts with file from package sysvinit-tools-2.88-14.dsf.el7.x86_64
#   file /usr/share/man/man1/mesg.1.gz from install of util-linux-2.32.1-39.el8_7.x86_64 conflicts with file from package sysvinit-tools-2.88-14.dsf.el7.x86_64
#   file /usr/share/man/man1/wall.1.gz from install of util-linux-2.32.1-39.el8_7.x86_64 conflicts with file from package sysvinit-tools-2.88-14.dsf.el7.x86_64

# 错误汇总
# -------------

## 解决方法 删除掉rpm -e --nodeps sysvinit-tools-2.88-14.dsf.el7.x86_64包
rpm -e --nodeps sysvinit-tools-2.88-14.dsf.el7.x86_64

2.8.3 第3次尝试升级RockyLinux8报错解决方法

代码语言:shell复制
## 013、第三次尝试升级
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
## 此次升级成功无报错信息

2.9 卸载重新安装epel仓库和rpmconf并删除冲突软件包

卸载旧的epel仓库,重新安装epel仓库,删除冲突软件包,重装rpmconf并执行rpmconf,在交互界面一直输入Y和回车即可

代码语言:shell复制
## 014、卸载旧的epel仓库,重新安装epel仓库,删除冲突软件包,重装rpmconf并执行rpmconf,在交互界面一直输入Y和回车即可
## 卸载epel仓库文件
cd /etc/yum.repos.d
rm -rf /etc/yum.repos.d/CentOS-Base.repo.rpmsave  /etc/yum.repos.d/CentOS-Epel.repo /etc/yum.repos.d/epel-modular.repo /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel-testing-modular.repo /etc/yum.repos.d/epel-testing.repo
## 重新安装epel仓库
dnf -y reinstall epel-release
## 删除冲突的软件包
rpm -e --nodeps python36-rpmconf-1.1.7-1.el7.1.noarch
## 重装rpmconf
dnf -y install rpmconf yum-utils
##执行rpmconf,会出现如下界面,一直输入Y和回车即可
rpmconf -a

2.10 安装RockyLinux-8内核

安装内核(防止有些时候没安装内核开机失败,开机失败的可以用RockyLinux-8 ISO镜像救援模式安装内核)

代码语言:shell复制
## 014、安装内核(防止有些时候没安装内核开机失败,开机失败的可以用RockyLinux-8 ISO镜像救援模式安装内核)
dnf -y install kernel kernel-core
dnf -y install shim grub2-tools-extra grubby grub2-common grub2-pc
dnf -y install grub2-tools-efi grub2-tools-minimal grub2-efi grub2-pc-modules grub2-tools

2.11 修复引导并安装Rocky8.7的Minimal Install环境

执行下面的命令,防止迁移完成后找不到引导,重启开不了机,根据以下命令选择分区表类型,根据分区表类型执行相关命令

代码语言:shell复制
## 015、执行下面的命令,防止迁移完成后找不到引导,重启开不了机,根据以下命令选择分区表类型,根据分区表类型执行相关命令

# 查看分区表类型
fdisk -l

# MBR分区(传统的BIOS、dos、msdos)(注意/dev/vda需根据实际情况自行选择磁盘路径,具体参考fdisk -l返回的磁盘卷标信息)

grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-install /dev/vda

2.12 安装Rocky8.7的"Minimal Install"环境

代码语言:shell复制
## 016、这一步选择性执行,执行这一步能解决安装yum报错。
rm -rf /etc/yum

## 017、安装基础环境
dnf -y groupinstall "Minimal Install"

## 018、重启机器
reboot

这样就将CentOS7 升级到了rockyLinux8.7


2.13 下面尝试将RockyLinux8.7升级到9.1

2.13 安装epel源并升级系统到rocky8最新版,重启服务器创建一个快照备份

代码语言:shell复制
#安装epel源
dnf -y install epel-release
#更新系统至最新版
dnf -y update
#重启服务器
reboot

2.14 升级Rocky8.7到Rocky9.1

代码语言:shell复制
# 安装rpmconf和yum-utils
dnf -y install rpmconf yum-utils

# 执行rpmconf ,如果出现一些提示,请输入Y和回车继续,如果没提示继续第四步操作
rpmconf -a

# 安装rocky-release包
rpm -e --nodeps `rpm -qa|grep rocky-release`
rpm -e --nodeps `rpm -qa|grep rocky-gpg-keys`
rpm -e --nodeps `rpm -qa|grep rocky-repos`

# 9.2版本
# rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/9/BaseOS/x86_64/os/Packages/r/rocky-gpg-keys-9.2-1.4.el9.noarch.rpm
# rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/9/BaseOS/x86_64/os/Packages/r/rocky-release-9.2-1.4.el9.noarch.rpm
# rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/9/BaseOS/x86_64/os/Packages/r/rocky-repos-9.2-1.4.el9.noarch.rpm
# dnf clean all

# 9.1版本
rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/9/BaseOS/x86_64/os/Packages/r/rocky-gpg-keys-9.1-1.11.el9.noarch.rpm
rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/9/BaseOS/x86_64/os/Packages/r/rocky-release-9.1-1.11.el9.noarch.rpm
rpm -ivh --nodeps --force https://mirrors.aliyun.com/rockylinux/9/BaseOS/x86_64/os/Packages/r/rocky-repos-9.1-1.11.el9.noarch.rpm
dnf clean all

# 停用冲突的包  
dnf module disable gimp:2.8 mariadb:10.3 perl-IO-Socket-SSL:2.066 perl-libwww-perl:6.34 python27:2.7 python36:3.6 virt:rhel

2.14.1 第1次尝试升级RockyLinux-9

代码语言:shell复制
# 第一次尝试升级RockyLinux-9
dnf -y --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync

## 报错如下

# 模块依赖问题:需要停用

# 问题 1: 冲突的请求

# - 没有提供模块 module(platform:el8) 所需要的 gimp:2.8:8030020210427153901:c307c522.x86_64

# 问题 2: 冲突的请求

# - 没有提供模块 module(platform:el8) 所需要的 mariadb:10.3:8060020220913075833:d63f516d.x86_64

# 问题 3: 冲突的请求

# - 没有提供模块 module(platform:el8) 所需要的 perl-IO-Socket-SSL:2.066:8060020220513050719:bc93984d.x86_64

# - 没有提供模块 module(perl:5.26) 所需要的 perl-IO-Socket-SSL:2.066:8060020220513050719:bc93984d.x86_64

# 问题 4: 冲突的请求

# - 没有提供模块 module(platform:el8) 所需要的 perl-libwww-perl:6.34:8060020220513153220:9168a43d.x86_64

# - 没有提供模块 module(perl:5.26) 所需要的 perl-libwww-perl:6.34:8060020220513153220:9168a43d.x86_64

# 问题 5: 冲突的请求

# - 没有提供模块 module(platform:el8) 所需要的 python27:2.7:8070020221108111144:056aacbc.x86_64

# 问题 6: 冲突的请求

# - 没有提供模块 module(platform:el8) 所需要的 python36:3.6:8050020211109130820:982725ab.x86_64

# 问题 7: 冲突的请求

# - 没有提供模块 module(platform:el8) 所需要的 virt:rhel:8070020230404171803:3b9f49c4.x86_64

# 解决方法 需要在升级前停用如下冲突包
# 停用冲突的包  
dnf module disable gimp:2.8 mariadb:10.3 perl-IO-Socket-SSL:2.066 perl-libwww-perl:6.34 python27:2.7 python36:3.6 virt:rhel

2.14.2 第二次升级

代码语言:shell复制
dnf -y --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync

# 升级成功无报错

2.15 安装rocky9内核与minimal-environment基础环境

代码语言:shell复制
# 重建rpm数据库
rpm --rebuilddb

# 查看已安装的内核
rpm -qa|grep -i kernel

# 卸载RockyLinux-8的内核(可选操作,防止操作不当无法开机,可以在所有步骤操作完成,重启操作系统之后,再进行,卸载完成之后用第10步重新安装内核)
rpm -e --nodeps `rpm -qa|grep -i kernel`

# 安装RockyLinux-9内核(防止有些时候没安装内核开机失败,开机失败的可以用RockyLinux-9 ISO镜像救援模式安装内核)
dnf -y install kernel
dnf -y install kernel-core
dnf -y install shim

# 安装基础环境
dnf group install minimal-environment -y

# 安装rpmconf和yum-utils
dnf -y install rpmconf yum-utils

# 执行rpmconf,会出现如下界面,一直输入Y和回车即可
rpmconf -a

# d第二次停用冲突的包
dnf module disable gimp:2.8 mariadb:10.3 perl-IO-Socket-SSL:2.066 perl-libwww-perl:6.34 python27:2.7 python36:3.6 virt:rhel

# 更新系统
dnf -y update

2.16 修复引导 并设置允许root远程登录

代码语言:shell复制
# 执行下面的命令,防止迁移完成后找不到引导,重启开不了机,根据以下命令选择分区表类型,根据分区表类型执行相关命令

# 查看分区表类型
fdisk -l
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-install /dev/vda

# 允许ssh使用root用户远程登录
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
# 重启系统
reboot

2.17 开启网卡

升级到RockyLinux9.1成功,但是此时默认关闭了网卡,无法使用ssh远程登录

Rocky9默认禁止root登录,在升级完毕重启前首先需要运行echo "PermitRootLogin yes" >> /etc/ssh/sshd_config,修改ssh设置允许root账号登录

重启后

进入使用root账号/密码登录VNC界面,

Rocky9默认网卡禁用自启动,需要调整为自启动网卡

代码语言:shell复制
# 查看DNS服务器配置信息
cat /etc/resolv.conf 

# 查看网关信息 
route -n

# 显示网卡信息
ip a

# 查看fstab信息
cat /etc/fstab 

# eth0网卡为关闭状态 需要开启 运行下面4句才开启成功
ifup eth0
nmcli connection reload 
systemctl restart NetworkManager
nmcli connection reload 

# 重启成功后查看网卡信息
ip a

# 测试是否能ping通
ping qq.com

此时可以使用ssh客户端密钥对登录rocky9服务器了

2.18 安装lnmp环境一键安装包

代码语言:shell复制
# 查看screen是否安装
screen ls

# 创建lnmp会话
screen -S lnmp

# 查看swap文件列表 此时为空
cat /proc/swaps

# 创建4Gswap 交换空间
sudo swapon -s
sudo dd if=/dev/zero of=/var/swapfile bs=1M count=4096
sudo chmod 0600 /var/swapfile
sudo mkswap /var/swapfile
sudo swapon /var/swapfile
sudo swapon -s
cat /proc/swaps

# 查看gcc版本是否大于10
rpm -qa|grep gcc

# 安装lnmp
wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz && tar zxf lnmp1.9.tar.gz && cd lnmp1.9 && LNMP_Auto="y" DBSelect="5" Bin="n" DB_Root_Password="yourpassworkd" InstallInnodb="y" PHPSelect="11" SelectMalloc="2" ./install.sh lnmp

2.19 至此 Rocky91自定义镜像 制作完毕

0 人点赞