И вот это долгооткладываемое время настало - пришлось апгрейдить сервер под управлением ОС Oracle Linux 6.5 до 7й версии (на данный момент последняя 7.9).
Сначала необходимо обновить систему до последней версии (репозиторий public yum latest должен быть активным):
yum upgrade -y
В моём случае я получал ошибку [Errno 14] problem making ssl connection при попытке что-либо обновить или установить с репозитория public-yum.oracle.com наподобии этой:
Это произошло из-за того, что пакет 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. Не забываем проверить по отчёту всё ли обновилось хорошо там, где были замечания.
Ссылки:
- https://docs.oracle.com/en/operating-systems/oracle-linux/7/install/ol7-upgrade.html
- https://alldba.com/upgrade-oracle-linux-ol-6-to-ol-7/
- https://unix.stackexchange.com/questions/574170/grub2-install-error-modinfo-sh-missing-common-solutions-attempted
- https://community.oracle.com/tech/apps-infra/discussion/4490806/errno-14-problem-making-ssl-connection
- https://www.thegeekdiary.com/centos-rhel-7-how-to-reinstall-grub2-from-rescue-mode/
- https://docs.oracle.com/cd/E37670_01/E64030/html/ol_upuek2_rn64.html
- https://access.redhat.com/solutions/1355683
- https://bugzilla.redhat.com/show_bug.cgi?id=1509302
- https://docs.fedoraproject.org/en-US/quick-docs/bootloading-with-grub2/
Комментариев нет:
Отправить комментарий