Rescue/Deploy/system-restore/Overlay

Материал из ALT Linux Wiki

Изменение файловой системы после развёртывания

Если бэкап снимался с виртуалки, а развёртывание выполняется на реальном «железе», где нужно «докинуть» конфиг, например, для видеокарты. Или если в «эталонной» системе чего-то забыли сделать, а переделывать по-новой нет времени. Или если есть пакеты, которые можно ставить только на реальном (конечном) «железе» и нет смысла этого делать в «эталонной» системе. Во всех перечисленных и подобных случаях, чтобы не прибегать к скриптованию, можно сложить рядом с тарболами в каталоге бэкапа такой же тарбол (архив) с «оверлеем» под именем update.tgz, который будет распаковываться уже поверх развёрнутой системы. Рядом с этим архивом можно сложить файл с соответствующими контрольной суммой и суффиксом, например:

$ cd ~/workdir/sys-part/rootfs
$ rm -f ../update.tgz
$ fakeroot tar -cpzf ../update.tgz .
$ cd ..
$ rm -rf rootfs
$ md5sum update.tgz >update.MD5
$ sha1sum update.tgz >update.SHA
$ sha256sum update.tgz >update.256

Обычно достаточно какой-то одной контрольной суммы. Такой архив будет работать, даже если развёртывание выполняется с удалённого сервера. Контрольную сумму для порядка желательно иметь, но это необязательно. Как вариант, можно сделать в каталоге бэкапа подкаталог с именем rootfs, внутри него может быть произвольная структура «оверлея», которая после развёртывания копируется «как есть» уже поверх развёрнутой системы.

Примечание: Нужно иметь ввиду, что вариант с подкаталогом rootfs будет работать только, если развёртывание выполняется с локально подключенного носителя или NFS-серевера, с удалённого сервера, например, HTTP, это работать не будет. Другой момент: для локально подключенного носителя или NFS-сервера каталогу rootfs отдаётся предпочтение, при наличии ещё и архива update.tgz, архив будет проигнорирован.

Размещать RPM-пакеты в таком архиве (или внутри rootfs) следует по пути /var/cache/apt/archives: в этом случае они будут распакованы в локальный кэш APT’а. Нужно иметь ввиду, что параметр install_packages по умолчанию настроен как раз на установку любых RPM-пакетов из локального кэша. А что, если нужно «докинуть» файлы в чрут перед его запуском? Например, другие исполняемые скрипты? Поскольку чрут готовится в подкаталоге /tmp/DEPLOY целевой системы, вы всегда можете сделать в своём архиве (или внутри rootfs) аналогичную структуру, разместив в этом каталоге любые файлы, например, файл для активации лицензии Антивируса Касперского.