文章目錄
CentOS 7 升級 CentOS 8 連帶安裝 Linux Kernel 5
最近在 review 團隊各項技術的版本,準備再來次大升級,其中的較大的內容就是基礎環境的部份,原本之前就想升級 Kubernetes 1.18 但無奈 Kubespray 當時尚未支援,過了幾個月再次 review 時已確認可以正常使用,只是這次多 review 了底層 kernel 與 OS 的版本,經過簡單討論後決定將 CentOS7 升級至 CentOS8,連帶一併將原本使用的 Linux Kernel 4 升成 Linux Kernel 5
過去工作經驗中,遇到需要這麼大程度的升級,都是直接請 server team 同事先提供新機器並預先安裝新的 OS,我們把程式部署上去驗證沒問題後再挑個黃道吉日將流量跟設定調整過去新機器上,舊機器就放個幾周沒問題就還個 server team,可是這次因為沒有多餘的機器可以做這樣的操作,得要直接進行升級,為了加速之後升級的速度,我來筆記一下
基本環境說明
- macOS Catalina 10.15.6
VrtualBox 6.1.12
bridge 網路
開啟對外
nmcli connection modify enp0s3 \ connection.autoconnect yes \ ipv4.method auto
原環境
- CentOS 7.8.2003
Linux Kernel 3.10.0
新環境
- CentOS 8.2.2004
- Linux Kernel 5.8.14
升級步驟
安裝 Epel yum Repository
yum install -y epel-release
安裝升級過渡用套件
yum install -y yum-utils rpmconf
清除已不再被依賴的套件
package-cleanup --leaves|tail -n +2|xargs yum remove -y
安裝 dnf
yum install -y dnf
移除 yum
dnf remove -y yum yum-metadata-parser
使用 dnf 更新 centos 7 系統
dnf upgrade -y
安裝 CentOS 8 RPM
dnf install -y http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-repos-8.2-2.2004.0.1.el8.x86_64.rpm http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.2-2.2004.0.1.el8.x86_64.rpm http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-gpg-keys-8.2-2.2004.0.1.el8.noarch.rpm
匯入 gpg key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
升級 epel
dnf upgrade -y epel-release
清除舊 kernel
rpm -e `rpm -q kernel`
移除衝突套件
rpm -e --nodeps sysvinit-tools
升級 CentOS 8
移除 python 3 的動作是我在數十次安裝中都會遇到的問題,所以先加上來,如果有疑慮可以先執行升級,待出現衝突再移除即可
移除 python 3
dnf remove -y python3
升級 CentOS 8
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
升級 kernal 至 mainline
加入 rpm
dnf install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
安裝 mainline lernel
dnf --enablerepo=elrepo-kernel -y install kernel-ml
設定開機選單
讓開機時間不要倒數
sed -i 's/GRUB_TIMEOUT=5/GRUB_TIMEOUT=0/g' /etc/default/grub
重新產生開機設定
grub2-mkconfig -o /boot/grub2/grub.cfg
重新開機套用新的 kernel
reboot
實際效果
cat /etc/redhat-release && uname -r
2020/11/01 補充:如果需要重新安裝
yum
必需刪除或是 rename 原本的
yum
設定,以下使用rename
使為範例mv /etc/yum /etc/yum.bak && dnf install -y yum
心得
一開始我是透過 Azure VM 來進行安裝,但持續遇到開單選單無法成功建立的錯誤,後來才想到會不會是 Azure VM 的架構不允許我做這樣的升級行為,因為雲端 VM 的建立也是基於 image 的基礎上,後來使用 VirtualBox 來建立測試環境,的確也順利解決問題
以下是我測試過程中遇到的幾個問題,我簡單紀錄一下問題與解決方式
RPM 衝突
這個我是在安裝 centos8 的 rpm 後遇到的
錯誤截圖
解決方式
透過
重新設定 rpm config
使用新的 rpm (互動選項我選Y
- 複寫舊設定)rpmconf -a
Kernel 執行中
我不確定是不是只有在 Azure VM 才會遇到,或者就是這個操作造成後續開機選單異常
- 錯誤截圖
解決方式
該不該這麼做,請自行斟酌
dnf -y remove hypervvssd hypervkvpd kmod-kvdo && rpm -e hypervfcopyd
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。