Рубрики
CentOS

upgrade CentOS7 to CentOS8 / recovery mode

ВНИМАНИЕ!!

Сделай бэкап перед обновлением!!!
Апгрейд системы может привести полной неработоспособности ОС!
Перед апгрейдом проверьте ссылки для скачивания rpm \ могут перестать быть рабочими!
Система может даже не загрузится. 

Ссылки решений по upgrade:

https://www.tecmint.com/upgrade-centos-7-to-centos-8/
https://1gbits.com/blog/how-to-upgrade-centos-7-to-8/
https://www.howtoforge.com/how-to-upgrade-centos-7-core-to-8/
https://www.centlinux.com/2020/01/how-to-upgrade-centos-7-to-8-server.html
https://blog.sedicomm.com/2019/11/19/kak-obnovit-centos-7-do-centos-8/
Обновление CentOS 7 до CentOS 8
https://www.golinuxcloud.com/enable-ssh-configure-network-in-rescue-mode/ https://www.centlinux.com/2019/12/how-to-recover-grub-2-bootloader-centos-8.html

Решение:

0. Сначала нужно максимально обновить текущею систему
yum update

1. Установить репозиторий epel
yum install epel-release -y 

2. Установить дополнительное ПО
yum install yum-utils
yum install rpmconf

3. Выполнить очистку системы
rpmconf -a 
package-cleanup --leaves
 package-cleanup --orphans

4. Установим новую программу правления пакетами dnf 
yum install dnf

5. Удаляем YUM
dnf -y remove yum yum-metadata-parser
rm -Rf /etc/yum 

6. Производим upgrade dnf 
dnf upgrade

7. Убеждаемся что от репозитория CentOS ничего не осталось
cd /etc/yum.repos.d/
ls /etc/yum.repos.d/
cat file-CentOs7



8. Качаем repos CentOS8
!!! Вот тут обращаем внимание на ссылки \ уже могут быть не актуальны 
!!! На Нужны пакеты centos-linux-repo, centos-linux-release, centos-gpg-keys
!!! Идем и смотрим что там есть
Устанавливаем:
dnf -y install  http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-linux-repos-8-2.el8.noarch.rpm
dnf -y install  http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-linux-release-8.4-1.2105.el8.noarch.rpm 
dnf -y install  http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-gpg-keys-8-2.el8.noarch.rpm

9. Выполняем upgrade  

dnf upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

10. Удаляем скачанные файлы
dnf clean all

11. Удаляем старые ядра
rpm -e `rpm -q kernel`

12. Удаляем пакеты которые могут конфликтовать и которые конфликтуют
!!! Не забываем записывать что мы там удаляем 
rpm -e --nodeps sysvinit-tools

13. Запускаем обновление системы 
!!! На этом этапе быть особенно внимательным
!!! в случае вылета из за пакета проще его также удалить
!!! Не забываем записывать что мы там удаляем 
!!! dnf remove name_conflict_package
!!! dnf remove php*
!!! dnf remove mariadb*
!!! dnf remove python36-rpmconf
!!! dnf clean all

sudo dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync

14. После обновления системы установим ядра
dnf -y install kernel-core
dnf -y groupupdate "Core" "Minimal Install"
dnf clean all

15. Если все прошло удачно можно перезагружается и приступать к восстановлению работы демонов
!!! Система может и не загрузится
!!! 1. проблемы с установкой grub2
!!! 2. проблемы с установкой ядер
reboot

Ошибка при установке YUM

!!! [...]
!!! Error: Transaction failed
cd /usr/bin
ln -s dnf-3 yum
cd /etc/yum
rm -r *
dnf -y install yum

Как загрузится в rescue:

!!! Для загрузки нам нужен будет iso Centos8 
0. В меню загрузки liveCD Centos8 выбираем "Troubleshooting -> Rescue a CentOS Linux"
1. Как загрузимся у нас будет выбор что делать
2. Нам нужно выбрать первый вариант Continium / Нажать цифра 1 / Enter

Сеть в режиме rescue:

!!! How to enable SSH access & configure network in rescue mode
0. Проверяем линки:
ip link

1. Добавляем ip на интерфейс ens3
!!! Синтаксис: ip addr add / dev 
ip addr add 192.168.100.17/24 dev ens3

2. Добавляем маршрут 
!!! Синтаксис: ip route add default via 
ip route add default via 192.168.100.1

3. Добавляем DNS
vim  cat /etc/resolv.conf
nameserver 192.168.100.1

Как восстановить GRUB Menu:

!!! How to Recover grub.cfg (GRUB Menu) in CentOS 8
!!! Убить можно вот так например (rm -f /boot/grub2/grub.cfg)
!!! ошибка: grub>

0. Загружаемся с liveCD CentOS8 
1. Жмем 1 и Enter

2. Выполняем смену окружения на sysimage (тут наш загрузчик centos сам его нашёл и под монтировал)
chroot /mnt/sysimage

3. Восстанавливаем файл grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg

4. Трогаем файл .autorelabel, требуется для SElinux
touch /.autorelabel

5. Выходим из chroot и перезагружаемся
exit
reboot

Восстановления удаленного ядра

!!! Вот так можно убить (rm -f /boot/vmlinuz-4.18.0-80.el8.x86_64)
!!! error: ../../grub-core/fs/fshelp.c:258:file '/vmlinuz-4.18.0-80.el8.x86_64' not found.
!!! error: ../../grub-core/loader/i386/pc/linux.c:413:you need to load the kernel first.

0. Грузимся в liveCD centos8
1. Идем в каталог с ядрами
cd /mnt/install/repo/BaseOS/Packages

2. Ставим ядра с диска
rpm -ivh --root=/mnt/sysimage --replacepkgs kernel-core-4.18.0-80.el8.x86_64.rpm

3. Проверяем что ядра установились 
ls /mnt/sysimage/boot/vmlinuz*

4. Трогаем файл для SElinux
touch /mnt/sysimage/.autorelabel

5. Перезагружаемся
reboot

Восстановление директории /boot

!!! пример ненормальные удалили boot  (rm -rf /boot/*)
!!! error: ../../grub-core/fs/fshelp.c:258:file '/grub2/i386-pc/normal.mod' not found.
!!! Entering rescue mode...
!!! grub rescue>

0. Грузимся в LiveCD CentOS8 

1. Переходим в каталог с пакетами
cd /mnt/install/repo/BaseOS/Packages

2. Ставим пакет 
rpm -ivh --root=/mnt/sysimage --replacepkgs kernel-core-4.18.0-80.el8.x86_64.rpm

3. Выполняем chroot
chroot /mnt/sysimage

4. Устанавливаем grub2
grub2-install /dev/sda

5. Пере собираем меню загрузки
grub2-mkconfig -o /boot/grub2/grub.cfg

6. Как обычно трогаем файл для SElinux
touch /.autorelabel

7. Выходим из chroot и перезагружаемся
exit
reboot

Сброс пароля root

0. как обычно при выборе загрузки жмем e
1. Ищем строку примерно такую "root=/dev/mapper/cl-root ro \"
2. Меняем/дописываем ее "root=/dev/mapper/cl-root rw \ init=/sysroot/bin/sh"
3. Загрузившись выполняем
chroot /sysroot
4. Меняем пароль root
passwd root
5. Для selinux выполняем
touch /.autorelabel
6. Выходим из recovery и перезагружаемся
exit
reboot