18 июл. 2022 г.

Апгрейд Oracle Linux с версии el6 до el7

И вот это долгооткладываемое время настало - пришлось апгрейдить сервер под управлением ОС Oracle Linux 6.5 до 7й версии (на данный момент последняя 7.9).

Сначала необходимо обновить систему до последней версии (репозиторий public yum latest должен быть активным):

yum upgrade -y

В моём случае я получал ошибку [Errno 14] problem making ssl connection при попытке что-либо обновить или установить с репозитория public-yum.oracle.com наподобии этой:

error.JPG

Это произошло из-за того, что пакет openssl в релизе 6.5, который был установлен на сервере, был старой версии и не поддерживает более усиленное шифрование, которое используется в репозитории. Проблему эту решил тем, что подмонтировал диск Oracle Linux 6.10 как репозиторий и обновил пакет opensssl с диска. После этого yum стал нормально заходить на интенет-репозиторий. Образ можно скачать тут: https://edelivery.oracle.com/osdc/faces/SoftwareDelivery

Чтобы сделать локальный диск репозиторием, нужно его примонтировать и добавить repo-файл в /etc/yum.repos.d/local.repo

mount /dev/cdrom /mnt/cdrom
[InstallMedia]
name=DVD for Red Hat Enterprise Linux 7.9 Server
metadata_expire=-1
gpgcheck=1
enabled=1
baseurl=file:///mnt/cdrom/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

Теперь необходимо, чтобы ядро линукс было версии 3 или выше. Версия 2 не поддерживается для обновления. Если необходимо - обновите ядро до версии 3/4/5 и загрузитесь в него. https://docs.oracle.com/cd/E37670_01/E64030/html/ol_upuek2_rn64.html

Проверка версий установленных ядер:

yum list installed kernel

Далее необходимо установить необходимые пакеты, для чего необходимо активировать репозиторий Addons в конфиг-файле по пути /etc/yum.repos.d/public-yum-ol6.repo (название файла может отличаться):

[public_ol6_addons]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL6/addons/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

Изменяем enabled на 1, сохраняем, делаем снова yum update. Если понадобиться, то и yum clean all, затем ставим пакеты:

yum install redhat-upgrade-tool preupgrade-assistant preupgrade-assistant-el6toel7 preupgrade-assistant-el6toel7-data-0 preupgrade-assistant-tools preupgrade-assistant-ui openscap

Для проблемных пакетов можно применять опцию --skip-broken. После этого запускаем утилиту проверки совместимости обновления и ждём окончания её работы:

preupg

Результат её работы будет лежать в виде HTML-оформленного отчета в /root/preupgrade/result.html

Необходимо внимательно просмотреть этот отчёт, в нём будут указаны все проблемы, которые были найдены, рабитые по категориям. Рекомендуется обратить внимание и исправить все проблемы категории Error, Needs Action, Needs Inspection. Некоторые проблемы потребуют проверки после обновления, потому сохраните себе отчёт.

Можно перезапускать проверку сколько угодно раз после применения исправлений, результаты проверок будут лежать в папке /root/preupgrade-results

В моём случае ошибка была только одна - система была настроениа на загрузку EFI и обновление вроде как не поддерживается. Оно поддерживается на самом деле, но нужно быть готовым к тому, что система может не загрузиться сразу. Поэтому в случае, если система настроена на загрузку как UEFI/EFI, а не BIOS/Legacy, то обязательно убедитесь, что у вас есть загрузочный диск Oracle Linux 7 и вы можете с него загрузиться. Это также может быть образ, смонтированный как Vertual media в случае брендовых серверов Dell, IBM, HP.

Запускаем утилиту апгрейда релиза с ключем --force - чтобы обновиться несмотря на ошибку с UEFI, используя заранее скачанный на сервер образ:

redhat-upgrade-tool-cli --iso=OL7_ISO --debuglog=/tmp/upgrade.log --cleanup-post --force

Варианты команды обновления, используя сетевой репозиторий и диск в приводе:

redhat-upgrade-tool-cli --network=7.5 --instrepo=OL7_repo_url --debuglog=/tmp/upgrade.log --cleanup-post

redhat-upgrade-tool-cli --device=/dev/cdrom --debuglog=/tmp/upgrade.log --cleanup-post

Дожидаемся окончания обновления. В моём случае после второй перезагрузки сервер не загрузился. Как я выяснил, в Oracle Linux el6 используется загрузчик grub, а в el7 - grub2. Обновление происходит автоматически для типа загрузки BIOS/Legacy, а вот для UEFI скрипт обновления сломал старый загрузчик, но не установил корректно новый - и система осталась без bootloader'а. Совсем. Даже нет возможности зайти в консоль восстановления.

Вот здесь нам и пригодится скачанный образ/диск Oracle Linux 7.9. Загружаемся с диска и в стартовом меню выбираем Troubleshooting -> Rescue installed system. Ниже показан пример только в случае с CentOS:

Нажимаем Enter и входим в установленную систему с помощью chroot:

chroot /mnt/sysimage

Теперь монтируем установочный диск как репозиторий (если есть доступ в интернет - не нужно), как было описано выше, и удаляем загрузчик совсем чтобы избежать конфликта версий зависимостей (как было у меня):

yum remove grub2

Теперь устанавливаем необходимые пакеты:

yum install grub2 grub2-efi-x64 grub2-efi-x64-modules.noarch grub2-pc grub2-tools grub2-tools-extra 

Если установить не все модули, то будет ошибка:

grub-install: error: /usr/lib/grub/x84_64-efi/modinfo.sh doesn't exist. Please specify --target or --directory.

Теперь устанавливаем бутлоадер, который должен сам прописать пункты загрузки для ядер, установленных в системе:

grub2-install --target=arm64-efi --efi-directory=/boot/efi --bootloader-id=grub2

Возможно придётся сначала создать конфиг для grub командой:

grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

Выходим из chroot и перезагружаемся:

exit
reboot

Система должна успешно загрузиться в релиз 7. Не забываем проверить по отчёту всё ли обновилось хорошо там, где были замечания.

Ссылки:

  1. https://docs.oracle.com/en/operating-systems/oracle-linux/7/install/ol7-upgrade.html
  2. https://alldba.com/upgrade-oracle-linux-ol-6-to-ol-7/
  3. https://unix.stackexchange.com/questions/574170/grub2-install-error-modinfo-sh-missing-common-solutions-attempted
  4. https://community.oracle.com/tech/apps-infra/discussion/4490806/errno-14-problem-making-ssl-connection
  5. https://www.thegeekdiary.com/centos-rhel-7-how-to-reinstall-grub2-from-rescue-mode/
  6. https://docs.oracle.com/cd/E37670_01/E64030/html/ol_upuek2_rn64.html
  7. https://access.redhat.com/solutions/1355683
  8. https://bugzilla.redhat.com/show_bug.cgi?id=1509302
  9. https://docs.fedoraproject.org/en-US/quick-docs/bootloading-with-grub2/

Комментариев нет:

Отправить комментарий