Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7 с установленным актуальным оперативным обновлением
Общая информация
В составе Astra Linux Special Edition РУСБ.10015-01 1.7 с установленным актуальным оперативным обновлением (далее - старая ОС) доступен инструмент astra-full-upgrade
для автоматического обновления (далее — миграция) на следующее очередное обновление — 1.8 (далее — новая ОС).
Условия для выполнения миграции
- Миграция возможна только с очередного обновления Astra Linux Special Edition 1.7 с установленным актуальным оперативным обновлением и поддерживается только для аппаратной платформы x86-64.
- Если в старой ОС для файловой системы включен режим «только чтение» (
overlay
), то миграция невозможна. - Миграция поддерживается как на компьютерах с загрузкой BIOS, так и на компьютерах с загрузкой EFI.
- Рекомендации по конфигурации дисковых разделов для подготовки к миграции описаны в статье Рекомендации по установке Astra Linux Special Edition x.7 на клиентские компьютеры.
Для успешного выполнения миграции требуется наличие свободного непрерывного дискового пространства размером не менее 60 ГБ:- данное пространство не должно быть отформатировано с созданием какой-либо файловой системы;
- при загрузке в режиме BIOS свободное пространство должно быть выделено на основном диске;
- при загрузке в режиме BIOS в сочетании с таблицей дисковых разделов в формате GPT дополнительно на основном диске должен быть создан дисковый раздел без файловой системы с флагом bios_grub размером 1МБ;
- при загрузке в режиме EFI в случае отсутствия свободного места на основном диске может использоваться подключенный дополнительный диск;
- по умолчанию свободное дисковое пространство не должно входить в состав логического тома LVM (см. далее описание настройки параметров миграции);
- таблица дисковых разделов в формате GPT (поддерживается также формат MBR);
- дисковый раздел
/boot
объемом не менее 1 ГБ (рекомендуется 2GB); - при использовании загрузки BIOS в сочетании с таблицей дисковых разделов GPT — дисковый раздел объемом 1МБ с флагом bios_grub;
- группа томов LVM с файловой системой
ext4
, включающая:- дисковый раздел объемом не менее 60 ГБ с корневой файловой системой;
- дисковый раздел с каталогом
/home
(домашние каталоги пользователей); - прочие разделы, при необходимости, например
/tmp
,/var/tmp
и др.
необязательный дисковый раздел для области подкачки (
swap
) (если используется, см. Область подкачки (swap): особенности применения и обеспечения безопасности);- неразмеченное пространство, которое может располагаться как внутри группы томов LVM, так и за ее пределами.
- При выполнении миграции стандартными точками монтирования дисковых ресурсов считаются:
- / — точка монтирования корневой файловой системы;
- /boot — точка монтирования дискового раздела GRUB2;
- /home — точка монтирования дискового раздела с домашними каталогами пользователей.
- приложения, использующие нестандартные дисковые ресурсы, должны быть остановлены;
- нестандартные дисковые ресурсы должны быть отмонтированы.
Особенности выполнения миграции
При выполнении миграции с использованием неразмеченного пространства:
- Миграция позволяет сохранить:
- стандартные домашние каталоги пользователей старой ОС (каталог
/home
); - установленное прикладное ПО.
- стандартные домашние каталоги пользователей старой ОС (каталог
- Миграция должна выполняться от имени суперпользователя ОС (при включенном МКЦ — от имени суперпользователя с высоким уровнем целостности).
- Миграция может выполняться в графическом режиме или в режиме командной строки:
- Если свободное дисковое пространство, зарезервированное для выполнения миграции, не входит в состав LVM, или LVM вообще не используется, то при миграции в пространстве будет создана новая группа томов LVM.
- При миграции все имеющиеся дисковые разделы старой ОС, кроме разделов
/home
,/boot
иswap
, будут созданы заново в дисковом пространстве, выделенном для новой ОС. По умолчанию это неразмеченное дисковое пространство, однако в конфигурации может быть указан дисковый раздел для размещения новой ОС. - Если до миграции использовалось защитное преобразование дисковых разделов, то новые разделы будут заменены на не преобразованные.
- Дисковые разделы старой ОС после миграции останутся на диске в неизменном виде и могут быть впоследствии использованы для отката выполненной миграции или для размещения информации при миграции на следующее очередное обновление.
Выполнение действий на этапах миграции производится в следующей последовательности:
- Предопределенные в инструменте проверки и миграции.
- Действия, определяемые плагинами (см. Плагины).
- Действия, заданные в пользовательских сценариях (см. Пользовательские сценарии).
Настройка параметров миграции
Параметры миграции находятся в конфигурационном файле /usr/lib/python3/dist-packages/astra_upgrade/configs/upgrade.conf.yaml
. Описание параметров представлено в самом файле в виде комментариев.
Параметры, значения которых которые чаще всего требуют модификации:
- Расположение репозиториев, из которых будет производиться установка пакетов новой ОС:
target_repos: # Настройки источников пакетов sources: # Список репозиториев (как сетевых так и локальных), используемых для обновления - 'deb https://download.astralinux.ru/astra/stable/1.8_x86-64/main-repository/ 1.8_x86-64 main contrib non-free non-free-firmware' - 'deb https://download.astralinux.ru/astra/stable/1.8_x86-64/extended-repository/ 1.8_x86-64 main contrib non-free non-free-firmware' dirs: # Список директорий с пакетами, из которых будут созданы локальные репозитории, которые также будут использоваться для обновления. - '/opt/repo' sources_list: all # all | disable | third_party | astra
- sources: — репозитории, из которых будет выполняться установка новой ОС. По умолчанию используется интернет-репозитории актуального оперативного обновления Astra Linux Special Edition 1.8. При работе в изолированны сетях (без доступа к Интернет) здесь могут быть указаны собственные репозитории, сетевые или локальные.
- dirs: — дополнительно может быть указан локальный каталог с пакетами, который будет использоваться как дополнительный репозиторий.
- sources_list: — политика использования репозиториев, указанных в файле /etc/apt/sources.list и файлах в каталоге /etc/apt/sources.list.d Старой ОС. Возможные варианты:
- all — использовать все указанные репозитории;
- disable — не использовать;
- third_party — использовать только сторонние репозитории;
- astra — использовать только репозитории Astra Linux,
- Политика использования неразмеченного пространства для размещения новой ОС:По умолчанию используется неразмеченное пространство, не входящее в состав логических томов LVM. Может быть указан существующий раздел.
# use_existing: /dev/mapper/astra--VG-root # Использовать существующий раздел под корневую ФС целевой системы. При использовании этой опции настройки разметки игнорируются
Пример файла:
Порядок выполнения миграции
Общая подготовка к миграции
- Установить актуальное оперативное обновление старой ОС.
- Установить последнюю доступную версию ядра ОС:sudo apt install linux-image-latest
- Перезагрузить ОС с использованием последней версии ядра.
- Удалить все неиспользуемые версии ядра. См. статью Astra Linux: установка и обновление ядер серии 5 и выше.
- Установить пакет astra-full-upgrade:sudo apt install astra-full-upgrade
- По необходимости отредактировать конфигурационный файл
/usr/lib/python3/dist-packages/astra_upgrade/configs/upgrade.conf.yaml
:- указать корректные репозитории пакетов для установки новой ОС;
- указать дисковый раздел для выполнения миграции в политике использования дисковых , или удалить один из логических разделов, освободив неразмеченное место.
Выполнение миграции в графическом режиме
Для выполнения миграции в графическом режиме запустить инструмент astra-full upgrade от имени администратора без указания аргументов следующей командой:
Далее следовать инструкциям графического интерфейса.
Выполнение миграции в режиме инструментов командной строки
Миграция в режиме командной строки может быть запущена одной командой:
Эта команда автоматически выполнит необходимые проверки, и в случае успешного завершения проверок |запустит дальнейшие действия по миграции.
Для пошагового выполнения миграции с проверкой промежуточных результатов:
- Выполнить команду проверки готовности к миграции:sudo astra-full-upgrade check
- Проверить статус готовности к миграции:sudo astra-full-upgrade status
- Если статус готовности к миграции
error
, то проанализировать вывод команды проверки готовности к миграции и её журнал в файле/var/cache/astra-upgrade/upgrade.report.yaml
и устранить выявленные причины неготовности. В частности, отредактировать конфигурационный файл/usr/lib/python3/dist-packages/astra_upgrade/configs/upgrade.conf.yaml.
- Выполнять проверку готовности, проверку статуса и устранение выявленных проблем до появления статуса
ready-for-download
:sudo astra-full-upgrade status
Upgrade status: ready-for-download - Выполнить загрузку пакетов новой ОС. Приведенная ниже команда выполняет повторную прочерку готовности и запускает процесс загрузки пакетов новой ОС. Для предотвращение перегрузки сети при массовой миграции выполнение загрузки начинается со случайной задержкой по времени. Команда для загрузки пакетов:sudo astra-full-upgrade enableКоманда также может быть выполнена с указанием задержки. Например, задержка 0 секунд для немедленного начала загрузки:sudo ASTRA_UPGRADE_MAX_DELAY=0 astra-full-upgrade enable
- Проверить статус. В ожидании начала загрузки команда проверки статута будет сообщать статус wait-for-download. В процессе загрузки команда проверки статуса будет сообщать статус
downloading
:sudo astra-full-upgrade statusСтатус
Upgrade status: downloadingdownloading
обозначает, что загрузка выполняется и еще не завершена. - Повторяя проверку статуса дождаться завершения загрузки (статус
ready
):sudo astra-full-upgrade statusЕсли загрузка завершилась с иным статусом следует проверить журнал
Upgrade status: ready/var/cache/astra-upgrade/upgrade.report.yaml
, устранить причины ошибки и повторить проверку готовности к миграции и загрузку. - После появления статуса
ready
выполнить команду активации миграции:sudo astra-full-upgrade set activated - Убедиться, что команда активации выполнена успешно:sudo astra-full-upgrade status
Upgrade status: activated - Перезагрузить ОС. После перезагрузки будет выполнена миграция на новую ОС.
- Войти в пользовательскую сессию и убедиться, что миграция выполнена успешно и загружена новая ОС:cat /etc/astra/build_versionВ результате выполнения команды должен быть выведен номер установленной сборки Astra Linux. Для Astra Linux Special Edition 1.8 это должен быть номер вида 1.8.X.XX. Номер, начинающийся на 1.7 указывает, что миграция завершилась с ошибкой. Для диагностики ошибки следует использовать журнал
/var/log/astra-upgrade.log.
Общий синтаксис вызова инструмента миграции
Синтаксис вызова инструмента миграции:
Описание параметров инструмента:
- status — отобразить текущий статус обновления и выйти. Возможные статусы:
- not_ready. Report not found — данные о подготовке к миграции не найдены (подготовка не начиналась);
- error — при проверке возникли ошибки;
- ready-for-download — проверки пройдены, система готова к загрузке пакетов;
- wait-for-download — загрузка пакетов начнется по истечении случайно выбранной задержки от 0 до указанной в поле max_delay конфигурационного файла;
- downloading — производится загрузка пакетов;
- ready — готовность к обновлению (пакеты загружены);
- activated — обновление произойдет при перезагрузке (киоск активирован);
- forced — принудительное обновление при перезагрузке (без возможности отката);
- c,check — Проверить систему на соответствие требованиям для выполнения обновления с формированием отчета;
- e,enable — Проверить систему на соответствие требованиям и начать подготовку к обновлению;
- d,disable,full-revert — Остановить процесс обновления и отменить изменения;
- f,force — Принудительно запустить обновление при отсутствии ошибок в отчете;
- edit — Открыть конфигурационный файл для редактированияset;
- <статус> Принудительно установить один из следующих статусов:
- ready-for-download — вернуться на этап готовности к загрузке пакетов;
- activated— перейти на этап запуска обновления после перезагрузки;
- ready— вернуться с этапа activated на этап готовности к обновлению;
- -h,–help Вывести справку и выйти
Для дополнительного управления процессом обновления в старой ОС могут быть добавлены переменные окружения.
Пользовательские сценарии
Используемые сценарии должны размещаться в каталоге старой ОС /usr/share/astra-upgrade/scripts
. Порядок запуска сценариев определяется алфавитным порядком имен их файлов. Каждый сценарий должен иметь возможность запуска с параметром config для вывода основной информации о сценарии.
Пример сценария:
example-verification config
Результатом запуска сценария с указанным параметром должен быть вывод в стандартный вывод (stdout
) следующей основной информации о сценарии:
- Уникальный строковый идентификатор сценария.
- Список уникальных идентификаторов стадий обновления, на которых должен запускаться сценарий, перечисляемых через запятую:
- verification — стадия подготовки;
- installation — стадия установки;
- migration — стадия миграции;
- finalizing — стадия финализации;
- abort — стадия отката.
- Порядок выполнения на стадии:
- pre — перед выполнением стадии;
- post— после выполнения стадии.
- Краткое описание.
Формат вывода информации о сценарии:
id: <уникальный_ID_сценария>
stage: <уникальный_ID_стадии_обновления>,...substage: pre
description: Example verification
Если в выводе отсутствует любой из вышеперечисленных параметров или какой-то из них некорректен, сценарий не будет запущен.
При запуске без параметров сценарий должен выполнять свой основной код. В процессе выполнения сценария в stdout может выводиться следующая информация:
- произвольные сообщения, попадающие в отчет;
- путь к конфигурационному файлу сценария;
- предупреждения;
- сообщения об ошибках.
Выводимая сценарием информация будет записана в отчет /var/cache/astra-upgrade/upgrade.report.yaml
в файловой системе новой ОС, откуда эти данные могут быть получены другими сценариями в процессе обновления. Также сценарий может иметь код возврата. Если код возврата ненулевой, то считается, что выполнение сценария завершилось с ошибкой. Результаты выполнения сценария должны выводиться в следующем формате:
message: <произвольное сообщение> config: <путь к файлу>.yaml warning: <предупреждение> error: <ошибка>
Если вывод сценария пуст или не соответствует данному формату ни в одной выведенной строке, но код возврата при этом равен нулю, действие считается полностью успешно выполненным.
Плагины
Помимо пользовательских сценариев при миграции также могут использоваться плагины, написанные на языке Python. Плагины выполняются после заранее заданных проверок и миграции, но до выполнения пользовательских сценариев. Функциональность плагинов аналогична сценариям, но предоставляет больше возможностей для взаимодействия с инструментами обновления. Для того, чтобы плагин был загружен, файл с ним необходимо поместить в каталог /usr/share/astra-upgrade/plugins
старой ОС.
Откат выполненной миграции
Для отката выполненной миграции на очередное обновление используется инструмент командной строки astra-revert-upgrade
. Синтаксис команды:
astra-revert-upgrade [параметр]
Параметры инструмента:
- full — полный откат к старой ОС с уничтожением созданных разделов для новой ОС;
- soft — «мягкий» откат к старой ОС с сохранением новой ОС, что позволяет вернуться к новой ОС в будущем;
- back — возврат к новой ОС после «мягкого» отката.
При запуске инструмент производит следующие действия:
- Чтение данных о дисковых разделах из отчета об обновлении
/var/log/upgrade.report.yaml.
- проверка текущей версии ОС.
Если любое из этих действий завершается с ошибкой, то работа инструмента останавливается, и выводится информация об ошибке, в противном случае выполняется указанная операция.
Полный откат миграции
Полный откат миграции возможен только из новой ОС. При полном откате производится возврат к старой ОС с удалением разделов новой ОС. Для выполнения полного отката выполнить команду:
Полный откат выполняется в следующем порядке:
- Монтируется раздел со старой ОС.
- Конфигурационный файл загрузчика
/etc/default/grub
в новой ОС заменяется конфигурационным файлом загрузчика из старой ОС. - Загрузочный раздел старой ОС восстанавливается из резервной копии
/var/cache/bootback.tar.
- Резервная копия загрузочного раздела старой ОС удаляется.
- В новой ОС создаются юниты
systemd
для уничтожения разделов новой ОС и восстановления конфигурационных файлов графического окружения при загрузке ОС. - Выполняется перезагрузка в старую ОС.
- При загрузке старой ОС запускаются созданные юниты
systemd
, которые после завершения своей работы удаляются.
«Мягкий» откат миграции
«Мягкий» откат миграции возможен только из новой ОС. При «мягком» откате производится возврат на старую ОС. Дисковые разделы новой ОС при этом не удаляются, что дает возможность в дальнейшем возможно вернуться к новой ОС (см. Возврат к новой ОС после "мягкого" отката). Для «мягкого» отката выполнить команду:
Мягкий откат выполняется в следующем порядке:
- Монтируется раздел со старой ОС.
- Создается резервная копия загрузочного раздела
/boot
новой ОС и сохраняется в архив/var/cache/bootback.new.tar
в файловой системе старой ОС, также из новой ОС копируется в старую ОС отчет об обновлении/var/log/upgrade.report.yaml.
- Загрузочный раздел старой ОС восстанавливается из резервной копии
/var/cache/bootback.tar.
- В старой ОС создается системный юнит службы
systemd
для восстановления конфигурационных файлов пользовательского графического окружения при загрузке ОС. - Выполняется перезагрузка в старую ОС.
- При загрузке старой ОС запускается созданный юнит
systemd
, который после восстановления настроек графического окружения удаляется.
Возврат к новой ОС после «мягкого» отката
Возврат к новой ОС возможен только из старой ОС. Для возврата к новой ОС после «мягкого» отката выполнить команду:
Возврат к новой ОС выполняется в следующем порядке:
- Раздел с новой ОС монтируется в каталог/target. Если этого каталога нет, то он создается.
- Загрузочный раздел новой ОС восстанавливается из резервной копии
/var/cache/bootback.new.tar
- Создается юнит
systemd
для восстановления конфигурационных файлов пользовательского графического окружения при загрузке ОС - Выполняется перезагрузка в новую ОС.
- При загрузке новой ОС запускается созданный юнит
systemd
, который после восстановления настроек графического окружения удаляется